跳转至

创建代码补丁

OllyDbg 的代码补丁允许你为想要破解的游戏制作汇编代码修改,省去了为特定游戏设计工具的需要。这让控制流破解(通过游戏设计缺陷、x86 汇编协议和常见二进制结构的组合来操纵游戏行为)的原型制作变得容易得多。

游戏黑客通常把完善的补丁作为机器人工具套件中的可选功能,但在某些情况下,让这些功能持久化对最终用户来说实际上更方便。幸运的是,OllyDbg 补丁提供了你需要的完整功能,只用 OllyDbg 就能设计、测试并永久保存对可执行二进制的代码修改。

要放置补丁,在 CPU 窗口中导航到要修补的汇编代码行,双击要修改的指令,在弹出提示中放置新的汇编指令,点击「汇编」,如图 2-3 所示。

始终注意补丁的大小——你不能随心所欲地调整大小和移动汇编代码。比要替换的代码大的补丁会溢出到后续操作中,可能移除关键功能。比要替换的操作小的补丁是安全的,只要选中「用 NOP 填充」。这个选项用无操作(NOP)命令填充任何废弃字节,NOP 是执行时不做任何事的单字节操作。

你放置的所有补丁都会连同地址、大小、状态、旧代码、新代码和注释一起列在「补丁」窗口中。选择列表中的补丁可以访问一组小巧但强大的热键,如表 2-3 所示。

操作功能 enter跳转到反汇编器中的补丁。spacebar打开或关闭补丁。F2在补丁上放置断点。shift-F2在补丁上放置条件断点。shift-F4在补丁上放置条件日志断点。del只从列表中移除补丁条目。

在 OllyDbg 中,你还可以把补丁直接保存到二进制中。首先,在反汇编器中右键单击并点击「复制到可执行文件」→「所有修改」。如果只想复制某些补丁,请在反汇编窗格中突出显示它们,然后按「复制到可执行文件」→「所选」。