セクション 2 Delphi リバース エンジニアリング
現在、ボーランドは、実行可能ファイル (.exe) または「Delphi コンパイル済みファイル」 (.dcu) を生のプログラム コード (.pas) に逆コンパイルするための製品を提供していません。
Delphi コンパイル済みユニット: DCU ( Delphi コンパイル済みユニット: DCU )
Delphi プロジェクトがコンパイルまたは実行されると、コンパイル ユニット (.dcu) ファイルが生成されます。デフォルトでは、各ユニットのコンパイルされたバージョンは別のバイナリ ファイルに保存されます。ファイルのファイル名はユニット ファイルと同じで、拡張子は .DCU です。たとえば、unit1.dcu ファイルには、unit1.pas ファイルで宣言されたコードとデータが含まれています。
つまり、コンパイルされたコンポーネントなどのリソースがある場合、それを逆コンパイルしてソース コードを取得するだけで済みます。違います。DCU ファイル形式は文書化されておらず (所有者形式)、バージョンごとに変更される可能性があります。
コンパイラ後: Delphi リバース エンジニアリング
Delphi 実行可能ファイルを逆コンパイルしようとしている場合は、知っておくべきことがいくつかあります。
Delphi ソース プログラム ファイルは通常、ASCII コード ファイル (.pas、.dPR) とリソース ファイル (.res、.rc、.dfm、.dcr) の 2 つのファイル タイプで保存されます。 DFM ファイルには、フォームに含まれるオブジェクトの詳細 (プロパティ) が含まれています。実行可能ファイルを作成するとき、Delphi は .dfm ファイル内の情報を完成した .exe コード ファイルにコピーします。フォーム ファイルには、すべての安定したプロパティ値を含め、フォーム内の各コンポーネントが記述されます。フォームの位置やボタンのタイトルを変更したり、イベント プロシージャをコンポーネントに割り当てたりすると、Delphi はこれらの変更を DFM ファイルに記録します(イベント プロシージャのコードではなく、pas/dcu ファイルに保存されます)。 。実行可能ファイルから「dfm」を取得するには、Win32 実行可能ファイルにどのような種類のリソースが格納されているかを理解する必要があります。
Delphi によってコンパイルされたすべてのプログラムには、CODE、DATA、BSS、.idata、tls、.rdata、.rsrc の部分があります。逆コンパイルの観点から見ると、最も重要な部分は CODE、.rsrc です。記事「Delphi プログラムへの機能の追加」 (「Delphi プログラムへの機能の追加」) (翻訳者による追加: 次々) では、Delphi の実行可能形式、クラス情報、および DFM リソースに関するいくつかの興味深いことが説明されています。同じフォームで定義されている他のイベント ハンドラーに独自のイベント ハンドラーを追加して、ボタンのタイトルを変更するコードを実行可能ファイルに追加する方法。
.exe ファイルに格納されているさまざまな種類のリソースのうち、RT_RCDATA またはアプリケーション定義のリソース (生データ) には、コンパイル前の DFM ファイルに含まれている情報が含まれています。 .exe ファイルから DFM データを選択するには、EnumResourceNames API 関数を呼び出すことができます。.exe ファイルから DFM データを選択する方法の詳細については、「Delphi DFM エクスプローラーのコーディング」(「DFM エクスプローラーの作成」) を参照してください。 Delphi DFM 検出器」)。 (翻訳者追加:順次翻訳していきます)