Avast libera su decompilador RetDec

por | 14 diciembre, 2017

En 2013 asistí a una conferencia de Richard Stallman en A Coruña. Después de años viendo sus vídeos, era casi inevitable que la mayor parte de su discurso me fuera conocido, así como los divertidos rituales que le rodean, incluyendo San Ignucio y el sorteo del ñu (recuerdo haber abierto la puja, pero al final me superaron).

Sin embargo algunas cosas me sorprendieron, entre ellas el énfasis de Stallman en la necesidad de desarrolladores con determinación para realizar ingeniería inversa. Supongo que con la intención de sustituir aquellos elementos que no son libres, pero a veces necesarios para que funcione un sistema: controladores, firmware, diseños de hardware…

Rememoraba todo eso esta mañana, mientras leía que la compañía de seguridad Avast ha liberado –bajo licencia libre MIT– el código de su decompilador RetDec, permitiendo su acceso a la comunidad y la colaboración en un proyecto, que se lleva desarrollando desde 2011.

Los decompiladores son programas que reconstruyen el código fuente de un archivo ejecutable, traduciéndolo a un lenguaje de alto nivel. Sería lo contrario de realizar una compilación.

Se pueden utilizar por tanto para analizar vulnerabilidades, errores, y estudiar el código de cualquier software, malicioso o no. También para la verificación de archivos y comparación de binarios.

Sin embargo la mayoría de decompiladores no son capaces de reconstruir de forma perfecta el código fuente original, debido a que una buena parte de la información es perdida durante el proceso de compilación, además de las técnicas de ofuscación que se puedan añadir.

Según comentan en Avast, ellos han solucionado ese problema mediante heurística y algoritmos que permiten decodificar y reconstruir aplicaciones, en distintos formatos y arquitecturas.

RetDec utiliza la infraestructura LLVM en su desarrollo y soporta varios formatos de archivo: ELF, PE, Mach-O, COFF, AR (archive), Intel HEX, y código máquina. Y diferentes arquitecturas de 32 bits: Intel x86, ARM, MIPS, PIC32, y PowerPC. Señalar que ya se está trabajando en implementar soporte para 64 bits.

Además el decompilador RetDec incluye:

  • Análisis estático de archivos ejecutables con información detallada.
  • Compilador y detector de paquetes.
  • Carga y decodificacion de instrucciones.
  • Eliminación basada en firma del código de biblioteca vinculado estáticamente.
  • Extracción y utilización de la información de depuración (DWARF, PDB).
  • Detección y reconstrucción de jerarquías de clase C ++ (RTTI, vtables).
  • Desplazamiento de símbolos de los binarios de C ++ (GCC, MSVC, Borland).
  • Reconstrucción de funciones, tipos y construcciones de alto nivel.
  • Desensamblador integrado.
  • Salida en dos lenguajes de programación de alto nivel: C y Python-like
  • Generación de gráficos de llamadas, gráficos de control de flujo y varias estadísticas.

RetDec se puede probar de forma online, además nos ofrece una versión experimental de su IDA (Interactive Disassembler) plugin, y un módulo en Python para probar su API. También existe la opción de compilarlo para Linux, siguiendo las instrucciones que nos dan en su página de GitHub.

Un pensamiento en “Avast libera su decompilador RetDec

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.