Pregunta

Alguien me acaba de enviar una descompilación de un programa en C. Fue una muy buena descompilación, produciendo un código C agradable, en su mayoría legible (si pasa por alto el hecho de que ninguna de las variables o funciones tenía un nombre legible por humanos) que principalmente parecía que realmente se compilaría.

Hubo un gran problema, sin embargo. Sé que el programa que estaba descompilando estaba escrito en Delphi, que está lleno de conceptos que son difíciles de traducir a C. Pero realmente me impresionó la salida del descompilador, y me hizo pensar. ¿Hay algo que pueda hacer eso por Delphi?

La mejor herramienta de descompilación que he visto para Delphi es DeDe. Puede hacer muchas cosas, pero ni siquiera intenta producir código Object Pascal como salida, y no se ha actualizado desde Delphi 6. ¿Hay algo mejor por ahí?

¿Fue útil?

Solución

No creo que haya descompiladores de código de máquina que produzcan código Pascal. La mayoría de los descompiladores Delphi analizar datos de formulario y RTTI, pero en realidad no descompila el código de la máquina. Solo puedo recomendar utilizar algo como DeDe (o software similar ) para extraer información de símbolo en combinación con un descompilador C, luego traduzca el código C descompilado a Delphi (hay muchos convertidores de código fuente por ahí).

Otros consejos

Puede usar IDR es un gran programa para descompilar Delphi, se actualiza a la actual versiones de Delphi y tiene muchas características.

Aquí hay una lista: http://delphi.about.com/od/ devutilities / a / decompiling_3.htm (y esta página menciona algo más: http: // www.program-transformation.org/Transform/DelphiDecompilers )

He usado DeDe en ocasiones, pero en realidad no es tan potente, y no está actualizado con las versiones actuales de Delphi (la última versión que admite es Delphi 7, creo)

Lenguajes como Delphi, C y C ++ Compilan en código máquina nativo del procesador, y los ejecutables de salida tienen pocos o ningún metadato. Esto está en contraste con Java o .Net, que compila en código de bytes independiente de la plataforma orientado a objetos, que retiene los nombres de métodos, parámetros de métodos, clases y espacios de nombres, y otros metadatos.

Entonces, hay mucho menos útil descompilación que se puede hacer en código Delphi o C. Sin embargo, Delphi generalmente tiene datos de formulario incrustados para cualquier formulario en el proyecto (generado por la línea $ R * .dfm), y también tiene metadatos en todas las propiedades publicadas, por lo que una herramienta específica de Delphi podría extraer esta información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top