# DE Decompiler 26.7：ネイティブアプリケーションのコード復元精度の向上

> DE Decompiler 26.7では条件式、文字列、プロパティ、呼び出しの復元精度を向上しました。ネイティブコード解析とVCLフォームの復元を画面付きで紹介します。

Canonical HTML: <https://www.de-decompiler.com/de_decompiler_267_jp.htm>

## DE Decompiler 26.7：ネイティブアプリケーションのコード復元精度の向上

2026年11月2日

DE Decompiler 26.7をリリースしました。本バージョンでは、ネイティブコード解析の中核となる、値・分岐・呼び出しの関係を保った読みやすいプログラムロジックの復元に重点を置いています。条件式、文字列を扱う処理、継承されたプロパティ、関数引数の復元に加え、ライブラリの識別と解析の安定性を改善しました。

DE Decompilerは、Delphiで記述された、またはC++Builderで作成されたWin32/Win64向けVCLアプリケーションを調査する専門家向けツールです。リバースエンジニア、フォレンジック調査担当者、マルウェア解析者、セキュリティ部門、開発者に向けて、復元したフォーム、ユニット、クラス、関数を、Delphi風Pascalコード、逆アセンブリ、ファイルのバイト列と関連付けて表示します。本記事では26.7の主な改善と、最近のリリースで加わった解析機能を紹介します。

### 条件式、分岐、関数の戻り値

コンパイル済みのプロシージャでは、複数の分岐で値を選択して保存し、後の処理で使用することがあります。この流れを復元するには、保存した値と後続の計算を区別する必要があります。26.7では3つ以上の分岐から選択される値に依存する条件式を改善し、復元コードに残る未解決の中間値を削減しました。

共通のリターン経路、早期リターン、共通のエラー処理ブロックの解析も改善しました。クリーンアップ処理を経ても関数の戻り値を保持し、ある分岐で代入された値が、その代入の行われない実行経路で誤って使用されることを防ぎます。論理条件や入れ子の分岐で欠落していた呼び出しも、より確実に復元します。

式の評価でプログラムの状態が変化する場合、呼び出し順序は重要です。関数の戻り値を再利用するコードの解析を改善し、値の選択やループ条件で、復元コードに同じ関数の呼び出しが重複する問題を防ぎます。Delphiの型判定と実行時チェックを伴うオブジェクトのキャストも、必要なチェックと例外を保持した`is`・`as`式として表示できるケースが増えました。

[![イベントハンドラの復元コード。文字列、条件式、コントロールのプロパティ、VCLメソッドの呼び出しをプロシージャ内で確認できます。](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_code_decompilation.png)](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_code_decompilation.png)
イベントハンドラの復元コード。文字列、条件式、コントロールのプロパティ、VCLメソッドの呼び出しをプロシージャ内で確認できます。

### 文字列の復元、プロパティ、ライブラリ呼び出し

間接呼び出しでは、呼び出し先のシグネチャを完全に特定できなくても、スタック経由で渡した出力パラメータの値が変更されることがあります。26.7では、こうした文字列などの出力値をより正確に扱い、後続の比較に古い初期値や誤った空文字列が使われる問題を抑えました。

継承されたVCLプロパティの扱いも改善しています。`Text`や`Caption`などのセッター（書き込みアクセサ）の呼び出しを、プロパティへの代入として復元できるケースが増えました。読み取りでは、プロパティを繰り返し参照せず、取得済みの文字列を保持します。プロパティアクセサとして確実に識別できないルーチンは、引数と戻り値を持つ呼び出しとして残します。

異なるライブラリに存在する同名クラスをより正確に区別し、継承されたライブラリメソッドの識別を高速化しました。識別結果の曖昧さも減少しています。ライブラリデータベースの読み込みを高速化し、小規模なデータベースを読む際の安定性も改善しました。

### 整数のビット幅、型変換、解析の安定性

ローカル変数とカウンタのサイズをより正確に復元し、8ビット・16ビット演算の特性を保持します。符号付き・符号なし変換後の整数計算では、64ビット値を含めてより正確に扱います。論理値への変換でも、元の記憶領域のサイズと通常とは異なる`True`の表現を保持します。ローカル変数の再利用による誤った値の置き換えや、メモリの再読み取りも削減しました。

適切な場合は切りのよい数値定数を10進数で表示し、識別できたアドレスとビットマスクは16進数を維持します。機械語との対応を保ちつつ、通常の数値を読み取りやすくします。

埋め込みデータや特殊なリターン命令を含むプロシージャでのフリーズを修正しました。特殊な呼び出し規約でのスタック処理を改善し、解析中のオーバーフローエラーも防ぎます。不正なAPI呼び出し記述による過大なメモリ確保を抑え、未解決の引数は出力に残します。

