ネットワークセキュリティ | ペネトレーションテスト入門学習、基礎ゼロから習熟まで - 動的解析技術ツール OllyDbg インターフェースの紹介

目次

動的解析手法デバッガ

OllyDbgとは

OllyDbg では何ができるのでしょうか?

OllyDbg ウィンドウの概要

1. 逆アセンブルパネルウィンドウ

2. 情報パネルウィンドウ

3. データパネルウ​​ィンドウ

4. 登録パネルウィンドウ

5. スタックパネルウィンドウ


動的解析手法デバッガ

動的解析技術で最も重要なツールはデバッガであり、ユーザー モードとカーネル モードの 2 種類に分けられます。ユーザー モード デバッガーは、ユーザー モード アプリケーションのデバッグに使用されるデバッガーを指し、llyDbgx64dbg、VisualC++、およびデバッガーに付属するその他のコンパイラなど、Ring3 レベルで動作します。カーネル モード デバッガーとは、OllyDbg など、オペレーティング システム カーネルをデバッグできるデバッガーを指します。

OllyDbgとは

OllyDbg (略称「OD」) は leh Yuschuk によって作成されました (インターネットを長時間検索しましたが、OD の作者に関するニュースはほとんどありません。海外のサイトで散発的にいくつかの情報を見つけました: Oleh Yuschuk: It旧ソ連 -> ロシア人かもしれません。旧ソ連崩壊後、私はドイツに移住し、ドイツの古い町に住んでいます。具体的な情報は見つかりません)さまざまなバージョンの Windows で実行できるビジュアル インターフェイス NT システム アーキテクチャのアップデート OllyDbg の強力な機能を実行できます。

OllyDbg では何ができるのでしょうか?

OllyDbg は動的デバッグと静的分析を組み合わせたもので、GUI インターフェイスを備えており、非常に使いやすく、例外の追跡と処理において非常に柔軟です。これらの機能により、OllyDbg は Ring3 レベルのプログラムのデバッグに最適なツールになります。その逆アセンブリ エンジンは非常に強力で、C および Wimdows で頻繁に使用される何千もの関数を識別し、そのパラメータに注釈を付けることができます。関数、処理、ループ文などのコード内の文字列を自動解析します。さらに、オープンなデザインがこのソフトウェアに強い生命力を与えています。愛好家による継続的な変更と拡張により、OllyDbg のスクリプト実行機能とオープンなプラグイン インターフェイスにより、OllyDbg はますます強力になっています。

公式ダウンロード リンク: OllyDbg v1.10   OllyDbg では、非常に使いやすい私のお気に入りのプラグインを推奨しています。

OllyDbg ウィンドウの概要

OllDbgを起動すると、下図のように複数のサブウィンドウが開くので、ツールバーの「L」「E」「M」などのショートカットボタンをクリックしてサブウィンドウを切り替えます。これらのショートカットは、ログウィンドウ、CPUウィンドウ、その他のウィンドウ機能の説明を含む「表示」メニューの機能項目に対応しています。0llyDbgのヘルプドキュメントを参照してください。

 「ファイル」「開く」オプション (ショートカット キー「F3」) をクリックして EXE ファイルを開くと、OllyDbg がすぐにファイルをロードし、自動的に分析してアセンブリ コードをリストします。デフォルトの現在のウィンドウは CPU ウィンドウで、これは 0yDbg で最も重要なウィンドウであり、対応するアイコンは C であり、デバッガのほとんどの操作はこのウィンドウで実行する必要があります。このウィンドウには、下図に示すように、逆アセンブリパネル、レジスタパネル、情報パネル、データパネル、スタックパネルの 5 つのパネルウィンドウが含まれています。タイトル バー (バー) フォント (フォント) などの各ウィンドウの外観プロパティは、対応するウィンドウの右クリック ショートカット メニューの「外観」(インターフェイス オプション) オプションを通じて制御できます。

1. 逆アセンブルパネルウィンドウ

