跳转至

把跳转钩子和 VF 钩子应用到 Direct3D

与我刚才描述的 Adobe AIR 钩子不同,Direct3D(微软 DirectX API 的 3D 图形组件)的钩子非常常见,文档也很完善。Direct3D 在游戏世界无处不在:大多数 PC 游戏使用这个库,这意味着钩住它可以给你一个非常强大的拦截数据和操纵许多不同游戏图形层的方法。你可以用 Direct3D 钩子完成任务,比如检测隐藏敌人玩家的位置、增加黑暗游戏内环境光照,以及无缝显示额外的图形信息。有效使用 Direct3D 钩子需要你了解 API,但本书中有足够多的信息让你入门。

在本节中,我会先高层介绍使用 Direct3D 的游戏循环,然后直接深入 Direct3D 钩子的实现。与 Adobe AIR 钩子不同,我不会详述内部结构并给你分析背景故事,而是介绍最流行的 Direct3D 钩子方法,因为它有详细文档,并被大多数游戏黑客使用。

本书的在线资源包含本节的示例代码;想跟着做现在就找到这些文件。第一部分是一个你可以破解的示例 Direct3D 9 应用程序,位于 GameHackingExamples/Chapter8_Direct3DApplic ation 下。第二部分(实际钩子)位于 Chapter8_Direct3DHook 下。

任何时候都有多个 Direct3D 版本在使用,每个版本都有钩住的方法。本书中,我将专注于钩住 Direct3D 9,因为它是唯一被 Windows XP 支持的常用版本。

 尽管 XP 已经达到生命周期终点,许多欠发达国家的人仍然把它作为主要游戏系统。Direct3D 9 适用于所有 Windows 版本,几乎与其后继者一样强大,所以许多游戏公司仍然更喜欢它而不是没有那么多向后兼容性的新版本。