コードの表示と比較

復元したDelphi風のPascalの文でプロシージャの処理を読み取り、逆アセンブル結果でその根拠を確認します。この手順は、対応するDelphiとC++Builderの両方の入力に適用できます。

コードリストの追跡

ツリーからプロシージャを選択します。個々の式を追跡する前に、シグネチャ、ローカル宣言、および制御フローを調べます。生成された名前は、元のソース名が利用できない場合に復元された値を識別するために使用されます。構文強調表示と折りたたみ可能なブロックは、長いプロシージャのナビゲーションに役立ちます。

復元された本体は、エクスポート用に Pascal コメントのラッパーで囲まれる場合があります。DE Decompiler は、それらの本体を識別子の強調表示、参照検索、およびリネームのために依然としてコードとして扱います。文字列リテラルと実際の行コメントは、コード参照の一致から除外されます。

識別子とコードナビゲーション

レジスタ、変数、または関数名にカーソルを置くと、現在のコードリスト内での一致する出現箇所が強調表示されます。あるプロシージャ内のローカルまたはグローバルな識別子を強調表示することは、プロジェクト全体の参照検索とは別個の操作です。

認識されたプロシージャ呼び出しをダブルクリックして、呼び出されたプロシージャを開きます。アドレスのような定数を使用すると、HEX エディタで対応するファイルバイトに移動できます。Esc キー、履歴矢印、またはマウスの戻るボタンと進むボタンを使用して戻ります。

アドレスの同期

逆コンパイラと逆アセンブラーの切り替えは、現在のキャレットアドレス(Win64アドレスを含む)に従って行われます。同一の命令ラベルが存在しない場合は、最も近い利用可能なアドレスが選択されます。宛先を含むフォルダのみが開かれます。

ハイブリッドな高レベルおよびネイティブビュー

コード上で右クリックして 逆アセンブラにコピー (Copy to disassembler) を選択するか、コードビューで D キーを押します。生成されるビューでは、アドレス付きの再構築されたステートメントが対応する機械語命令の横に表示されます。折りたたまれたソースは元のエディタを展開せずに含まれ、アドレス付けされていない宣言は注釈から省略されます。アドレスベースの比較を使用する際は、アドレスを追加 (Add Addresses) を有効にしてください。

再構築されたDelphi文が機械語命令と交互に配置されます。
再構築されたDelphi文が機械語命令と交互に配置されます。

参照と名前

ツリーで選択されたプロシージャ上で 参照の検索 (Find references) を使用するか、X キーを押して、認識された呼び出し元を調べます。結果をダブルクリックして呼び出し元を検査します。参照検索には完全な処理が必要です:必要に応じてプロンプトが表示された場合は 高速逆コンパイル (Fast decompilation) を無効にし、入力を再オープンしてください。デコードされていないキャッシュされたボディに基づく参照リストは不完全です。コードビューでキャレットをグローバル変数に置き、X キーを押してその参照を検索します。間接的または動的に解決される使用法は、認識された参照リストに表示されない場合があります。

名前変更 (Rename variable) または N を使用して意味のある解析名を割り当てます。名前は Pascal 識別子の規則に従います。名前の変更によるマッチングは大文字と小文字を区別せず、パラメータ、ローカル宣言、および予約語との衝突をチェックします。名前の変更を元に戻す (Undo renaming) または Ctrl+Shift+Z を使用すると、通常のエディタの元に戻し操作とは独立して変数の名前変更を元に戻すことができます。解析者が割り当てた名前は、バイナリに保持されている元の名称と区別してください。

キーボードアクセス

フォーカスショートカットアクション
コードD再構築されたコードリストをディスアセンブリと組み合わせる。
コードN選択した変数の名前を変更する。
コードCtrl+Shift+Z変数名の変更を元に戻す。
コードXカーソル下のグローバル変数の参照を検索。
ツリーX選択されたプロシージャの参照を検索。
ツリーGセクションパスを使用して移動する。
ツリーCtrl+C選択されたオブジェクトの完全なツリーパスをコピー。
ツリーSpace または Insert選択された項目をマークまたはアンマーク。
ビューAlt+1ツリーとアクティブなビューの間でフォーカスを切り替える。
履歴Escキー直前のプロシージャに戻る。

一文字のショートカットはキーボードのフォーカスに依存します。入力フィールドでの通常のテキスト入力を置き換えるものではありません。