28

誰かが私にプログラムの C への逆コンパイルを送ってくれました。これは非常に優れた逆コンパイルであり、たいてい次のように見える (変数や関数のいずれにも人間が読める名前がないという事実を見逃すと) 読みやすい C コードが生成されました。実際にコンパイルされます。

ただ、ひとつ大きな問題がありました。彼が逆コンパイルしていたプログラムは Delphi で書かれていて、C に翻訳するのが難しい概念がたくさんあることをたまたま知っていました。Delphiでそれを行うことができるものはありますか?

私が見た Delphi 用の最適な逆コンパイル ツールは DeDe です。多くのことができますが、出力として Object Pascal コードを生成しようとさえせず、Delphi 6 以降更新されていません。

4

4 に答える 4

12

Pascal コードを生成する機械語逆コンパイラはないと思います。ほとんどの「Delphi デコンパイラ」は、フォーム データと RTTI データを解析しますが、実際にはマシン コードを逆コンパイルしません。DeDe (または同様のソフトウェア) のようなものを使用して、C 逆コンパイラと組み合わせてシンボル情報を抽出し、逆コンパイルされた C コードを Delphi に変換することをお勧めします (そこには多くのソース コード コンバータがあります)。

于 2008-12-02T19:24:08.173 に答える
12

IDRを使用できます。これは、Delphi を逆コンパイルするための優れたプログラムであり、現在の Delphi バージョンに更新され、多くの機能を備えています。

于 2012-11-08T09:57:07.933 に答える
6

ここにリストがあります: http://delphi.about.com/od/devutilities/a/decompiling_3.htm (そして、このページにはさらにいくつか言及されています: http://www.program-transformation.org/Transform/DelphiDecompilers )

私は時々DeDeを使用しましたが、それほど強力ではなく、現在のDelphiバージョンでは最新ではありません(サポートされている最新バージョンはDelphi 7だと思います)

于 2008-12-03T07:16:32.557 に答える
3

Delphi、C、C++ などの言語は、プロセッサ ネイティブのマシン コードにコンパイルされます。出力される実行可能ファイルには、メタデータがほとんどまたはまったく含まれていません。これは、Java や .Net とは対照的です。Java や .Net はオブジェクト指向のプラットフォームに依存しないバイトコードにコンパイルされ、メソッドの名前、メソッド パラメーター、クラスと名前空間、およびその他のメタデータを保持します。

そのため、Delphi または C コードで実行できる逆コンパイルはあまり役に立ちません。ただし、Delphi には通常、プロジェクト内の任意のフォームのフォーム データが埋め込まれ($R *.dfm 行によって生成されます)、公開されたすべてのプロパティに関するメタデータも含まれているため、Delphi 固有のツールでこの情報を抽出できます。

于 2008-12-03T07:55:45.397 に答える