1. 运行命令:
F7
-- 单步执行,遇到Call跟进
F8
-- 单步执行,遇到Call跳过,不进入
F9
-- 运行起来,相当于Visual Studio的F5
Ctrl+F9
-- 运行到本函数结束(Ret指令后)
Alt+F9
-- 跳出系统调用,回到应用程序中
Ctrl+F2
或者点击菜单中的 标记可以重新运行程序
F12
-- 暂停程序,进入死循环后,可以按键 F12 停止运行
F4
-- 执行到光标所在的行(其实相当于一次性断点)。
2. 断点设置:
F2
-- 键可以设置一个断点,在断点上再次按F2键,取消断点。
双击Hex dump栏
-- 也可以设置或取消一个断点
Ctrl+G
-- 打开追踪表达式的窗口,输入API,点OK,即可跳转到指定API起始处。
Ctrl+N
-- 打开程序输入表,找到要下断点的API函数,Enter或双击即可跳转到代码处。
硬断点:
在指定的代码行上,右键-> Breakpoint/Hardware on execution(断点/硬件执行)命令,即可下硬断点
删除:Debug/Hardware breakpoints,打开硬断点窗口,点击删除,即可删除硬断点。
使用用命令设置硬断点:
hr address
例如: hr 0012FFA4 设置硬断点,在访问 0x0012FFA4内存时断下来。
内存断点:
在数据窗口(内存窗口),选中要下断点的地址区域,单击鼠标右键,执行Break/Memory,on write
删除:选中断点处,右键即可看到删除断点的命令。
内存访问一次性断点:Alt+M,即内存窗口。可以看到很多段,在一个段上右键,可以当看到:
Set break-on-access(在访问上设置断点),或按键 F2,对整段内存设置一个访问断点
条件断点:
Shift+F2
-- 设置条件断点,弹出条件窗口,输入条件表达式
节区断点:
Alt+M,跳转到内存模板,选中一个节区,按F2设置断点,即对选中的整个节区设置断点
节区被访问即可以断下来。
3. 查看内存:
选中一个寄存器,右键-> Follw In Dump 在内存窗口查看内存内容
Ctrl+G
-- 输入表达式或地址值,可以查看相应地址的内容
Alt+M
-- 跳到内存窗口,查看模块在内存中的分布(节区的地址范围)。内存模板
4. 修改指令
双击一行指令,或 选中一行,然后按Space键,打开Assemble窗口,几个将当前汇编指令修改。
选中修改的指令,右键-> Copy to excecutable/Selection,将指令保存到PE中。
5. CmdBar 的使用:
? 表达式
计算表达式得知,? 34* 45-4
D 表达式/内存地址
查看内存数据。
DB,DW,DD等
BP 表达式
设置断点,bp GetDlgItemTextA
Hw 表达式
设置硬件写断点
6. 常见的问题处理:
如果汇编代码被识别成了数据,可以右键 Analysis/Analyse code 或 Ctrl+A 强制OllyDbg重新分析代码
双击 EIP 寄存器,可以回到当前按正执行的地方。