OllyDBG断点

INT3 断点

INT3 断点是在汇编指中向下断地址写入0xCC指令,当被调试进程执行INT3指令时产生异常,调试器就会捕获这个异常,从而停在断点处。

在OllyDBG中使用快捷键F2来设置或取消断点。

硬件断点

硬件断点和DRx调试寄存器有关。DRx调试寄存器共有8个(DR0-DR7),硬件断点的原理是使用DR0-DR7设置地址,并使用DR7设置状态,所以最多设置4个断点。

设置硬件断点的快捷键是F4

内存断点

OD可以设置内存访问或写入断点,原理是对所设置的地址赋予不可访问/不可写属性,这样当访问/写入的时候就会产生异常。OD捕获异常后,比较异常地址是不是断点地址,如果是中断。

OllyDBG设置内存断点的方式:点击View -> Memory调出内存窗口,在需要下断点的地方右击选择set memory breakpoint on write

内存访问一次性断点

windows对内存使用段页式的管理方式。在OD里按“Alt+M”快捷键显示内存,可以看到许多个段,每个段都有不可访问、读、写、执行属性。在相应的段上点击右键,会在快捷菜单中发现一个命令“set memory breakpoint on access”,用于对整个内存块设置断点。这个断点是一次性的,当所在段被读取或执行时就会中断。如果想捕获调用或返回某个模块,该类断点就非常有用。

消息断点

Windows本身是由消息驱动的,如果调试时没有合适的断点,可以尝试使用消息断点,当某个特定窗口函数接受到某个指定消息时,消息断点将使程序中断。

消息断点与INT 3断点的区别在于:INT 3断点可以在程序启动之前设置,消息断点只有在窗口被创建之后才能被设置并拦截消息的

断点设置方法:View -> Windows列出窗口中相关参数

参考博客

OD无法反汇编代码

逆向脱ASPack壳找OEP时发现程序在跳转到OEP后OD无法分析出代码,如下图。按Ctrl+A或者右键删除分析即可

参考

原文地址:https://www.cnblogs.com/countfatcode/p/14525827.html