Estoy jugando con las vulnerabilidades de desbordamiento del búfer y del montón, y está bien explotar cosas cuando tienes el código fuente y puedes ver todas las variables, sus tamaños y valores, etc. Pero, ¿qué pasa si solo tengo el programa compilado, y necesito encontrar el tamaño de una matriz. Por ejemplo, si tomamos el siguiente programa de muestra, que ha declarado algunas variables y una matriz, y en una etapa posterior de la ejecución, la matriz pasa a otra función.
int main(int argc, char **argv)
{
char test;
char arr[100];
double someVar;
// Somewhere in the main call another function with array
myFunc(arr);
...
}
Si no tuviera el código fuente, e, pero sabía que la matriz se pasa a algún lugar (gueesable), ¿cómo continuaría para determinar el tamaño de la matriz? Quiero decir, siempre puedo intentar escribir algo como un script en el que siempre transmito argumentos cada vez más grandes al programa desde la línea de comandos y ver dónde falla, pero este no es un enfoque muy práctico (en mi opinión). Supongo que la ingeniería inversa puede dar alguna información, pero ¿cómo exactamente? ¿Puede gdb también proporcionar algo útil? Quiero decir, ¿cuáles serían los métodos para determinar el tamaño de la matriz si no se conoce el código fuente?