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