|
無論當(dāng)前的OllyDbg窗口是什么,這些快捷鍵均有效: Ctrl+F2 - 重啟程序,即重新啟動被調(diào)試程序。如果當(dāng)前沒有調(diào)試的程序,OllyDbg會運行歷史列表[history list]中的第一個程序。程序重啟后,將會刪除所有內(nèi)存斷點和硬件斷點。 譯者注:從實際使用效果看,硬件斷點在程序重啟后并沒有移除。
F3 - 彈出“打開32位.EXE文件”對話框[Open 32-bit .EXE file],您可以選擇可執(zhí)行文件,并可以輸入運行參數(shù)。
Alt+F5 - 讓OllyDbg總在最前面。如果被調(diào)試程序在某個斷點處發(fā)生中斷,而這時調(diào)試程序彈出一個總在最前面的窗口(一般為模式消息或模式對話框[modal message or dialog]),它可能會遮住OllyDbg的一部分,但是我們又不能移動最小化這個窗口。激活OllyDbg(比如按任務(wù)欄上的標(biāo)簽)并按 Alt+F5,OllyDbg將設(shè)置成總在最前面,會反過來遮住剛才那個窗口。如果您再按一下Alt+F5,OllyDbg會恢復(fù)到正常狀態(tài)。 OllyDbg是否處于總在最前面狀態(tài),將會保存,在下一次調(diào)試時依然有效。當(dāng)前是否處于總在最前面狀態(tài),會顯示在狀態(tài)欄中。
單步步入到下一條命令,如果當(dāng)前命令是一個函數(shù)[Call],則會停在這個函數(shù)體的第一條命令上。如果當(dāng)前命令是是含有REP前綴,則只執(zhí)行一次重復(fù)操作。
與F7相同,但是如果被調(diào)試程序發(fā)生異常而中止,調(diào)試器會首先嘗試步入被調(diào)試程序指定的異常處理(請參考忽略Kernel32中的內(nèi)存非法訪問)。
自動步入,在所有的函數(shù)調(diào)用中一條一條地執(zhí)行命令(就像您按住F7鍵不放一樣,只是更快一些)。當(dāng)您執(zhí)行其他一些單步命令,或者程序到達(dá)斷點,或者發(fā)生異常時,自動步入過程都會停止。每次單步步入,OllyDbg都會更新所有的窗口。所以為了提高自動步入的速度,請您關(guān)閉不必要成窗口,對于保留的窗口最好盡量的小。按Esc鍵,可以停止自動步入。 F8 - 單步步過到下一條命令。如果當(dāng)前命令是一個函數(shù),則一次執(zhí)行完這個函數(shù)(除非這個函數(shù)內(nèi)部包含斷點,或發(fā)生了異常)。如果當(dāng)前命令是含有REP前綴,則會執(zhí)行完重復(fù)操作,并停在下一條命令上。 Shift+F8 - 與F8相同,但是如果被調(diào)試程序發(fā)生異常而中止,調(diào)試器會首先嘗試步過被調(diào)試程序指定的異常處理(請參考忽略Kernel32中的內(nèi)存非法訪問)。 Ctrl+F8 - 自動步過,一條一條的執(zhí)行命令,但并不進(jìn)入函數(shù)調(diào)用內(nèi)部(就像您按住F8鍵不放一樣,只是更快一些)。當(dāng)您執(zhí)行其他一些單步命令,或者程序到達(dá)斷點,或者發(fā)生異常時,自動步過過程都會停止。每次單步步過,OllyDbg都會更新所有的窗口。所以為了提高自動步過的速度,請您關(guān)閉不必要成窗口,對于保留的窗口最好盡量的小。按Esc鍵,可以停止自動步過。 F9 - 讓程序繼續(xù)執(zhí)行。
與F9相同,但是如果被調(diào)試程序發(fā)生異常而中止,調(diào)試器會首先嘗試執(zhí)行被調(diào)試程序指定的異常處理(請參考忽略Kernel32中的內(nèi)存非法訪問)。 Ctrl+F9 - 執(zhí)行直到返回,跟蹤程序直到遇到返回,在此期間不進(jìn)入子函數(shù)也不更新CPU數(shù)據(jù)。因為程序是一條一條命令執(zhí)行的,所以速度可能會慢一些。按Esc鍵,可以停止跟蹤。 Alt+F9 - 執(zhí)行直到返回到用戶代碼段,跟蹤程序直到指令所屬于的模塊不在系統(tǒng)目錄中,在此期間不進(jìn)入子函數(shù)也不更新CPU數(shù)據(jù)。因為程序是一條一條執(zhí)行的,所以速度可能會慢一些。按Esc鍵,可以停止跟蹤。 Ctrl+F11 -Run跟蹤步入,一條一條執(zhí)行命令,進(jìn)入每個子函數(shù)調(diào)用,并把寄存器的信息加入到Run跟蹤的存儲數(shù)據(jù)中。Run跟蹤不會同步更新CPU窗口。 F12 - 停止程序執(zhí)行,同時暫停被調(diào)試程序的所有線程。請不要手動恢復(fù)線程運行,最好使用繼續(xù)執(zhí)行快捷鍵或菜單選項(像 F9)。 Ctrl+F12 - Run跟蹤 步過,一條一條執(zhí)行命令,但是不進(jìn)入子函數(shù)調(diào)用,,并把寄存器的信息加入到Run跟蹤的存儲數(shù)據(jù)中。Run跟蹤不會同步更新CPU窗口。 Esc - 如果當(dāng)前處于自動運行或跟蹤狀態(tài),則停止自動運行或跟蹤;如果CPU顯示的是跟蹤數(shù)據(jù),則顯示真實數(shù)據(jù)。 Alt+B - 顯示斷點窗口。在這個窗口中,您可以編輯、刪除、或跟進(jìn)到斷點處。 Alt+C - 顯示CPU窗口。 Alt+E - 顯示模塊列表[list of modules]。 Alt+K - 顯示調(diào)用棧[Call stack]窗口。 Alt+L - 顯示日志窗口。 Alt+M - 顯示內(nèi)存窗口。
Alt+O - 顯示選項對話框[Options dialog] Ctrl+P - 顯示補(bǔ)丁窗口。 Ctrl+T - 打開 暫停 Run跟蹤 對話框 Alt+X - 關(guān)閉 OllyDbg。 大多數(shù)窗口都支持以下的鍵盤命令: Alt+F3 - 關(guān)閉當(dāng)前窗口。 c.&vWmLSGE Ctrl+F4 - 關(guān)閉當(dāng)前窗口。 F5 - 最大化當(dāng)前窗口或?qū)?dāng)前窗口大小改為正常化。 F6 - 切換到下一個窗口。 Shift+F6 - 切換到前一個窗口。 F10 - 打開與當(dāng)前窗口或面板相關(guān)的快捷菜單。 左方向鍵 - 顯示窗口左方一個字節(jié)寬度的內(nèi)容。 Ctrl+左方向鍵 - 顯示窗口左方一欄的內(nèi)容。 右方向鍵 - 顯示窗口右方一個字節(jié)寬度的內(nèi)容
反匯編窗口中的快捷鍵[Disassembler shortcuts] 當(dāng)CPU窗口中的反匯編面板[Disassembler pane]處于激活狀態(tài)時,您可以使用以下快捷鍵: 回車鍵 - 將選中的命令添加到命令歷史[command
history]中,如果當(dāng)前命令是一個跳轉(zhuǎn)、函數(shù)或者是轉(zhuǎn)換表的一個部分,則進(jìn)入到目的地址。 退格鍵 - 移除選中部分的自動分析信息。如果分析器將代碼誤識別為數(shù)據(jù),這個快捷鍵就非常有用。請參考解碼提示[decoding hints].
F2 -在首個選擇的命令上開關(guān)INT3 斷點[Breakpoint],也可以雙擊該行第二列。 Shift+F2 -在首個選擇命令設(shè)置條件斷點,參見忽略Kernel32中內(nèi)存訪問異常[Ignore memory access violations in Kernel32]。 F4 -執(zhí)行到所選行,在首個選擇的命令上設(shè)置一次性斷點,然后繼續(xù)執(zhí)行調(diào)試程序,直到OllyDbg捕獲到異?;蛘咄V乖谠摂帱c上。在程序執(zhí)行到該命令之前,該一次性斷點一直有效。如有必要,可在斷點窗口[Breakpoints window]中刪除它。 Shift+F4 -設(shè)置記錄斷點(一種條件斷點,當(dāng)條件滿足時一些表達(dá)式的值會記錄下來), 詳情參見斷點[Breakpoint]。 Ctrl+F5 -打開與首個選擇的命令相對應(yīng)的源文件。 Alt+F8 -轉(zhuǎn)到下一個找到參考。 Ctrl+A -分析當(dāng)前模塊的代碼段。
Ctrl+C -復(fù)制所選內(nèi)容到剪貼板。復(fù)制時會簡單地按列寬截斷不可見內(nèi)容,如果希望排除不需要的列,可把這些列的寬度調(diào)整到最小。 Ctrl+E -以二進(jìn)制(十六進(jìn)制)格式編輯所選內(nèi)容。 Ctrl+F -開始命令搜索。 Ctrl+G -轉(zhuǎn)到某地址。該命令將彈出輸入地址或表達(dá)式的窗口。該命令不會修改 EIP。
Ctrl+K - 查看與當(dāng)前函數(shù)相關(guān)的調(diào)用樹[Call tree]。在您用這個功能之前,您必須使用分析代碼功能。
Ctrl+N - 打開當(dāng)前模塊的名稱(標(biāo)簽)列表。
掃描object文件。掃描Object文件。該命令會顯示掃描Object文件對話框,您可以在該對話框中選擇Object文件或者lib文件,并掃描這個文件,試圖找到在實際代碼段中用到的目標(biāo)模塊。 Ctrl+R -搜索所選命令的參考。該命令掃描激活模塊的全部可執(zhí)行代碼,以找到涉及到首個選中的命令的全部相關(guān)參考(包括:常量、跳轉(zhuǎn)及調(diào)用),您可以在參考中使用快捷鍵 Alt+F7 和 Alt+F8來瀏覽這些參考。為便于您使用,被參考的命令也包含在該列表中。
星號[Asterisk](*) -轉(zhuǎn)到原始位置(激活線程的EIP處)。
history]跳到下一條運行過命令的地方;否則跳到Run跟蹤的下一個記錄。 Ctrl+加號 - 跳到前一個函數(shù)開始處。(注意只是跳到,并不執(zhí)行)
history]跳到前一條運行過命令的地方;否則跳到Run跟蹤的前一個記錄。
空格[Space] - 修改命令。您可在顯示對話框中以匯編語言修改實際指令或輸入新指令,這些指令將替換實際代碼,您也可以在想要修改的指令處雙擊鼠標(biāo)。 冒號[Colon]( - 添加標(biāo)簽。顯示添加標(biāo)簽窗口[Add label]或修改標(biāo)簽窗口[Change label],您可在此輸入與首個選擇的命令中的第一個字節(jié)相關(guān)聯(lián)的標(biāo)簽(符號名)。注意,在多種編程語言中,冒號可以是標(biāo)簽的一部分。
label],您可在此輸入與首條所選命令的第一個字節(jié)相關(guān)聯(lián)的注釋(注釋串會顯示在最后一列中)。注意,多種匯編語言使用分號作為注釋開始。您也可以在注釋列雙擊需要注釋的命令行。 命令行插件支持的命令 CALC 判斷表達(dá)式 WATCH 添加監(jiān)視表達(dá)式
在指定地址進(jìn)行反匯編
跟隨命令 ORIG 反匯編于 EIP DUMP 在指定地址進(jìn)行轉(zhuǎn)存
轉(zhuǎn)存為反匯編代碼 DB 使用十六進(jìn)制字節(jié)格式轉(zhuǎn)存 DC 使用 ASCII 格式轉(zhuǎn)存
轉(zhuǎn)存在堆棧格式 DU 轉(zhuǎn)存在 UNICODE 格式
使用十六進(jìn)制字詞格式轉(zhuǎn)存 STK
AS (AS + 地址 + 字符串) 在指定地址進(jìn)行匯編 BP 進(jìn)行條件中斷(有條件的斷點)
中斷在全部調(diào)用 (Call) BPD 清除全部調(diào)用中的斷點 BC 清除斷點 MR 內(nèi)存斷點于訪問時 MW 內(nèi)存斷點于寫入時 MD 清除內(nèi)存斷點 HR 訪問時進(jìn)行硬件中斷 HW 寫入時進(jìn)行硬件中斷
執(zhí)行時進(jìn)行硬件中斷 HD 清除硬件斷點 STOP 停止運行程序調(diào)試 PAUSE 暫停執(zhí)行程序調(diào)試 RUN 運行程序進(jìn)行調(diào)試 GE 運行和通過例外
單步進(jìn)入 Call 中 SO 步過 Call TI 跟蹤進(jìn)入直到地址 TO 跟蹤步過直到地址 TC 跟蹤進(jìn)入直到滿足條件
跟蹤步過直到滿足條件 TR 運行直到返回 TU 運行直到用戶代碼 LOG 查看記錄窗口 MOD 查看模塊窗口
查看內(nèi)存窗口
查看 CPU 窗口
查看 Call 堆棧 BRK 查看斷點窗口
打開選項設(shè)置窗口 EXIT 退出 OllyDbg QUIT 退出 OllyDbg OPEN 打開一個可執(zhí)行文件 CLOSE 關(guān)閉可執(zhí)行文件 RST 重新運行當(dāng)前程序 HELP 查看 API 函數(shù)的幫助 |
|
|