逆アセンブラウィンドウ (Disassembler window) には、デバッグされたプログラムのコードがアドレス (Address)、16 進マシンコード (Hexdump)、逆アセンブリコード (Disassembly)、コメント (Comment) の 4 つの列があることが表示されます。コメントの最後の列には、関連する API パラメーターまたは操作の概要フォームが表示され、非常に便利です。

 

00B2109B   .  B9 F8BAB400   mov ecx,路径修复.00B4BAF8
00B210A0   .  E9 26670000   jmp 路径修复.00B277CB
00B210A5   .  B9 FBBAB400   mov ecx,路径修复.00B4BAFB
00B210AA   .  E8 58760000   call 路径修复.00B28707
00B210AF   .  68 83F9B300   push 路径修复.00B3F983
00B210B4   .  E8 B5890000   call 路径修复.00B29A6E
00B210B9   .  59            pop ecx                                  ;  kernel32.777D0099
00B210BA   .  C3            retn
00B210BB   .  B9 B8BBB400   mov ecx,路径修复.00B4BBB8
00B210C0   .  E8 42760000   call 路径修复.00B28707
00B210C5   .  68 8DF9B300   push 路径修复.00B3F98D
00B210CA   .  E8 9F890000   call 路径修复.00B29A6E
00B210CF   .  59            pop ecx                                  ;  kernel32.777D0099
00B210D0   .  C3            retn
00B210D1   .  68 97F9B300   push 路径修复.00B3F997
00B210D6   .  E8 93890000   call 路径修复.00B29A6E

 逆アセンブリ パネル ウィンドウの列 (注: 列ヘッダーではありません) では、デフォルトでダブルクリックすると次の操作を完了できます。

  • アドレス欄:ダブルクリックした行アドレスの相対アドレスを表示し、再度ダブルクリックすると標準アドレスモードに戻ります。
  • Hexdump 列: 無条件ブレークポイントを設定またはキャンセルします。対応するショートカット キーは「F2」キーです。
  • 逆アセンブリ列: アセンブラを呼び出すと、アセンブリ コードを直接変更できます。対応するショートカット キーはスペース バーです。
  • コメント欄:コメントの追加や編集が可能です。対応するショートカットキーは「」キーです。

キーボードから複数の行を選択します。これは、「Shit」キーと上下のカーソル キー (または「PgUp」/「PgDn」キー) を押すか、右クリックのショートカット メニュー コマンドを使用することで実現できます。「Ctl」キーを押しながら上下のカーソル キーを押して、アセンブリ ウィンドウを 1 行ずつスクロールします (データがコードと混在している場合に便利です)。

2. 情報パネルウィンドウ

ダイナミックトラッキングを実行する場合、情報パネルウィンドウ(Information window)には、命令に関連する各レジスタの値、API関数呼び出しプロンプト、ジャンププロンプトなどの情報が表示されます。

3. データパネルウ​​ィンドウ

データ パネル ウィンドウ (ダンプウィンドウ) には、ファイルのメモリ内のデータが 16 進数および文字で表示されます。指定したメモリアドレスのデータを表示するには、右クリックメニューの「Cotoexpression」コマンドをクリックするか、「Ctl+G」ショートカットキーを押してアドレスウィンドウを開き、アドレスを入力します。

00B40260  62 72 6F 6B 65 6E 20 70 69 70 65 00 63 6F 6E 6E  broken pipe.conn
00B40270  65 63 74 69 6F 6E 20 61 62 6F 72 74 65 64 00 00  ection aborted..
00B40280  63 6F 6E 6E 65 63 74 69 6F 6E 20 61 6C 72 65 61  connection alrea
00B40290  64 79 20 69 6E 20 70 72 6F 67 72 65 73 73 00 00  dy in progress..
00B402A0  63 6F 6E 6E 65 63 74 69 6F 6E 20 72 65 66 75 73  connection refus
00B402B0  65 64 00 00 63 6F 6E 6E 65 63 74 69 6F 6E 20 72  ed..connection r
00B402C0  65 73 65 74 00 00 00 00 64 65 73 74 69 6E 61 74  eset....destinat
00B402D0  69 6F 6E 20 61 64 64 72 65 73 73 20 72 65 71 75  ion address requ
00B402E0  69 72 65 64 00 00 00 00 65 78 65 63 75 74 61 62  ired....executab
00B402F0  6C 65 20 66 6F 72 6D 61 74 20 65 72 72 6F 72 00  le format error.
00B40300  66 69 6C 65 20 74 6F 6F 20 6C 61 72 67 65 00 00  file too large..
00B40310  68 6F 73 74 20 75 6E 72 65 61 63 68 61 62 6C 65  host unreachable
00B40320  00 00 00 00 69 64 65 6E 74 69 66 69 65 72 20 72  ....identifier r
00B40330  65 6D 6F 76 65 64 00 00 69 6C 6C 65 67 61 6C 20  emoved..illegal
00B40340  62 79 74 65 20 73 65 71 75 65 6E 63 65 00 00 00  byte sequence...
00B40350  69 6E 61 70 70 72 6F 70 72 69 61 74 65 20 69 6F  inappropriate io
00B40360  20 63 6F 6E 74 72 6F 6C 20 6F 70 65 72 61 74 69   control operati
00B40370  6F 6E 00 00 69 6E 76 61 6C 69 64 20 73 65 65 6B  on..invalid seek
00B40380  00 00 00 00 69 73 20 61 20 64 69 72 65 63 74 6F  ....is a directo
00B40390  72 79 00 00 6D 65 73 73 61 67 65 20 73 69 7A 65  ry..message size
00B403A0  00 00 00 00 6E 65 74 77 6F 72 6B 20 64 6F 77 6E  ....network down
00B403B0  00 00 00 00 6E 65 74 77 6F 72 6B 20 72 65 73 65  ....network rese
00B403C0  74 00 00 00 6E 65 74 77 6F 72 6B 20 75 6E 72 65  t...network unre
00B403D0  61 63 68 61 62 6C 65 00 6E 6F 20 62 75 66 66 65  achable.no buffe
00B403E0  72 20 73 70 61 63 65 00 6E 6F 20 63 68 69 6C 64  r space.no child
00B403F0  20 70 72 6F 63 65 73 73 00 00 00 00 6E 6F 20 6C   process....no l
00B40400  69 6E 6B 00 6E 6F 20 6D 65 73 73 61 67 65 20 61  ink.no message a
00B40410  76 61 69 6C 61 62 6C 65 00 00 00 00 6E 6F 20 6D  vailable....no m
00B40420  65 73 73 61 67 65 00 00 6E 6F 20 70 72 6F 74 6F  essage..no proto


4. 登録パネルウィンドウ

 レジスタ パネル ウィンドウ (レジスタ ウィンドウ) には、CPU の各レジスタの値が表示され、浮動小数点 MMX および 3DNow! レジスタがサポートされています。右クリックまたはウィンドウタイトルをクリックすると、レジスタの表示方法を切り替えることができます。


5. スタックパネルウィンドウ

 スタックウィンドウに表示される内容は、ESP が指すアドレスの内容です。スタックにデータを入れる操作をプッシュといい、スタックからデータを取り出す操作をポップといいます。ウィンドウは非常に重要であり、すべての API 関数とサブルーチンはパラメーターと変数を渡すためにそれを使用します。

010FFC74  |00000000
010FFC78  |00000000
010FFC7C  |00000000
010FFC80  |00000000
010FFC84  |00000000
010FFC88  |00000000
010FFC8C  |00000000
010FFC90  |010FFC58
010FFC94  |00000000
010FFC98  |010FFCB0  Pointer to next SEH record
010FFC9C  |77C7AE30  SE handler
010FFCA0  |875B3DC9
010FFCA4  |00000000
010FFCA8  \010FFCB8
010FFCAC   77C67B3E  RETURN to ntdll.77C67B3E from ntdll.77C67B3F
010FFCB0   FFFFFFFF  End of SEH chain
010FFCB4   77C88C8F  SE handler

おすすめ

転載: blog.csdn.net/qq_22903531/article/details/131377928