OllyDbg断点 (摘自TT小组汉化的OLLYDBG.HLP)

OllyDbg支持数种不同类型的断点:

- 一般断点[Ordinary breakpoint], 将您想中断的命令的第一个字节,用一个特殊命令INT3(调试器陷阱)来替代。您可以在反汇编窗口中选中要设断点的指令行并按下 F2 键就可以设定一个此类型的断点。也可以在快捷菜单中设置。再次按下 F2 键时,断点将被删除。注意,程序将在设断指令被执行之前中断下来。

INT3断点的设置数量是没有限制的。当您关闭被调试程序或者调试器的时候,OllyDbg将自动把这些断点保存到硬盘中,永远不要试图在数据段或者指令的中间设置这种断点,如果您试图在代码段以外设置断点,OllyDbg将会警告。您可以在安全选项[Security options]中永远关闭这个提示,在某些情况下调试器会插入自带的临时INT3断点。

- 条件断点[Conditional breakpoint] (快捷键 Shift+F2) 是一个带有条件表达式的普通INT3断点。当调试器遇到这类断点时,它将计算表达式的值,如果结果非零或者表达式无效,将暂停被调试程序,当然,由条件为假的断点引起的开销是非常高的(主要归因于操作系统的反应时间)。在Windows NT、奔腾Ⅱ/450处理器环境下OllyDbg每秒最多处理2500个条件为假的断点。条件断点的一个典型使用情况就是在Windows消息上设置断点(比如 WM_PAINT)。为此,您可以将伪变量 MSG 同适当的参数说明联合使用。如果窗口被激活,参考一下后面的消息断点描述。

- 条件记录断点 [Conditional logging breakpoint] (Shift+F4)是一种条件断点,每当遇到此类断点或者满足条件时,它将记录已知函数表达式或参数的值。例如,您可以在一些窗口过程函数上设置记录断点并列出对该函数的所有调用。或者只对接收到的WM_COMMAND消息标识符设断,或者对创建文件的函数(
CreateFile)设断,并且记录以只读方式打开的文件名等,记录断点和条件断点速度相当,并且从记录窗口中浏览上百条消息要比按上百次F9轻松的多,您可以为表达式选择一个预先定义好的解释说明。

您可以设置通过的次数 - 每次符合暂停条件时,计数器就会减一。如果通过计数在减一前,不等于零,OllyDbg就会继续执行。如果一个循环执行100次(十进制),在循环体内设置一个断点,并设置通过次数为99(十进制)。OllyDbg将会在最后一次执行循环体时暂停。

另外,条件记录断点允许您传递一个或多个命令给插件[plugins]。例如,您需要使用命令行插件改变一个寄存器的内容,然后继续执行程序。

- 消息断点[Message breakpoint]和条件记录断点基本相同,除了OllyDbg会自动产生一个条件,这个条件允许在窗口过程的入口处设置某些消息(比如WM_PSINT
)断点,您可以在窗口[Windows]中设置它。

- 跟踪断点[Trace breakpoint] 是在每个选中命令上设置的一种特殊的INT3断点。如果您设置了Hit跟踪[hit trace] ,断点会在命令执行后移除,并在该地址处做一个标记。如果您使用的是Run跟踪[run trace] ,OllyDbg会添加跟踪数据记录并且断点仍然是保持激活状态。

- 内存断点[Memory breakpoint] OllyDbg每一时刻只允许有一个内存断点。您可以在反汇编窗口、CPU窗口、数据窗口中选择一部分内存,然后使用快捷菜单设置内存断点。如果有以前的内存断点,将被自动删除。您有两个选择:在内存访问(读,写,执行)时中断,或内存写入时中断。设置此类断点时,OllyDbg将会改变所选部分的内存块的属性。在与80x86兼容的处理器上将会有4096字节的内存被分配并保护起来。即使您仅仅选择了一个字节,OllyDbg 也会将整个内存块都保护起来。这将会引起大量的错误警告,请小心使用此类断点。某些系统函数(特别是在Windows95/98下)在访问受保护的内存时不但不会产生调试事件反而会造成被调试程序的崩溃。

- 硬断点[Hardware breakpoint](仅在Windows ME,NT或2000下可用)在80x86兼容的处理器上,允许您设置4个硬件断点。和内存断点不同,硬件断点并不会降低执行速度,但是最多只能覆盖四个字节。在单步执行或者跟踪代码时,OllyDbg能够使用硬断点代替INT3断点。

- 内存访问一次性断点[Single-shot break on memory access] (仅在Windows NT或2000下可用)。您可以通过内存窗口的快捷菜单(或按F2),对整个内存块设置该类断点。当您想捕捉调用或返回到某个模块时,该类断点就显得特别有用。中断发生以后,断点将被删除。

- 暂停Run跟踪[Run trace pause] (快捷键:Ctrl+T)是在每一步Run跟踪[run trace] 时都要检查的一个条件集.您可以在EIP进入某个范围或超出某个范围时暂停,某个条件为真时暂停,或者命令与指定的模式匹配时暂停,或者当命令可疑的时候暂停。注意,这一选择会极大的(高达20%)降低Run跟踪的速度。

OllyDbg也可以在一些调试事件[debugging events]上暂停程序执行。比如加载或卸载DLL,启动或终止线程,或者程序发出调试字符串的时候。

原文地址:https://www.cnblogs.com/kanone/p/2100596.html