web-dev-qa-db-ja.com

Delphiを逆コンパイルするプログラムはありますか?

誰かが私にプログラムの逆コンパイルをCに送っただけです。これは非常に優れた逆コンパイルであり、たいていは次のように見える、ニースのほとんど読み取り可能なCコードを生成します(変数または関数に人間が読める名前がなかったという事実を見落とした場合)。実際にコンパイルされます。

しかし、大きな問題が1つありました。彼が逆コンパイルしているプログラムがDelphiで書かれていて、Cに変換するのが難しい概念がたくさんあることをたまたま知りました。しかし、逆コンパイラの出力には本当に感動しました。 Delphiでそれを行うことができるものはありますか?

Delphiで見た中で最も優れた逆コンパイルツールは、DeDeです。多くのことを実行できますが、出力としてObject Pascalコードを生成することすらしません。また、Delphi 6以降は更新されていません。

22
Mason Wheeler

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

12

[〜#〜] idr [〜#〜] を使用できます。これは、delphiを逆コンパイルするのに最適なプログラムであり、現在のDelphiバージョンに更新され、多くの機能を備えています。

8
Hanan N.

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

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

6
PatrickvL

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

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

1
Anthony