Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: BloodSharp en 11 Junio 2021, 01:25 am



Título: [GDB] ¿Cómo consultar "Examinar memoria" con tamaño dinámico?
Publicado por: BloodSharp en 11 Junio 2021, 01:25 am
Buenas gente del foro, desde hace poco estoy aprendiendo a utilizar GDB y quisiera saber como se podría usar el comando examinar memoria sabiendo que fue previamente almacenado en una variable el tamaño del buffer...

Programa de ejemplo de para practicar:
Código
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <cstdint>
  5.  
  6. int main(int argc, char**argv)
  7. {
  8.    char *pBuffer=0;
  9.    int index=0,iUnknownSize=0;
  10.  
  11.    srand(time(NULL));
  12.  
  13.    do
  14.    {
  15.        iUnknownSize=rand()%20+1;
  16.    }
  17.    while(iUnknownSize<=0);
  18.  
  19.    pBuffer=(char*)malloc(iUnknownSize);
  20.    if(pBuffer)
  21.    {
  22.        for(;index<iUnknownSize;index++)
  23.            pBuffer[index]=(char)(rand()%254+1)&0xFF;
  24.        printf("Comienza el procesado...\n");
  25.        for(index=0;index<iUnknownSize;index++)
  26.            printf("%X\n",(char)(pBuffer[index]&(uint64_t)0xFF));
  27.        printf("Finaliza el procesado...\n");
  28.        free(pBuffer);
  29.    }
  30.    printf("\n");
  31.    return 0;
  32. }
  33.  

Al poner un breakpoint al primer printf que es lo que me interesaría puedo consultar la variable iUnknownSize y luego utilizarla con el comando x (examinar memoria)

(https://i.imgur.com/bVhNg2Z.png)

Pero la idea sería final sería poner al breakpoint un comando automático que dumpee como lo siguiente:

Código:
x/(obtener valor de iUnknownSize)xb pBuffer

¿Mi pregunta sería hay alguna manera de especificarle depurador dicho valor al examinar?


B#