Domanda

Qualcuno mi ha appena inviato un decompilatore di un programma in C. È stato un ottimo decompilatore, che ha prodotto un codice C piacevole, per lo più leggibile (se si trascura il fatto che nessuna delle variabili o funzioni aveva un nome leggibile dall'uomo) che per lo più sembrava che si sarebbe effettivamente compilato.

Tuttavia, c'era un grosso problema. Mi capita di sapere che il programma che stava decompilando era stato scritto in Delphi, che è pieno di concetti che sono difficili da tradurre in C. Ma sono stato davvero colpito dall'output del decompilatore, e mi ha fatto meravigliare. C'è qualcosa che può farlo per Delphi?

Il miglior strumento di decompilazione che ho visto per Delphi è DeDe. Può fare molte cose, ma non prova nemmeno a produrre il codice Object Pascal come output, e non è stato aggiornato da Delphi 6. C'è qualcosa di meglio là fuori?

È stato utile?

Soluzione

Non credo che ci siano decompilatori di codice macchina che producono codice Pascal. La maggior parte dei "decompilatori Delphi" forma di analisi e dati RTTI, ma in realtà non decompilare il codice macchina. Posso solo consigliare di utilizzare qualcosa come DeDe (o software simile ) per estrarre informazioni sui simboli in combinazione con un decompilatore C, quindi tradurre il codice C decompilato in Delphi (ci sono molti convertitori di codice sorgente là fuori).

Altri suggerimenti

Puoi usare IDR è un ottimo programma per decompilare delphi, è aggiornato alla corrente versioni di delphi e ha molte caratteristiche.

Ecco un elenco: http://delphi.about.com/od/ devutilities / a / decompiling_3.htm (e questa pagina ne menziona ancora: http: // www.program-transformation.org/Transform/DelphiDecompilers )

Ho usato DeDe a volte, ma non è poi così potente, e non è aggiornato con le attuali versioni di Delphi (credo che l'ultima versione che supporta sia Delphi 7)

Linguaggi come Delphi, C e C ++ Compilare in codice macchina nativo del processore e gli eseguibili di output hanno pochi o nessun metadata in essi. Ciò è in contrasto con Java o .Net, che si compila in bytecode indipendente dalla piattaforma orientato agli oggetti, che conserva i nomi di metodi, parametri di metodo, classi e spazi dei nomi e altri metadati.

Quindi c'è una decompilazione molto meno utile che può essere fatta su Delphi o codice C. Tuttavia, Delphi in genere ha incorporato i dati dei moduli per qualsiasi modulo nel progetto (generato dalla riga $ R * .dfm) e ha anche metadati su tutte le proprietà pubblicate, quindi uno strumento specifico di Delphi sarebbe in grado di estrarre queste informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top