VCLアプリケーションの解析とリバースエンジニアリング

DE Decompiler — 専門家のための逆コンパイルとコード解析

ネイティブソフトウェア、マルウェア、望ましくない機能や隠された機能を調査するフォレンジック調査担当者、ウイルス解析担当者、企業のセキュリティ部門、開発者向けの専門家用逆コンパイラです。

Delphi 3~13で記述された、またはC++Builderで作成されたWin32/Win64向けVCLアプリケーションを、Delphi風のPascalに逆コンパイルします。機械語命令と利用可能なメタデータから制御フロー、呼び出し、フォーム、ユニット、クラスを復元し、VCLのイベントから実装へ移動できます。

逆コンパイルされたDelphiに似たコードと復元されたプロジェクト構造。
逆コンパイルされたDelphi風のPascalコードと復元されたプロジェクト構造。

アプリケーションの構造

関連するユニット、クラス、関数を見つけます。

アプリケーションの構造から実装へと移行します。復元された宣言とコンパイラ固有の RTTI の知識を使用して、個々のプロシージャを検査する前に調査の方向性を定めます。

  • ユニットと宣言

    認識された Delphi ユニットとその再構築された宣言を参照します。レビュー対象のアプリケーション部分に関連するクラス、フィールド、メソッドを見つけてから、周囲の構造を維持したままそのコードを開きます。

  • クラスと公開関数

    プロジェクト ツリー内で認識されたクラス、メソッド、および公開関数を探索します。復元されたシグネチャとその本体を読み合わせて、オブジェクトとプロシージャがどのように相互作用するかを理解します。

  • プライベート関数の検出

    ヒューリスティック解析により、各ユニット内のプライベート関数も探索します。公開エントリポイント以外の実装を調べる手掛かりになります。関数境界や所属ユニットが不確かな場合は、参照と機械語命令で確認してください。

  • Delphi バージョン間の RTTI

    Delphi ランタイム型情報 (RTTI) に関するバージョン固有の知識は、Delphi 3–13 全体での認識をサポートします。ファイルに保持された名前と型がコードリストを充実させ、ソースレベルの情報がない箇所では生成された識別子と推定されたレイアウトが補完します。

復元された Delphi ユニットおよびクラスの宣言。
復元された Delphi ユニットおよびクラスの宣言。

VCL フォームとイベント

インターフェースからその実装へと追跡します。

読み取り専用デザイナーでアプリケーションの VCL インターフェースを検査します。表示されたコントロール、復元されたプロパティ、およびイベントを背後にあるコードと結び付けます。

コンポーネントのプロパティとイベントを含む復元された VCL フォーム。
コンポーネントのプロパティとイベントを含む復元された VCL フォーム。
  • ビジュアルフォームの検査

    解析対象アプリケーションを実行せずに、再構築されたフォームとそのコントロールを表示します。視覚的な配置を活用して関連するインターフェース要素を特定し、機能や不審な動作の文脈を理解します。

  • コンポーネントとプロパティ

    復元したコンポーネントのプロパティと利用可能なDFM情報を併せて検査します。コントロールの設定がインターフェース上でどのような役割を果たしているかを関連付け、カスタムコンポーネントや推定された型について詳細な検討が必要な場合は、基盤となるフォームデータを調べます。

  • コードにリンクされたイベント

    フォームのビジュアライゼーションから復元したエントリを、対応するイベントハンドラへ移動します。ボタン、メニューコマンド、その他のイベントの実装を、プロシージャリスト全体を手動で検索することなく追跡できます。

  • Delphiプロジェクトのエクスポート

    復元したユニットとフォームをDelphiプロジェクトとして保存するか、レビュー用の結合された.pasコードリストをエクスポートします。ユニットは.pas形式、フォーム定義は.dfm形式を使用します。IDEで使用するには、エクスポートされたコードを手動で解析・修正する必要があります。

ネイティブコードの逆コンパイル

ロジックを理解する。実装を検査する。

