Tras seguir las pistas dadas en los anteriores posts sobre el HackIt Nivel 9 (léanse también los comentarios), llegamos al fatídico nivel 10. Aquí nos quedamos cuando sonó el ¡gong! del GAME OVER 😉 A primera vista la cosa no pinta muy bien, dado que tras descargar el zip y descomprimirlo, vemos que efectivamente se trata del juego Breakout, por lo que dice el «enunciado» de la pista y por las librerías gráficas que carga:
[juanan@localhost game]$ ldd go
linux-gate.so.1 => (0x00110000)
libXpm.so.4 => /usr/lib/libXpm.so.4 (0x02216000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00a6e000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x061ea000)
libm.so.6 => /lib/libm.so.6 (0x004bb000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x002aa000)
libc.so.6 => /lib/libc.so.6 (0x00360000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0x00bcc000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00bae000)
libdl.so.2 => /lib/libdl.so.2 (0x004e6000)
/lib/ld-linux.so.2 (0x00341000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00639000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x0063e000)
pero, si analizamos el tipo de fichero:
[juanan@localhost game]$ file go
go: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), corrupted section header size
vemos que es un fichero ejecutable ELF para Linux, y ¡ojo al parche!, las cabeceras están manipuladas (corrupted section header size) :-O Me temo que a GDB no le gustará nada de nada…
[juanan@localhost game]$ gdb go
GNU gdb Red Hat Linux (6.6-45.fc8rh)
(no debugging symbols found)
Pues vaya… no hay tabla de símbolos, así que ¿cómo indicar los puntos de ruptura? ¿cómo depurar el programa? Os dejo con el reto, y os animo a proponer vías de solución en los comentarios. Yo voy a por un café y cumplimentar papeleos de la universidad…