x32dbg (x64dbg)のメモ

x32dbg (x64dbg)の使い方に関するメモ

アドレスへの移動

1.逆アセンブル画面を右クリック
2.Go toからExpressionを選択し、移動先のアドレスを入力
あるいはCtrl + g

アセンブリ命令の書き換え

逆アセンブル画面をダブルクリックして命令文を書き換える

ブレークポイントのセット

対象のアドレスを選択して、右クリック、BreakpointからToggleを選択あるいはF2キーを打つ

コマンドからブレークポイントをセットする

画面最下部のCommandフィールドより以下のコマンドを入力する

SetBPX <Address or API Name>

例:SetBPX VirtualAlloc

※ API名を指定する場合は、大文字・小文字を正しく指定しなければならない。

コマンド一覧

スタック・アドレスにハードウェア・ブレークポイントをセットする

  1. 画面右上のレジスタ画面よりESPの値を確認する。
  2. 画面右下のスタック画面より、1.で確認したアドレスを選択して右クリック。
  3. Break PointよりHardware, Accessを選びByte、Word、Dwordの中から任意のものを選ぶ。(32ビット・プログラムを解析している場合は、大抵はDwordでOK)
  4. プログラムを実行して、該当のスタック・アドレスへのアクセスが発生すると、ブレークポイントが起動する。

デバッガが現在停止している位置へ戻る

shift + 8 (アスタリスク)キーを押す

メモリ・ダンプ画面の値の書き換え

メモリ・ダンプ画面より、書き換えたい箇所を選択して右クリック、BinaryからEditを選択して書き換え。
もしくは、最初に上書き用の値(16進数形式)をクリップボードにコピーしておいて、書き換えたい箇所を選択して右クリック、BinaryからPaste (Ignore Size) を選択すると、クリップボードにコピーした値に上書きされる。

メモリ領域からペイロードをダンプする

メモリ・ダンプ画面を選択して右クリックし、「Follow in Memory Map」を選択するとMemory Mapタブに飛ぶ。ハイライトされている行を右クリックして、「Dump Memory to File」を選択する。

ファイルをコマンドライン引数付きでデバッグする

ファイルをロードした後に、FileメニューからChange Command Lineを選択してコマンドラインを入力する。

プロセスをダンプした後にインポート・テーブルを修正する

  1. PluginsメニューよりScyllaを選択してAttach to an active processよりダンプしたいプロセスを選択してDumpボタンをクリックする。(ダンプ前に必要に応じてOEPの値を書き換える。)
  2. IAT AutosearchボタンをクリックしてIATのサーチが完了したらOKボタンをクリックする。次にGet ImportsボタンをクリックしてFix Dumpボタンをクリックする。
  3. 1.でダンプしたファイルを選択する。
  4. インポート・テーブルの修正された新しいダンプファイルが作成される。(ファイル名に_SCYが付与される)

Windows API関数をスキップしてプログラム独自のコード (user code)まで処理を進める

DebugメニューよりRun to user codeを選択する。(または Alt + F9)

例外をトラップせずに、プログラムに渡す

DebugメニューよりAdvancedから

  • Run (pass exceptions) : Shift + F9
  • Step into (pass exceptions) : Shift + F7
  • Step over (pass exceptions) : Shift + F8

DLLのエクスポート関数をデバッグする

  1. rundll32.exeをデバッガにロードする。(64ビットのDLLをデバッグする場合はC:\Windows\System32\rundll32.exeを、32ビットのDLLをデバッグする場合はC:\Windows\SysWOW64\rundll32.exeを選択する)
  2. FileメニューからChange Command Lineを選択して、解析対象のDLLを引数に渡す。(例:"C:\Windows\SysWOW64\rundll32.exe" C:\path\to\example.dll,SampleExportFunc)
  3. OptionsメニューからPreferencesを選択し、EventsタブのDLL Loadのチェックボックスにチェックを入れる。
  4. 解析対象のDLLがデバッガにロードされるまでF9実行する。(デバッグ画面最下部のステータス・バーからDLLがロードされたか確認できる)
  5. DLLがロードされたら、エクスポート関数のアドレスにブレークポイントをセットする。
  6. ブレークポイントに到達するまでF9実行する。

参考

Leave a Reply

Your email address will not be published. Required fields are marked *