プラグインと SDK

FRX イメージビューアを使用して、復元されたフォームグラフィックスを検査・抽出するか、共有 SDK を通じてカスタムプラグインを開発します。

FRX Image Viewer

FRX Image Viewer 1.2.0は、VB DecompilerまたはDE Decompilerが登録した画像を表示・抽出します。VB DecompilerはVB5/6と.NETのフォーム画像を、DE Decompilerは対応するDelphiおよびC++BuilderのVCLアプリケーションのバイナリDFM画像を提供します。BMP、PNG、JPEG、GIF、ICO、CURに対応しています。

インストールと起動

  1. FRXViewer.dll をホストインストールの plugins サブディレクトリにコピーし、逆コンパイラを再起動します。DLL のアーキテクチャは解析対象ファイルのアーキテクチャに関係なく、ホストアプリケーションと一致している必要があります。
  2. EXE または DLL を開き、フォームを解析してホストに画像を登録させます。
  3. プラグイン (Plugins) > FRX Image Viewer を選択し、イメージを検査するサムネイルを選択します。

1.2.0 ダウンロード には x86 ホスト用の DLL が含まれています。x64 ホストには一致するビルドを使用してください。このプラグインには Windows 10/11 が必要です。ソースリポジトリ にはビルド手順が含まれています。

プレビューとエクスポート

ギャラリーとプレビューには、複数の画像を含む ICO/CUR ファイルなどの利用可能な画像が表示されます。ステータス欄には項目、寸法、データサイズまたは元ビットマップのオフセット、形式が表示されます。ホストのテーマに追従し、ダークモードにも対応します。

選択した項目をエクスポートするには、ファイルに保存を選択します。スタンドアロンの画像は元のバイトとフォーマットを保持します。個々の ImageList セルは、マスクとアルファ透明度を含む ICO ファイルとしてエクスポートされ、これらの ICO ファイルはソースのビットマップシートから派生しています。

DE Decompiler の FRX イメージビューアでは、Delphi DFM グラフィックスと個別の ImageList アイコンが表示されます。
DE Decompiler の FRX イメージビューアでは、Delphi DFM グラフィックスと個別の ImageList アイコンが表示されます。

ネイティブ Delphi ImageList と互換性

対応するホストでは、認識されたネイティブVCLのImageListを個々のアイコンとして表示します。コレクション項目内の独立した画像は、通常の個別画像として扱います。未対応のストリームでは、元の画像エントリが利用できる場合、画像全体の表示・抽出を維持します。

VB Decompiler 26.6 および DE Decompiler 26.6 でサポートされる共有 SDK リビジョン 26.6 は、オプションの GetFrxImageListInfo (63) と GetProductName (64) を追加します。古いホストは元の画像 API と全体画像の動作を保持します。機能検出とオフセットルールについては、SDK リファレンスを参照してください。

表示と抽出では、解析対象ファイルを実行せず、そのコンポーネントも読み込みません。アニメーション GIF は最初のフレームを表示します。利用可能なリソースは、ホストが正常に解析・登録した画像に依存します。

プラグイン (Plugins) メニューは、インストールされたネイティブ DLL プラグインのエントリポイントです。共有コールバックインターフェースは、カスタム拡張機能に対してサポートされているプロジェクト情報とコードを公開します。利用可能な DLL プラグインは起動時に初期化され、対象のホストアーキテクチャと Windows 環境向けにビルドする必要があります。

プラグインの開発

SDK には Visual C++、Rust、Delphi、Free Pascal の例が含まれています。ワークフローで必要な操作を実装するには、エクスポートされたエントリポイントとホストコールバックを使用してください。

また、AI コーディングエージェントにプラグインの実装を依頼することもできます。SDK および API リファレンスへのリンクと、必要な動作の説明を提供し、DE Decompiler と代表的な入力ファイルに対して結果の DLL をレビュー、ビルド、テストしてください。

インターフェースの互換性

文書化された SDK 呼び出し規約、エクスポートされたエントリポイントおよびデータ表現を使用します。共有 API 識別子は既存の名前を維持し、VBDecompilerPlugin プレフィックスを含みます。エクスポートされたシンボル内の製品名を変更すると、ABI が変更されます。

インターフェースが共通でも、すべてのVB Decompiler用プラグインがDE Decompilerのデータに適しているとは限りません。想定するオブジェクト型、復元コードの言語、現在の項目で利用できる操作を確認してください。

開発者リファレンス

製品ウェブサイトのプラグイン API リファレンスを参照してください。そこでは、エクスポートされたエントリポイント、コマンド識別子、コールバックデータおよびバッファ要件が説明されています。SDK はアクティブビューとプロジェクトレベルのコードアクセスを提供します。すべての逆コンパイル済みプロシージャを検索する操作には、対応する逆コンパイル結果(コードリスト)の利用が必要です。コード照会コールバックは、一致する入力ファイルが利用可能な場合に個々のプロシージャを処理できます。

表示中の項目、関数マーク、アドレス

GetDisplayedTreeItem(65)で表示中のフォーム、ユニット、クラス、プロシージャを取得できます。GetModuleFunctionMark(66)とSetModuleFunctionMark(67)で関数のマークを取得・変更し、FindModuleFunctionByVA(68)で仮想アドレスから関数を検索できます。GetModuleFunctionVA(69)は64ビットを含む完全な仮想アドレスを返します。既存のコールバックシグネチャとコマンド番号は維持しています。