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