Ollydbg 是一个新的 32 位的汇编层调试软件。适应于 windows98、me、2000、xp 和 2003 操作系统。由于他具有图形窗口界面,所以操作方便、
直观,是 cracker 的好工具。
由于 Ollydbg 没有了 TRW2000 的万能断点,所以许多的新手感觉到用 Ollydbg 断点不好找。现在我来的说说 Ollydbg 下中断的几种方法。本人是个
菜鸟,水平有限,可能不能完整的写出来,也可能存在错误。请大家指正。
我所表述的是 Ollydbg v1.09d 中文版,其他版本和英文版下自己参考。
第一 寻常断点
Ollydbg 中一般下中断的方法,就是在程序的地址处用鼠标选择这一行。然后按 F2 键,这时被选择的那一行的地址会变成别的颜色,就表示这个
地址处下了中断。然后运行程序时只有到这个地址处就会被 Ollydbg 中断。
这个方法用的比较多,所以把他称作寻常断点。
如果有命令行插件,就可以在命令窗口中输入 BPX xxxxxxxx 下断点。
优点:只要自己怀疑是重要的代码处都可以下这种下断点,不受条件的限制,所以方便实用。
缺点:如果不知道代码功能下断点具有盲目性。
第二 API 断点
Ollydbg 中一般下 API 中断的方法,有二种。
1.在代码窗口中点鼠标右键,出现功能菜单。在[搜索]选择项下有〔当前模块的名称〕和〔全部模块的名称〕俩项,选择其中的一项就打开了程
序调用 API 的窗口,在这个窗口中选择你要跟踪的 API 函数名。双击这个函数就能到程序的调用地址处。然后用 F2 下中断。也可以在 API 窗口中
选择需要跟踪的函数点鼠标右键出现功能菜单,选择〔在每个参考设置断点〕。同样下了断点。
快捷方式:Ctrl+N
2.在命令行窗口中输入 BPXAPI 函数名或者 BPAPI 函数名 后回车。这时出现了所有调用这个函数的地址的窗口,在这个窗口中可以看到调用这个
API 函数的地址已改变了颜色。说明下好了断点。
说明一下:BPX 一般中断在程序调用 API 的地址处。BP 会中断在 API 的写入地址处。二这有所不同,根据需要选择。
优点:这种方法下的断点是针对每一个 API 函数的,所以具有明确的目的。
缺点:关键的 API 函数不容易找到。所以有时下的断点没有作用。
第三内存断点(跟踪关键数据的断点)
Ollydbg 中的内存断点相当于 TRW 中的 bpm 断点。
下断点的方法是:在程序运行中断时选择界面中的转存窗口,用光标选择内存中的一段关键数据(颜色会改变),然后右击鼠标出现功能菜单。
选择〔断点〕项,其中有二个选择〔内存访问〕和〔内存写入〕。
〔内存访问〕断点是程序运行时要调用被选择的内存数据时就会被 Ollydbg 中断,根据这个特点在破解跟踪时只要在关键数据内存中下中断就可
以知道程序在什么地方和什么时候用到了跟踪的数据。对于一些复杂算法和流程变态的算法跟踪有很大的帮助。从破解上讲,一个注册码的生成
一定是由一些关键数据或者原始数据计算来的。所以在内存中一定要用到这些关键数据。那么〔内存访问〕断点就是最好的中断方法。
〔内存写入〕断点是程序运行时向被选择的内存地址写入数据时就会被 Ollydbg 中断。根据这个特点在破解时可以跟踪一个关键数据是什么时候
生成的,生成的代码段在那个地方。所以一个关键的数据如果不知道他的由来就可以用〔内存访问〕断点查找计算的核心。
内存中断的下断点还有另外的一种方法:程序运行时如果知道关键的数据,比如我们输入的试验码、程序生成的序列号等。这时在内存中一定存
在这些数据。用 Alt+M 打开内存窗口,在这个窗口中搜索知道的关键数据。用光标选择这些数据同样下内存中断,这种方法更容易找的关键的数
据。
优点:断点是直接面向关键数据的,所以比较容易到核心部分。
缺点:内存断点重新运行后会消失,干扰比较多。
第四硬件断点(跟踪关键标志的断点)
硬件断点是 Olldbg 所特有的断点,他不会因为重新运行就销毁,只要不删除。跟踪这个程序时就有效。但他在 98 系统下会不起作用。
硬件断点是根据关键标志回逆到关键代码的好方法。下中断的方法和内存断点的方法相同,有三个方式〔硬件访问〕、〔硬件写入〕、〔硬件执
行〕。一般用前 2 个。他也同样有内存断点的特性,所以可以用内存断点的地方也可以用硬件断点。这里介绍利用他来跟踪注册标志的使用方法,
一般软件的注册都用到了标志比较。即在内存地址中有一个标志,在判断是不是注册时比较标志的值。不同的值表示不同的注册状态。这个标志
的地址一般比较固定。根据这个特点可以下硬件断点来跟踪标志位是什么地方被标志的。
方法:在转存窗口中选择到标志存放的内存地址处,然后选择标志值。下〔硬件写入〕中断(根据标志的字节下不同的长度)。重新运行程序你
会发现 Ollydbg 会不断的中断在这个标志的内存地址处。在功能菜单的〔调试〕选项下选择〔硬件断点〕就打开了硬件断点的窗口,在这个窗口
中选择〔跟踪〕,这时转存窗口就会来到被下中断的内存地址处。运行程序跟踪内存地址中的值就会知道被赋标志的代码,跟踪到计算的核心。
〔硬件访问〕的使用可以知道程序在运行时多少地方用到了这个注册标志。对于破解复杂效验的程序十分的有效