将运动模拟器连接到 GTA

逆向工程 反编译 x86 C++ 转储
2021-07-03 12:50:44

我正在尝试将现实生活中的运动模拟器连接到我的电脑游戏装备,一次一个游戏。由于所有 GTA 游戏都是超级可破解的(在物理、地图和纹理破解方面),而且 GTA5 即将登陆 PC 的事实,我认为这将是一个很酷的开始。

从运动模拟器方面来看,拉动馈送最合乎逻辑的点似乎是车辆的悬架。速度、质量、障碍物、操控性等......已经由游戏计算出来,并且镜像悬挂应该是一种非常可信的体验。

这听起来可行吗?有没有人试过将现实生活中的机器与现有的游戏车辆配对?任何有关这将带来什么的经验或见解将不胜感激。

从我对这个项目进行的研究来看,最难的部分似乎是在游戏已经编译后从游戏内事件中获取实时反馈。我希望有一些现有的调试触发器或控制器反馈到位。或者,探索游戏的汇编代码级别版本以插入对外部脚本的调用的可能性有多大?我意识到完全反编译为高级语言是 99% 再也不会在如此复杂的游戏中工作了。

感谢任何指向正确方向的有用贡献......

1个回答

不确定我是否以正确的方式得到了这个,但想要在游戏中创建模拟汽车的物理反馈到您的真实座椅/驾驶舱,并从那里驾驶它。(类似于飞机硬件模拟器)

  1. 驾驶

    这应该很容易,只需使用操纵杆和一些键盘消息插入器(或真正的黑客键盘)。我假设你已经知道如何做这部分

  2. 回馈

    我会创建一些拥有游戏进程的启动应用程序,这样我就可以完全访问它的内存。然后我会跟踪分配给它的所有内存块并扫描定期更改,然后将其绘制为一些视频叠加层并玩游戏以查看哪些块根据您在游戏中的操作而发生变化。

    好的方法是将内存块记录到文件中以备以后检查,一旦您获得可以保存模拟汽车参数的内存位置的候选者,然后尝试破解它们以查看是否与游戏中的汽车速度、方向匹配......

    您还需要一些块的ID,以便在其中查找特定模式,以便即使重新分配(或重新启动游戏)也可以找到相同的块

  3. DLL 的

    如果游戏中使用任何DLL像物理模拟特定的任务,那么你是幸运的,可以创建包装DLL这将有相同的接口原DLL因此,创建DLL它将只调用原始DLL的调用并添加一些日志记录,以便您查看所需的内容(类似于第 2 项)。一旦确定了您需要什么,您就可以轻松地将驱动代码插入其中...

[笔记]

很长一段时间没有做这样的事情,所以我不知道现在的工具。当时我最喜欢的工具是适用于 Windows 9x、nt、w2k、xp 的DLPORTIO驱动程序。它可以完全访问从 IO 到内存的所有内容,无一例外......

如果游戏有玩家作为一个复杂的类,那么你可以尝试在内存中搜索玩家名称并在其位置周围寻找你需要的参数