第 7 章 代码注入¶
想象一下,你能走进一家游戏公司的办公室,坐下来,开始往他们的游戏客户端里添加代码。想象你可以在任何时候、为任何游戏、添加任何你想要的功能。你交谈过的几乎每个玩家都会对如何改进游戏有想法,但据他们所知,这只是白日梦。但你知道梦是用来实现的,你已经学了点内存工作原理,你准备好把规则扔出窗外了。使用代码注入,从所有实际目的来看,你都能变得和任何游戏开发者一样强大。
代码注入是一种迫使任何进程在自己的内存空间和执行上下文中执行外部代码的手段。我之前在第一百二十八页「生产中绕过 ASLR」中谈过这个主题,在那里我展示了如何使用 CreateRemoteThread() 远程破坏 ASLR,但那个示例只触及了表面。在本章的第一部分,你将学习如何创建代码洞穴、注入新线程、劫持线程执行,以迫使游戏执行小段汇编代码。在第二部分,你将学习如何直接把外部二进制注入游戏,迫使游戏执行你创建的完整程序。