Ikasten.IO
Learning, Aprendiendo

Configuración GDB para ingeniería inversa 20 mayo, 2008

La potencia de GDB como debugger, así como sus funcionalidades, son enormes. Sin embargo, el interfaz de usuario de GDB es bastante espartano, austero (sobre todo si lo comparamos con otros debuggers para Windows, como OllyDBG, por ejemplo). Si quieres desentrañar código en ensamblador por técnicas de ingeniería inversa con la ayuda del interfaz por defecto de GDB, vas a notar en tus propias carnes esa austeridad. ¿No se podría tener algo más amigable y usable que el interfaz de GDB pero con la misma potencia del debugger de GNU? Pues sí, existe la posibilidad de hacer algo de “tuning”. Se hace a través del fichero de configuración .gdbinit que guardaremos en nuestro directorio $HOME. Y en concreto, existe un ejemplo de configuración llamado Mamon’s GDBINIT especialmente orientado para los hackers (en sus dos acepciones) de la ingeniería inversa.

Podéis apreciar que ahora, cada vez que ejecutemos una instrucción en GDB, se nos mostrará el estado de los registros, de la pila, de la sección de datos y el contexto de código en ensamblador en el que nos movemos. Impresionante y, una vez que lo conoces, indispensable. Rizando el rizo, el blog “in the name of zero”, publicó hace tiempo ya una versión del Mamon’s gdbinit , añadiéndole coloreado. Ahora sí podremos depurar código como $DEITY manda…

  • jong dice:

    Esto me ahorrara muchos dolores de cabeza al no tener que andar haciendo x/32x por todo el espacio virtual 🙂

    Thumbs up!

  • txipi dice:

    Muuuy chulo 🙂

    También está bien para depurar en GNU/Linux el EDB, aunque últimamente está muy parado. Super potente es el radare de pancake, pero me parece complicadillo de usar.

    Por cierto, en breve haré un “Call for levels” para el Hackit de este año, a ver si os animáis a enviar propuestas ;-)))

  • admin dice:

    Sí, he usado Evan’s Debugger. Es impresionante, pero tiene alguna pega para retos de ingeniería inversa que no consigo solucionar. Por ejemplo, cuando el ELF no tiene tabla de símbolos EDB lo abre donde desde la línea que le parece, y no siempre acierta. En GDB puedes poner un punto de ruptura antes del “run” y va fino. Por otra parte, en EDB, cuando buscas referencias y te desplazas por el código hay problemas de refresco (un scroll hacia arriba no siempre hace lo que se supone 😉

    Respecto al radare, no lo he probado, iré a buscarlo este fin de semana !

    Y respecto al “Call for levels”… por supuesto, ccuenta con una aportación de DiarioLinux 🙂 Personalmente ya tengo pensada una prueba, que te enviaré en cuanto se abra el CFP a ver si cumple los requisitos. ¡Ánimo con la organización!

  • El LoCo De La CoLiNa dice:

    Sé que el masoquismo extremo es una cosa que nos caracteriza a los que nos deleitamos con el ‘reverse engineering’, pero bueno, me extrañaría que nadie haya oído hablar del ddd y el xxgdb.

  • novato dice:

    Hola a todos, soy bastante novato en esto de la ingenieria inversa y me ha parecido muy interesante este post, pero el caso es que el link de Mamon’s GDBINIT me lleva a una pagina que no existe y el de los colorines me da la sensación de que no es todo el archivo completo ya que lo he copiado y no me funciona, podrias poner el archivo que utilizastes porfavor, muchas gracias de antemano

  • novato dice:

    Vale solucionado 🙁 no habia leido las primeras lineas del link de el gdbinit coloreado donde te ponen la ruta al archivo original sin colorear, aqui esta http://www.eccentrix.com/members/mammon/gdb_init.txt
    un saludo y por cierto muy buena pagina 😉

  • rakion dice:

    muy buena la configuracion evita molestias cuando se esta haciendo haciendo x/32x

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *