【汇编】OllyDbg使用方法
生活随笔
收集整理的這篇文章主要介紹了
【汇编】OllyDbg使用方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 主窗口界面
反匯編面板:
- 被調試程序在反匯編后顯示在該面板窗口中,顯示的信息分為四列,從左到右依次為:地址、數(shù)據(jù)、反匯編代碼和注釋
- 主要關注的是反匯編代碼列,該列將指令以匯編代碼的形式顯示,從而讓用戶在匯編層次上對程序進行調試
寄存器面板窗口:
- 該窗口將程序運行時用到的寄存器的值都列了出來,其中寄存器的值發(fā)生變化時顏色會變?yōu)榧t色
堆棧面板窗口:
- 該窗口顯示的是程序執(zhí)行時的堆棧信息,左邊一列是堆棧地址,右邊一列是該地址存放的數(shù)據(jù)
數(shù)據(jù)面板窗口:
- 該窗口以十六進制和字符串的形式顯示程序在內存中的數(shù)據(jù)
信息面板窗口:
- 在調試跟蹤時,該窗口顯示與指令相關的寄存器值、API函數(shù)調用提示和跳轉提示等信息
2.開始調試
2.1 打開方式
? 一般有兩種打開方式
- 第一種:依次點擊File->open,選擇待調試的程序,若程序執(zhí)行時需要輸入?yún)?shù),則可以在Arguments欄填入
- 第二種:附加到正在執(zhí)行的進程,依次點擊File->Attach,選擇需要調試的進行即可。
2.2 設置斷點
2.2.1 INT3斷點
- 斷點的一種,快捷鍵是F2,一種常用的斷點類型
- INT3指令的機器碼為CC。當被調試進程執(zhí)行INT3指令導致一個異常時,調試器就會捕捉這個異常從而停在斷點處,然后將斷點處的指令恢復成原來的指令
優(yōu)點:
- 可以設置無數(shù)個斷點
缺點:
- 改變了原程序指令,容易被軟件檢測到。
2.2.2 硬件斷點
- 由硬件提供的調試寄存器組,可以對這些硬件寄存器設置相應的值,然后讓硬件幫我們斷在需要下斷點的地址
- 設置方法:依次點擊Breakpoint --> Hardware on execution
- 取消斷點:依次點擊:Debug --> Hardware breakpoints,然后在彈出的窗口中刪除硬件斷點(或者Breakpoint --> Remove Hardware breakpoints )
優(yōu)點:
- 速度快,在INT3斷點容易被發(fā)現(xiàn)的地方使用硬件斷點代替會有很好的效果
缺點:
- 最多只能設置4個斷點
2.2.3 內存斷點
- 修改內存訪問屬性來觸發(fā)內存訪問錯誤而設置的斷點稱為內存斷點
- 設置斷點:鼠標右鍵并依次點擊:Breakpoint --> Memory, on access/Memory,on write。
2.3 跟蹤運行
| F4 | 運行到指定地址 |
| F7 | 單步步進,遇到CALL跟進 |
| F8 | 單步步過,遇到CALL跳過 |
| F9 | 運行程序 |
| Ctrl+F9 | 遇到第一個RET指令時中斷 |
2.4 地址跳轉
- 按下快捷鍵Ctrl+G可以直接跳轉到對應的地址處
- 如果要查看某個地址的數(shù)據(jù) ,那么點擊一下數(shù)據(jù)窗口,然后按下快捷鍵便可跳轉到對應地址
- 同理,如果要 查看匯編代碼或是堆棧數(shù)據(jù),采用同樣的操作即可
- 執(zhí)行Go to命令,打開一個Enter expression to follow(對話框),輸入地址,單擊OK按鈕
2.5 堆棧相關操作
- 堆棧區(qū)顯示的數(shù)據(jù)總是從棧頂指針ESP處顯示
- 選擇Address ->Relative to ESP(子菜單一般只顯示上面4個種的3個,根據(jù)需要動態(tài)變化),這時堆棧窗口就以ESP為指引,顯示你想要的數(shù)據(jù)
- 隨著程序單步執(zhí)行時(F7或F8),窗口中的ESP總是滾動的,總是將棧頂置于頂部
- 在觀察某個地址處數(shù)據(jù)的變動時會不方便,如果你不想滾動,而是想觀察某個位置上的堆棧值,這時可以使用Lock Stack來鎖定滾動。
ps:博主正在學習匯編當中,會在之后更新更詳細的OD使用經(jīng)驗和匯編知識
總結
以上是生活随笔為你收集整理的【汇编】OllyDbg使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。