跳转至

跟踪汇编代码

当你对任何程序运行跟踪时,OllyDbg 会在每个执行的操作上单步执行,并存储关于每个操作的数据。跟踪完成后,记录的数据会显示在「运行跟踪」窗口中,如图 2-4 所示。

「运行跟踪」窗口由以下六列组成:

返回(Back):操作与当前执行状态之间记录的操作数

线程(Thread):执行该操作的线程

图 2-4 运行跟踪窗口

模块(Module):操作所在的模块

地址(Address):操作的地址

命令(Command):执行的操作

修改的寄存器(Modified registers):操作更改的寄存器及其新值

破解游戏时,我发现 OllyDbg 的跟踪功能在 Cheat Engine 扫描无法得出结论时,对帮助我找到指向动态内存的指针路径非常有效。这是因为你可以从内存被使用的点开始,沿着「运行跟踪」窗口中的日志向后回溯,直到它从静态地址被解析出来的点。

这个强大功能的有用性只受使用它的黑客创造力的限制。虽然我通常只用它来找指针路径,但我遇到过其他几个它证明极有价值的情况。第三十六页「OllyDbg 表达式实战」中的轶事将有助于阐明跟踪的功能和威力。