Hemos compilado un programa usando la libreria RayLib.
El programa despliega un textbox como el siguiente.

Nuestra labor es: usando gdb identificar la dirección en memoria donde se está guardando el texto que introduzcamos al textbox.
Para ello abrimos gdb y primero debemos lograr detener el programa luego de hagamos input al textbox.
gdb-peda$ b main
gdb-peda$ r
.. corre el programa pero aun no veremos la ventana dibujada, dado que lo hemos detenido justo al comienzo de main. Debemos identificar algun punto en el programa tal que no haga se detenga en cada vuelta del "game loop".
0x00000000004013c5 <+613>: call 0x4010f0 <IsKeyPressed@plt>
0x00000000004013ca <+618>: test al,al
0x00000000004013cc <+620>: je 0x4013e1 <main+641>
0x00000000004013ce <+622>: mov eax,0x0
0x00000000004013d3 <+627>: sub ebx,0x1
0x00000000004013d6 <+630>: cmovs ebx,eax
La función IsKeyPressed aparenta tener algo que ver con la entrada de texto a través del keyboard. Pondremos breakpoints en ambas rutas despues de esa función: 0x4013e1 y 0x4013ce.
gdb-peda$ b 0x4013e1
gdb-peda$ b 0x4013ce
Al continuar el programa nos damos cuenta que el breakpoint 0x4013e1 se detiene en cada vuelta. Así que lo borramos usando del _num de break_
Ahora al dar continue el programa no se detiene. Si insertamos texto en el textbox y luego damos backspace el programa se detiene en 0x4013ce. Ahora podemos buscar el string usando:
gdb-peda$ find perro stack
Searching for 'perro' in: stack ranges
Found 1 results, display max 1 items:
[stack] : 0x7ffcf455acee --> 0x6f72726570 ('perro')
donde perro fue el string que entramos en el textbox.
Una vez hemos identificado la dirección donde vive, podríamos crear una hardware breakpoint para que cada vez que se escriba a esa dirección se detenga el programa:
gdb-peda$
gdb-peda$ watch *0x7ffcf455acee
Si damos continue entonces