### 復元したVCLフォームからイベントハンドラへ

最近のリリースでは、画面から調査を進める機能も拡充しています。DE Decompilerはテキスト形式・バイナリ形式のDFMリソースを読み取り、対応するVCLフォームを読み取り専用で復元します。対応するメニュー、タブ、ツールバー、リストなどについて、保存されたテキスト、プロパティ、配置を再現します。対象アプリケーションの実行や、そのコンポーネントクラスの読み込みは行いません。

コントロールを選択して復元プロパティを確認し、イベントハンドラに移動できます。DFMソース表示はシンタックスハイライト、折りたたみ、検索、移動履歴に対応しています。一部のAlphaSkins・TMSコントロールにも対応し、より多くのアプリケーションの画面を調査できます。画像ビューアプラグインでは、フォームの画像と、認識されたネイティブImageList内の個別アイコンを抽出できます。

[![読み取り専用で復元したフォームと、プロジェクトツリー、選択したコンポーネントのプロパティ。](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_forms_visualizer.png)](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_forms_visualizer.png)
読み取り専用で復元したフォームと、プロジェクトツリー、選択したコンポーネントのプロパティ。

### アプリケーションのロジックとデータベース関連コードの調査

プロジェクトツリーは、復元したコードをユニット、クラス、プロシージャの順に整理します。フォームのハンドラに加え、公開関数やヒューリスティックに検出された非公開ルーチンも調査できます。プロシージャ検索、文字列参照、アドレスへの移動によって、画面上の機能と実装コードを結び付けられます。逆アセンブラとHEXエディタでは、対応する命令とバイト列を確認できます。

データベース関連の処理は、その具体例です。下の画面では、ファイルの存在確認、接続・クエリコンポーネントのプロパティ、SQL文字列、レコード件数を使った条件式が読み取れます。これらはアプリケーションのバイナリから復元した情報です。この表示でデータベースに接続したり、保存データを取得したりすることはありません。

復元結果はPascalユニット、DFMファイル、Delphiプロジェクト、または1つのPascalコードリストとして出力できます。VDD解析データベースに復元した構造や変更したシンボル名を保存して、後で調査を再開できます。共通プラグインSDKでは、仮想アドレスへの移動や関数マークなどを使った独自ツールを開発できます。

[![接続プロパティ、SQL文字列、クエリのレコード件数を使った条件を含むアプリケーションコード。](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_sql_db_decompilation.png)](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_sql_db_decompilation.png)
接続プロパティ、SQL文字列、クエリのレコード件数を使った条件を含むアプリケーションコード。

### Delphiで記述されたプログラムとC++Builderで作成されたプログラム

DE Decompilerは、Delphi 3～13で記述されたWin32/Win64向けVCLアプリケーションに対応します。C++BuilderのVCLアプリケーションでも、フォームの復元・表示、ユニット・クラス・関数の解析、イベントハンドラへの移動など、対応するツールをDelphiで記述されたアプリケーションと同じライセンス条件で利用できます。どちらのコードもDelphi風Pascalとして表示し、PAS/DFM形式で出力します。

ライブラリ情報の認識範囲はDelphiの方が広く、C++Builder固有のライブラリRTTI知識ベースはまだ提供されていません。そのため、識別可能なVCLライブラリの範囲外にある関数呼び出しや、識別できないプロパティ、メソッドには、自動生成された名前が残る場合があります。これはコード復元精度の制約であり、C++Builderの他の解析機能を利用できなくするものではありません。

ネイティブコードの復元で得られる詳細は、実行ファイルに残された命令とメタデータによって決まります。元のローカル変数名が残っていない場合があり、型や構造を完全には推定できないこともあります。識別できない呼び出しには生成名を使用します。IDEでソースコードとして利用する前には、復元コードの手作業による解析と修正が必要です。

### DE Decompiler 26.7を試す

Free LiteではVCLフォームの確認、ネイティブ逆アセンブル、文字列参照を利用できます。商用ライセンスでは、高水準のPascalコードへの逆コンパイルなど、各ライセンスに対応するツールが加わります。最新リリースをダウンロードしてアプリケーションを調査し、操作の詳細と変更点はマニュアルおよびリリースノートで確認してください。

[Free Lite 26.7をダウンロード](https://www.de-decompiler.com/download_jp.htm) · [26.7の全変更点](https://www.de-decompiler.com/news_jp.htm#release-267) · [マニュアルを読む](https://www.de-decompiler.com/help/jp/index.htm) · [ライセンスと価格](https://www.de-decompiler.com/order_jp.htm)

2026年11月2日

© Sergey Chubchenko（[DE Decompiler](https://www.de-decompiler.com/main_jp.htm) 主開発者）
