找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1388|回复: 0

如何为GTA V开发mod菜单(Guide v2)

[复制链接]
  • TA的每日心情
    开心
    2022-3-11 09:03
  • 人在旅途

    发表于 2018-11-7 16:35:07 | 显示全部楼层 |阅读模式
    大家好(我回来了),

    我决定写一个帖子来解释如何为GTA V开发mod菜单,我希望这对你们有些帮助,这是我第一篇教程的更新版本如何开发mod菜单GTA V(指南)所以我将使用旧的东西,并替换/添加一些新的东西。

    所以,我会尽量清楚(英语不是我的主要语言)但你有两种类型的菜单可能。

    - 外部菜单:一个不注入任何东西的菜单,你只需在游戏内存中读取和写入你自己的字节,不需要dll。
    - 内部菜单:你需要像游戏库(dll文件)那样在游戏中注入一些东西,你需要一个像Xenos Injector这样的注射器(你也可以使用作弊引擎)。

    要创建外部菜单,您可以使用多种语言,如C ++,C#,Java和许多其他语言,外部菜单仅使用ReadProcessMemory和WriteProcessMemory函数。

    事实上,你需要打开进程句柄并做你想做的事情,我在C#中发布了一个很好的样本(我将很快开发一个新版本,因为当前的样本是针对1.41版本的gta,当前版本是1.43):C#SirMestre外部源代码

    最好的方法是知道如何在我们的过程中读取和写入自定义数据(在我们的例子中是GTA5.exe),为此,你需要找到指针和偏移量你想编辑(我建议你阅读并查看一些关于youtube上的作弊引擎/重新分类的视频)。

    这是一个很好的教程开始:作弊引擎6.7导师黑客教程视频指南(我不能在这里发布外部链接对不起,UC不允许,所以google吧)

    但是无论如何要关注指针,Windows使用一些像地址空间布局随机化(ASLR)这样的保护,每次你启动游戏时随机化内存地址,所以你需要找到基本指针,而不是游戏使用的当前指针(你需要多次指针扫描你的指针)作弊引擎找到正确的基指针)。

    如果您的基指针是正确的,那么当您重新启动游戏时,您将能够使用相同的基本指针(Steam和Social Club版本不同,因此指针有时也不同)。

    要创建内部菜单,程序有点困难,您需要在游戏过程中注入自己的库(dll文件)并了解逆向工程的基础知识(我建议您阅读一些书籍,如The Rootkit Arsenal或Practical恶意软件分析,如果你可以但不是第一次,从不同的互联网资源开始)。

    您的dll需要包含您自己的代码才能直接执行游戏功能(注意:您可以在内部菜单中使用外部功能,但不能在外部功能中使用内部功能)。

    游戏功能称为“本机”,您可以在此处获取GTA Native DB网站上的原生列表:
    游客,如果您要查看本帖隐藏内容请回复
    开发了

    一些基本菜单,如Nano Base 更新)Nano42 Base这是启动内部菜单编程的一个很好的示例(我更喜欢使用OriginBase和我的无论如何自己的自定义代码或ImGui自定义基础,不要从ImGui开始)。

    每次更新时,您都需要获取更新的natives.h文件(可在GTA Native DB网站上获得)和更新的CrossMapping文件(其中一些文件可在pastebin上或直接在此论坛上获得)。

    您需要使用新更新的本机替换所有旧本机(比较旧文件和新文件之间的哈希值以更新它们)。

    natives.h文件包含社区发现的所有游戏功能,此文件每天更新​​。

    交叉映射文件包含所有游戏函数的初始哈希值和当前哈希值,您可以在此处阅读有关此内容的一些信息:Mike的Native CrossMap Patcher

    重要的事情:

    交叉映射文件主要使用gta的反编译脚本生成(您可以使用OpenIV如果你需要自己做,你可以开发自己的文本解析器来重新生成一个新的交叉图文件)。
    如果使用交叉映射文件,则需要在mod菜单中更新本机注册表,此代码用于在与哈希对应的内存中查找游戏功能(这类似于虚拟表但仅适用于gta)

    为了清楚起见,一些菜单使用签名(模式)来查找一些元素,模式用于避免ASLR保护,这是一个字节数组,如:

    引用:
    76??8B??48 8D 0D?????8D???
    哪里“?” 是ASLR可以在每次启动时更改的可能随机字节,这是在内存中查找内容而不是指针的最佳方法,因为指针会更改每个更新,模式可以重复使用,您肯定会理解它。

    不要犹豫,在youtube上查看其他游戏中的“模式扫描”。

    关于模式(签名),我建议你阅读我的第一个教程中可用的信息,如果你没有旧版本的游戏转储,你就不能真正得到它们,因为游戏现在被混淆了,不像以前那样。

    顺便说一句,您可以使用调试器调试游戏并在现场捕捉签名,但您也可以将游戏的旧转储与新的转储进行比较,以找到一些签名并找到正确的签名。

    如果您处于在线模式,请不要尝试直接在游戏过程中附加调试器,您将被禁止,仅在故事模式下进行测试,您不能被禁止,实际上,您也可以使用ScyllaHide来避免一些反调试器保护,但我建议你试着自己绕过它们。

    如果你决定开发一个内部菜单,你需要知道你能够像外部菜单一样使用指针/签名,但如果你想使用游戏功能,你需要挂钩你的函数调用以避免禁令,我建议你阅读这一部分:

    你需要在第一时间了解这个理论,一个简单的绕道就足够了,一些库可以用来挂钩而不使用汇编代码,这里是最常用的库:MinHook或PolyHook

    为了提高你的水平,请不要犹豫观看一些教程,如Guidancehacking网站和UC wiki:

    游客,如果您要查看本帖隐藏内容请回复


    不要犹豫,使用论坛的其他部分阅读一些文档,你可以找到一些关于abheat绕过的信息和一些非常有趣的工具,你也可以使用其他游戏资源来了解一些新的东西,最重要的是阅读,再次阅读和阅读,请在不知情的时候直接询问,自己找之前,努力。

    请享用

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|G神论坛

    GMT+8, 2024-3-29 14:18 , Processed in 0.121980 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.