Ingeniería Inversa/Descompiladores
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?
editarPara más información, véase el artículo «descompilador» en Wikipedia. |
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
editarLos 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.