Depurando binarios Linux desde el navegador

schemdbg.png

Ya os hablamos de Voltron, un servicio que usando la flexibilidad de GDB nos permitía crear a través de varios terminales una interfaz un poco más amena que la nos ofrece el propio GDB.

Usando la misma idea y necesidad (depuración de binarios bajo Linux), SchemDBG es una interfaz gráfica escrita en CoffeeScript y enfocada con un único navegador en mente: Chromium, la versión open source de Google Chrome. Aunque dicho interfaz podría funcionar en otros navegadores, los creadores de la misma, en principio, no piensan dar soporte al resto y el desarrollo seguirá enfocado a Chromium.

La parte de la lógica (controller) está escrito en Ruby y por lo tanto una de las dependencias es tener instalado Ruby en el sistema en su versión 1.9.3 o mayor. También depende de GDB, aunque parece ser que no es muy complicado cambiar de depurador, ya que las capas de presentación y lógica están bastante desacopladas. Además de esto, SchemDBG también se apoya en Metasm para el desensamblado del código.

SchemDBG está orientado al análisis (dinámico) de binarios de los que no disponemos el código fuente, lo que conocemos como ingeniería inversa.

El hecho de que SchemDBG esté escrito en Ruby, hace muy fácil el automatizar algunas tareas con el uso de scripts.

SchemDBG provee las funcionalidades más comunes de un depurador:

  • Vista de memoria, en la que podemos cambiar el formato de la representación de los datos.
  • Vista de registros. Además de la presentación común de los mismos, aquellos que están subdivididos (rax, rbx, etc), podemos ver sus valores en forma de árbol.
  • Vista de pila
  • Vista de código. Dónde podemos ir paso a paso, entrar y salir de funciones, establecer puntos de control (breakpoints), etc.
  • Vista de expresiones. Aquí podemos crear expresiones que se van evaluando a la vez que vamos ejecutando el binario.
Para instalar SchemDBG:
  • Tener git instalado: sudo apt-get install git
  • Clonar el repositorio: git clone https://github.com/hexgolems/schem.git
  • Tener Ruby 1.9.3, ya sea desde los repositorios de tu distribución o rvm
  • Instalar el controlador: cd schem/controller; ruby make.rb setup
  • Compilar el código CoffeeScript: cd schem/frontend; ruby make.rb run
Para usarlo:
  1. cd schem/controller/lib; ruby controller.rb -p ../run -b gdb
  2. En Chromium ve a: 127.0.0.1:8000
Para obtener más detalles visita el sitio de SchemDBG