OD学习笔记1
1.在反汇编面板窗口,Hex dump列:设置或取消无条件断点,对应快捷键是F2键
2.Comment:增加或编辑注释,对应的快捷键是;键,在反汇编面板窗口按下会出现如下图:
3.OD有界面选项(Appearance)和调试选项(Debugging options)等,这些选项配置都保存在ollydbg.ini文件中.
4.UDD用来保存当前调试的一些状态,如断点,注释,以便下次调试时继续使用.
5.od可以通过两种方式加载目标程序调试,一种是通过createprocess创建进程 另一种是利用DebugActioveProcess函数将调试器捆绑在一个正在进行的进程上.
6.F7单步调试,遇到CALL/LOOP跟进,F8不会跟进,
CTRL+F9直到出现RET指定时中断
ALT+F9若进入系统领空,此命令可瞬间回到应用程序领空
F9运行程序.
7.CTRL+F9遇到RET指令是暂停还是步过,可以在选项里设置,方法是:选项-调试设置-调试-执行到RET后,单步步过RET
如下图:
8.断点分类:
(1).INT3断点:下此断点时,地址处的内容被调试器用INT3指令(机器码是CCh)替换,当然,如果自己写调试器,也可用其他一些指令来代替INT3来触发异常
INT3断点好处是可以设置无数个断点,缺点是改变了原程序的指令,容易被软件检测到,例如为了防范API被下断,一些软件会检测API的首地址是否为CCh,
(2).硬件断点和DRx调试寄存器有关,原理是使用4个调试寄存器(DR0,DR1,DR2,DR3)来设定地址,以及DR7设定状态,因此最多只能设置4个断点
设定方法是在指定的代码行单击鼠标右键,执行
删除硬件断点有些麻烦,单击菜单Debug/Hardware breakpoints(调试/硬件断点):
F4可以执行到光标所在的行,也是利用调试寄存器原理,中断后自动删除,相当于一次性硬件断点.
硬件断点的好处是速度快,在INT3断点容易被发现的地方,使用硬件断点代替会有很好的效果,缺点是最多使用四个断点.
(3).OllyDbg可以设置内存访问断点或内存写入断点,原理是对所设的地址设为不可访问/不可写属必,这样当访问/写入时就会产生异常,OD截获异常后比较异常地址是不是断点地址,如果是就中断,让用户继续进行操作.
内存断点的设置和删除都是在鼠标右键菜单中:我们在前面设置硬件断点的菜单中就能看到。
和F4设置一次性硬件断点一样,内存断点同样存一次性断点,
Alt+M显示内存,可以看到很多段,每个段都有不可访问\读\写\执行属性,在相应段上单击右键,会发现一个命令Set break-on-access(在访问上设置断点),其快捷捷是F2键,这个断点是一次性断点,当所在段被读取或执行时就中断,注意不是Set memory breakpoint on access(它不是一次性断点):
9.如想要快速回到当前CPU所在的指令上,可以双击寄存器面板上的EIP即可
10.如想修改EIP,把光标移到所需要的地址上,然后执行右键菜单"New origin here"(此处新建EIP),其他寄存器双击就可以修改
11.比如call 401496,401496对应amsg_exit函数, 光标停在401496,Shift+;键,出来一个标签框,输入字符"amsg_exit",所有调用401496的call都变成call<amsg_exit>形式.
12.用鼠标点击寄存器窗口header,切换不到Debug register,只能通过鼠标右键.