機械語とメタデータから再構築されたDelphiライクなステートメントを読み取ります。逆コンパイラは、if条件、caseブロック、ループ、および認識されたVCLメソッドを含む呼び出しを復元します。詳細な検査のために、逆アセンブリ結果とファイルのバイト列も利用可能です。

  • 制御フローとVCL呼び出し

    逆コンパイラビュー内で再構築された条件、case分岐、ループを追跡します。認識されたVCL呼び出しは意味のあるメソッド名を保持しています。識別が不可能な場合、コードリストにはVCL名を推測せず、その呼び出しがそのまま表現されます。

  • 逆アセンブリとファイルのバイト列

    高水準のコードリストをネイティブのWin32またはWin64命令およびHEXエディタと比較します。混合コードリストでは、再構築されたステートメントが対応する命令の隣に配置され、引数、フィールドアクセス、分岐に関する疑問を解決するのに役立ちます。

  • 検索、参照、解析記録

    プロシージャやコードリスト内のテキストを検索し、文字列参照を調べ、アドレスでナビゲートします。後で調査を継続できるよう解析データベースを保存するか、他の解析ワークフローで使用するためにプロシージャ名とアドレスをエクスポートできます。

  • AIヘルパーと拡張機能

    Ollamaまたは設定済みのAPIサービスを使用してAIヘルパーを活用し、レビュー用に既存のコードリストを改善します。共有プラグインSDKによりカスタム拡張機能がサポートされており、独自の解析タスク用の拡張機能を開発できます。AIによる提案は、ネイティブな逆コンパイル結果と命令に対して検証してください。

Delphiで記述されたプログラムを逆コンパイルした結果。制御フローと呼び出しを復元します。
Delphiで記述されたプログラムを逆コンパイルした結果。制御フローと呼び出しを復元します。

C++Builderで作成されたアプリケーション

DE Decompilerは、C++Builderで作成されたWin32/Win64向けVCLアプリケーションに対応します。フォームの復元と表示、ユニット・クラス・関数の解析、イベントハンドラへの移動に加え、同じワークスペースでその他の解析・出力ツールも利用できます。

C++Builder固有のライブラリに対応するRTTI知識ベースは、まだ用意されていません。共通のVCLの認識範囲に含まれない関数や、識別できないオブジェクトのプロパティ・メソッドは、ライブラリ内の名前を付けずに表示される場合があります。このため、C++Builderのコードの復元品質は、Delphiで記述されたプログラムより明らかに低くなります。 この制約はコードの復元精度とライブラリ内の名前の識別に関するものです。フォーム表示や構造解析など、その他の機能はDelphiで記述されたプログラムと同じエディションの条件で利用できます。

C++BuilderのコードはDelphi風のPascalとして復元し、PAS/DFM形式で出力します。元のC++ソースには戻しません。他のネイティブコード復元と同様、IDEで利用する前に、推定された型、生成された名前、逆コンパイルの不正確な箇所を手作業で確認・修正してください。

ネイティブ逆コンパイルの解釈

解析されたバイナリに基づいたDelphi風のPascalコード。

復元される詳細は、ファイルに保持されている命令とメタデータに依存します。マシンコードには元のソーステキストは保持されず、変数名は一般的に生成され、データ構造はアクセスサイズやアドレスから推測され、一部の呼び出しには元のVCLメソッド名を割り当てることができません。

DE Decompilerは解析用にプログラムロジックを再構築します。そのDelphiライクな出力は、コンパイル可能なソースプロジェクトを再現するものではありません。ソースの復元は追加的な用途であり、IDEでコードを開いたりビルドを試したりする前に、推測された型の修正や逆コンパイルの不正確さの是正、欠落した依存関係の復元といった手動での解析と修正が必要です。

再構築の理解 → · すべての製品機能 →

ツールとリソース

調査を続行します。

日本語ドキュメント

コード解析、VCLフォーム、エクスポート、処理オプション、AIヘルパーに関するクイックスタートとワークフローに従ってください。

マニュアルを開く →

Win32およびWin64の難読化

独自のDelphiアプリケーションを配布する際に、統合された難読化ツールを使用してください。

難読化ワークフロー →

画像とプラグイン

FRX Image Viewerは、認識されたネイティブなImageListから登録されたDFMの画像や個々のアイコンをプレビューおよびエクスポートします。共有SDKはカスタム解析拡張をサポートしています。

イメージビューアとダウンロード →

プラグインSDKリファレンス →

概要とサポート

DotFix Softwareは2001以来ソフトウェアツールを開発しています。DE Decompilerの歴史について学び、テクニカルサポートにお問い合わせください。

会社および製品情報 →