OllyDbg 用户界面速览¶
前往 OllyDbg 网站(http://www.ollydbg.de/),下载并安装 OllyDbg,然后打开程序。你应该会看到图 2-1 中工具栏下方的多窗口界面区域。
这个工具栏包含程序控制①、调试按钮②、转到按钮③、控制窗口按钮④和设置按钮⑤。
三个程序控制按钮分别允许你打开可执行文件并附加到它创建的进程、重新启动当前进程、或终止当前进程的执行。你还可以分别用热键 F3、ctrl-F2 和 alt-F2 完成这些功能。要附加到已经运行的进程,请点击「文件」→「附加」。
调试按钮控制调试器操作。表 2-1 描述了这些按钮的作用、热键和功能。这张表还列出了三个没有在调试工具栏上设置按钮的有用调试器操作。
按钮热键功能播放(Play)F9恢复进程的正常执行。暂停(Pause)F12暂停进程内所有线程的执行,并在当前正在执行的指令处打开 CPU 窗口。步入(Step into)F7单步执行到下一个要执行的操作(会深入函数调用)。步过(Step over)F8单步执行到当前作用域内的下一个操作(会跳过函数调用)。跟踪步入(Trace into)ctrl-F11运行深度跟踪,跟踪执行的每一个操作。跟踪步过(Trace over)ctrl-F12运行被动跟踪,只跟踪当前作用域内的操作。

按钮热键功能执行到返回(Executectrl-F9执行,直到在当前作用域内遇到 until return)返回操作。
ctrl-F7在每个操作上自动单步执行,在反汇编窗口中跟随执行。这让执行看起来像动画。
ctrl-F8也让执行动画化,但步过函数而不是步入函数。
esc停止动画,在当前操作处暂停执行。
「转到」按钮会打开一个对话框,要求输入十六进制地址。输入地址后,OllyDbg 会在该地址打开 CPU 窗口并显示反汇编。CPU 窗口获得焦点时,你也可以用热键 ctrl-G 显示该信息。
控制窗口按钮打开不同的控制窗口,这些窗口显示有关正在调试进程的有用信息,并暴露更多调试功能,比如设置断点的能力。OllyDbg 一共有 13 个控制窗口,它们可以同时打开在多窗口界面中。表 2-2 按它们在窗口按钮工具栏上出现的顺序描述了这些窗口。
窗口热键功能日志(Log)alt-L显示日志消息列表,包括调试输出、线程事件、调试器事件、模块加载等等。模块(Modules)alt-E显示加载到进程中的所有可执行模块列表。双击模块可在 CPU 窗口中打开它。内存映射(Memory map)alt-M显示进程分配的所有内存块列表。双击列表中的块可打开该内存块的转储窗口。线程(Threads)显示进程中运行的线程列表。对于列表中的每个线程,进程都有一个叫做线程信息块(TIB)的结构。OllyDbg 允许你查看每个线程的 TIB;只需右键单击线程并选择「转储线程数据块」。窗口热键功能窗口(Windows)显示进程持有的窗口句柄列表。右键单击列表中的窗口,可以跳转到它的类过程(窗口收到消息时被调用的函数)或在其上设置断点。句柄(Handles)显示进程持有的句柄列表。(注意,Process Explorer 的句柄列表比 OllyDbg 好得多,我将在第 3 章讨论。)CPUalt-C显示主反汇编界面,控制调试器的大部分功能。补丁(Patches)ctrl-P显示你对进程内模块所做的任何汇编代码修改列表。调用栈(Call stack)alt-K显示活动线程的调用栈。进程停止时窗口会更新。断点(Breakpoints)alt-B显示活动调试器断点列表,允许你开关它们。引用(References)显示引用列表,通常保存多种类型搜索的搜索结果。运行搜索时它会自动弹出。运行跟踪(Run trace)显示调试器跟踪记录的操作列表。源(Source)如果存在程序调试数据库,显示反汇编模块的源代码。
最后,「设置」按钮打开 OllyDbg 设置窗口。现在保持默认设置即可。
现在你已经参观了 OllyDbg 主窗口,让我们更仔细地探索 CPU、补丁和运行跟踪窗口。作为游戏黑客,你会大量使用这些窗口,熟悉它们是关键。