Ingeniería Inversa/Descompiladores

<<Ingenieria Inversa

De manera semejante al desensamblado, la descompilación lleva el proceso un paso mas allá e intenta reproducir el código a un lenguaje de alto nivel. Frecuentemente, este lenguaje es C, porque C es simple y lo suficientemente primitivo para facilitar el proceso de descompilación. La descompilación tiene sus problemas, porque muchos datos y construcciones para legibilidad se pierden durante el proceso original de descompilación, y no pueden ser reproducidos. Puesto que esta disciplina es todavia joven, y los resultados son razonablemente buenos pero no excelentes, esta página se limitará a dar una lista de descompiladores, y una breve discusión general de las posibilidades de la descompilación.

Descompilación: ¿Es Posible?

editar


A la vista de los compiladores modernos que optimizan agresivamente, no es raro preguntar: ¿realmente es posible?. En un grado u otro, generalmente lo es. No te confundas: no hay descompiladores perfectamente operacionales (todavia). Como máximo, los descompiladores actuales pueden ser usados como una ayuda al proceso de ingeniería inversa, con mucho trabajo manual.

Descompiladores Comunes

editar
DCC Decompiler
Dcc es una excelente perspectiva teórica a la descompilación, pero el descompilador sólo soporta programas MSDOS.
http://www.itee.uq.edu.au/~cristina/dcc.html
Boomerang Decompiler Project
El descompilador Boomerang es un intento de construir un potente descompilador para varias máquinas y lenguajes. Hasta ahora, sólo descompila en C con un éxito moderado.
http://boomerang.sourceforge.net/
Reverse Engineering Compiler (REC)
REC es un potente "descompilador" que descompila código ensamblador a una representación del código semejante a C. El código está a medio camino entre ensamblador y C, pero es mucho mas legible que el ensamblador puro.
http://www.backerstreet.com/rec/rec.htm
ExeToC
ExeToC es un descompilador interactivo que presume de buenos resultados.
http://sourceforge.net/projects/exetoc
code-dump
"code-dump is a PowerPC (PPC) Objective-C decompiler that relies on their inherently structured format."
http://sourceforge.net/projects/code-dump

Notas del Capítulo

editar

Los siguientes puntos requieren consideración:

  • La disciplina de la descompilación de código binario nativo está en su infancia.
  • Todos los descompiladores actuales requieren una cierta cantidad de input por parte del usuario.
  • Los descompiladores actuales raramente trabajan bien con ejecutables en el rango de tamaño desde "normal" hasta "grande".
  • Los pasos de uso de un descompilador dependen fuertemente del descompilador utilizado.

El resto de este wikilibro probablemente no considerará el asunto de la descompilación despues de este capítulo. Contribuciones sobre el tema son apreciadas.

Lectura sobre descompilación

editar
  • DCC Decompiler: [1]
  • Boomerang Decompiler Project: [2]