0.OD-基础操作
1.按F9運行程序
2.ctrl+G打開跟隨表達式窗口,輸入的Api大小寫敏感,函數(shù)名大小寫必須正確
3.Alt+B打開斷點窗口,Always表示斷點激活狀態(tài),Disable表示斷點停用,按空格鍵可切換狀態(tài)
4.Alt+n打開輸入輸出表,Alt+C回到主窗口
5.Alt+F9回到調(diào)用函數(shù)的地方.
6.API函數(shù)基本采用_stdcall調(diào)用約定,參數(shù)按從右到左入棧,由被調(diào)用者清理棧中參數(shù),返回值放在eax寄存器中,因此對API要分析其前的PUSH指令,這些指令將參數(shù)放進堆棧以傳送給API調(diào)用,
C代碼中的子程序采用C調(diào)用約定,同線參數(shù)按從右到左入棧,由調(diào)用者清理棧中的參數(shù)。
?7.int3指令,機器碼是CCH,又常稱為CC指令,也就是按F2下的斷點,雖然顯示的是下斷前的指令,但實際上已被替換成cc了.
8.硬件斷點原理是使用4個調(diào)試寄存器(DR0,DR1,DR2,DR3)來設(shè)定地址,因此最多只能設(shè)置4個斷點,右擊寄存器面板窗口,執(zhí)行view debug registers,就可以看到DR0,DR1,DR2,DR3了,右鍵選breakpoint--->hardware,on execution(斷點/硬件執(zhí)行)命令,按F9執(zhí)行程序,程序中斷到硬件調(diào)試這一行,查看調(diào)試寄存器,會發(fā)現(xiàn)DR0的值和中斷點的內(nèi)存地址一致。設(shè)置斷點后,實際就是把DR0,DR1,DR2,DR3其中一個設(shè)置為斷點的內(nèi)存地址,刪除,單擊菜單"debug-->Hardware breakpoints(調(diào)試/硬件斷點)",打開硬件斷點面板,單擊delete刪除相應(yīng)的硬件斷點.
9.F4,可以執(zhí)行到光標(biāo)所在的行,利用的就是調(diào)試寄存器原因,中斷后自動刪除,相當(dāng)于一次性硬件斷點,硬件斷點的速度快,缺點是最多能使用4個斷點。
?
整理下基本快捷操作:
F2:設(shè)置斷點,只要在光標(biāo)定位的位置(上圖中灰色條)按F2鍵即可,再按一次F2鍵則會刪除斷點。
F8:單步步過。每按一次這個鍵執(zhí)行一條反匯編窗口中的一條指令,遇到?CALL?等子程序不進入其代碼。
F7:單步步入。功能同單步步過(F8)類似,區(qū)別是遇到?CALL?等子程序時會進入其中,進入后首先會停留在子程序的第一條指令上。
F4:運行到選定位置。作用就是直接運行到光標(biāo)所在位置處暫停。
F9:運行。按下這個鍵如果沒有設(shè)置相應(yīng)斷點的話,被調(diào)試的程序?qū)⒅苯娱_始運行。
CTR+F9:執(zhí)行到返回。此命令在執(zhí)行到一個?ret?(返回指令)指令時暫停,常用于從系統(tǒng)領(lǐng)空返回到我們調(diào)試的程序領(lǐng)空。
ALT+F9:執(zhí)行到用戶代碼。可用于從系統(tǒng)領(lǐng)空快速返回到我們調(diào)試的程序領(lǐng)空。
ALT + F2 關(guān)閉被調(diào)試的程序。如果程序還在活動狀態(tài),你會被詢問是否執(zhí)行該操作。
總結(jié)
- 上一篇: CSocket详解
- 下一篇: 1.OD-破解MTS DashBoard