第 8 章 操纵游戏中的控制流¶

迫使游戏执行外部代码确实强大,但如果你能改变游戏执行自身代码的方式呢?如果你能迫使游戏绕过绘制战争迷雾的代码、诱使它让敌人穿过墙壁可见,或者操纵它传给函数的参数呢?控制流操纵让你精确做到这些,它通过拦截代码执行并监控、修改或阻止它,来改变进程的行为。
有许多方法可以操纵进程的控制流,但几乎都需要你修改进程的汇编代码。根据你的目标,你要么需要完全移除进程中的代码(称为 NOP 填充),要么迫使进程把执行重定向到注入的函数(称为钩子)。本章开头,你将学习 NOP 填充、几种类型的钩子,以及其他控制流操纵技术。解释完基础,我会展示如何把这些原理应用到常见的游戏库,比如 Adobe AIR 和 Direct3D。
打开本书资源文件中的 GameHackingExamples/Chapter8_C ontrolFlow 目录,查看下一节和第一百五十三页「钩子重定向游戏执行」的完整示例代码。