Random IRC quote :      <zggonzale> tengo el corazon contento

radare – patrocinado por el papa espacial

papa espacial

Saludos!

Ahi va mi primer post en este antro de degenerados!

Voy a spammearos^Wcontaros un poco sobre una de las cosas en las que estado liado ultimamente..

Hará cosa de dos años empecé a picar esta tool. En un principio para recuperar datos de un disco algo jodido.

Principalmente lo que buscaba era un editor hexadecimal por linea de comandos que me permitiera trabajar con offsets de 64 bits con una interficie scriptable (radare scripts, perl, python, vala, …) y procurando hacerlo lo más ortogonal posible…

Desde entonces muchas cosas han cambiado y el proyecto ha crecido considerablemente añadiendo una capa que radare project mapwrapea las operaciones de IO (open/read..) permitiendo usar sockets, apis externas, ptrace (peek,poke), conexión con un haret para leer la memoria de un windows ce, etc.. de esta forma trato por igual un proceso que un fichero o un radare remoto y escribir plugins es mucho más facil.

En el framework he metido utilidades sueltas para ensamblar/desensamblar en arm/x86/java desde linea de comandos, data carvers, hasher (para calcular md, sha, crc.. entropia, hamming, ..) de ficheros, memoria, calcular estaticamente xrefs en codigo de powerpc, arm y x86/32, etc..

La capa de debugger esta portada a Linux arm/x86-32 y *BSD/x86-32, pero espero en no mucho tiempo tener listos los ports para linux-x86-64 y w32-32.

Algunas de las pijadillas que le he ido anyadiendo son analisi de codigo para java/arm/x86-32, bindiff a nivel

Testing monitor feature of radare

binario, por funciones y a nivel de bloques de codigo exportados por IDA o radare. Permite inyectar codigo al proceso hijo, manejar la memoria, los threads y filedescriptors.

En cuanto a breakpoints es posible modificar los registros DRx a mano o usarlos como breakpoints por hard (tb por soft sin limite), los watchpoints permiten expresiones condicionales con valores de memoria y registros.

Los comentarios, labels, dwarf y demas mandangas pueden ser editadas inline desde el modo disassembler y la idea es hacerlos transparentes al fichero, de esta forma es posible mapear en el debugger los comentarios añadidos por IDA o radare. La idea en un futuro es gestionar el random_va_space para calcular la diferencia con la direccion base y hacer que los breakpoints, labels y comments vayan de forma transparente sobre el mismo binario.

Más cosillas… Editando el RDB (radare database) podemos definir un chroot, chdir, pid… cuando vayamos a depurar un proceso. Esto es bastante util para analisi de malware, pudiendo aislar o controlar el proceso hijo.

Otras cosillas curiosas que le he añadido es la posibilidad de dumpear y restaurar las páginas de memoria de graphing code with radareusuario y registros del proceso para poder hacer step-backs o snapshots.

La gestión de ejecución permite tracear código en páginas de usuario logueando a disco, tracear syscalls, hijos, skipear codigo de librerias, step-in, step-over, emular calls, rets y jmps.

Ahora mismo estoy liado con la parte de análisi de codigo para generación de grafos en tiempo real del flujo de ejecución de procesos o ficheros de disco con una api en Vala que toy picando, en cuando tenga algo más de tiempo juntaré esto con el modulo de bindiffing de bloques de codigo.

Estoy desarrollando dos frontends uno en C y otro en Vala usando Gtk, pero de momento sigue siendo necesario tener un teclado para usarlo. En proximas versiones quiero reducir estas limitaciones, facilitando la accesibilidad a ciegos, sordos y quien sabe más. Y finalmente añadir soporte nativo al mando de la wii y a la alfombrilla de la play para hacer del debugging algo más saludable xDD

Espero no haveros aburrido mucho en mi primer post O:) procuraré ser más breve 😉

Aqui sus dejo la url del proyecto y algun que otro screenshot por si le quereis echar un vistazo:

– Página del proyecto: radare.nopcode.org

Have phun!

–pancake

4 Comentarios para “radare – patrocinado por el papa espacial”

  1. Comment por txipi | 12/10/07 at 11:16 am

    Muy guapo el radare (ya lo conocía, spammer! :-D), enhorabuena por el proyecto pancake!

    PD: En castellano interface se dice interfaz (femenino) 😉

  2. Comment por sha0 | 12/10/07 at 1:06 pm

    Hacía falta algo así en software libre, gdb está ya deprecated 😉
    salu2

  3. Comment por atarasco | 12/23/07 at 7:06 pm

    txipi, se dice interfeissss XDD

    buen trabajo. 😉

  4. Comment por killabyte | 01/17/08 at 11:09 am

    Está de putisima madre. Sigue dándole fiera.

Se han cerrado los comentarios