游戏修改器(一)瞬移

游戏修改器(一)瞬移目录一、概述二、工具三、实现步骤四、总结一、概述第一次尝试写游戏修改器教程,有些忐忑,纠结了好久,不知道写什么游戏好,最后决定找一个二十年前的老游戏,比较简单,很容易上手

目录

一、概述

二、工具

三、实现步骤

四、总结


一、概述

        第一次尝试写游戏修改器教程,有些忐忑,纠结了好久,不知道写什么游戏好,最后决定找一个二十年前的老游戏,比较简单,很容易上手。游戏修改器的知识都是和内存、汇编这些相关,而这些知识也算是比较枯燥的了。我希望出这样的一些教程,能够激起大家学习内存相关知识的兴趣。第一次写这样的文章,希望大家能够看懂理解并自己实现吧。

最后只想再说一句:游戏修改器最基础的概念就是内存,一切操作都是基于内存!!!

二、工具

        Cheat Engine 7.2

        x32dbg

        Visual Studio 2019

        使用Windows MFC开发

三、实现步骤

        我们知道,在cs1.6这个FPS游戏中,每个人物的定位都是由坐标定位的,这个通常都是为笛卡尔坐标系。所以首先需要找到人物的坐标位置。

(1)搜索人物坐标

        ①首先模糊搜索float型未知的初始值(开始不知道是什么类型时,把整形、float、

double都尝试就能找到)

        游戏修改器(一)瞬移

         ② 设置搜索快捷键,这个设置成自己习惯的按键(若和游戏按键冲突会造成不太方便)。

游戏修改器(一)瞬移

         ③在游戏中平地上随意走动,鼠标随意晃动,搜索未变动的数值,跳跃搜索变动的数值,落地后再搜索一次变动的数值,接着搜索未变动的数值。重复上述步骤,直到无法再排除。

游戏修改器(一)瞬移

        删除上面的绿色地址,这些为静态地址,首先排除。接着将剩余的地址添加到地址列表,将其一条条锁定,最后能够寻找到两个地址锁定后人物无法跳跃。其中一个地址存放的为z坐标增量,另一个地址存放的为z坐标的值,被锁定后人物都无法跳跃。 

游戏修改器(一)瞬移

         查看相关内存可知x y z的坐标和x y z轴增量。

游戏修改器(一)瞬移

         附:这是一个动态地址,在重启游戏后会申请地址,所以需要找到它的指针映射集。使用指针扫描功能,重启游戏,重新找到人物坐标,就能找到它的指针和偏移。(注意指针扫描功能保存的文件夹和文件名都不能有中文)最后找到的大部分都可以使用。通过重复的读取内存加偏移的方式能够访问x y z坐标。这个步骤在瞬移的实现中并没有使用,下次使用并介绍其他功能时候再做介绍。

游戏修改器(一)瞬移

         ④接着找出是什么访问了该指针指向的地址

游戏修改器(一)瞬移

⑤查看每一条所在汇编程序,查看指令所访问的地址。这一处指令是只访问我们坐标的指令。 

游戏修改器(一)瞬移

 

(2)Inline Hook

        ①使用Inline Hook,在此处修改程序执行的流程。

被修改指令:

        D8 40 10               – fadd st(0),dword ptr ds:[eax+10]

        D9 CA                   – fxch st(0),st(2)

        8B 44 24 04          – mov eax,dword ptr ss:[esp+4]

跳转指令:(使用了6个字节,覆盖了三条指令,跳转回的地址为三条指令后的地址)

游戏修改器(一)瞬移

 

        ②设置标志位,并设置全局快捷键,当按下某个键时保存当前位置,当移动到某个位置时,按下另一个全局快捷键,瞬移到保存的位置。我的是实现为按下F8 设置一个标志位,跳转到上述地址处,通过[eax+0x8]、[eax+0xc]、[eax+0x10]访问x、y、z坐标并保存,当按下F9时,设置另一个标志位,判断标志位,若被置位,则加载保存的地址,实现瞬移。

        我设置这个标志位是搜索很多0的数据,搜索到后调用VirtualProtectEx函数修改页面属性为可读可写可执行,这些地址用来存储标志位和我们保存的地址。

游戏修改器(一)瞬移

        ③使用x32dbg 完成Flag的判断并保存和加载人物坐标的汇编代码。

游戏修改器(一)瞬移

         ④将上述shellcode放入目标地址,使用跳转指令覆盖原指令并跳转到此处,在这段shellcode后面添加跳转回被覆盖指令的下一条指令的地址处。

游戏修改器(一)瞬移

 调试上述程序,中断查看局部变量,pRemoteBuf为cs1.6进程申请的地址(跨进程申请内存)。

游戏修改器(一)瞬移

        ⑤查看cs1.6游戏中,中断到被修改指令处。 

游戏修改器(一)瞬移

         ⑥跟踪进入pRemoteBuf,单步调试

游戏修改器(一)瞬移

        ⑦ 最后返回到了 mp.dll + 8E8C4。 

游戏修改器(一)瞬移

        ⑧按下 F8 ,查看目标内存地址,成功储存了当前人物坐标。

游戏修改器(一)瞬移

        ⑨人物随意移动到一个地点,按下 F9 ,人物瞬移到储存的位置。成功!

游戏修改器(一)瞬移

 

四、总结

        最后,一张图总结实现思路:

游戏修改器(一)瞬移

最后附上我的视频介绍:

        链接 :百度网盘 请输入提取码

        提取码 :P46A 

        由于各种原因已经好久没有更新过文章了,本来早就打算出几篇游戏修改器的教程,由于需要写毕业论文、找工作等各种原因,一直没有完成,光这篇文章我就硬憋了两天才完成。希望能给大家学习指针内存等知识带来一些兴趣吧。学习之路太过漫长,每次学一些新知识,我就想着学完这些应该能成够入门了,学完才知道,自己还差得远呢,接下来会了解的新的知识我又会产生相同的想法,不知道猴年马月我才能入门啊。我也经常在论坛看网上的高手分享技术,属实羡慕,我也不指望能成为一个高手了,只期望成为一个中手吧(中国之手,国家之手) 哈哈哈。有空我还会继续出修改器的其他功能,总之,希望大家能够看懂这一章节并完成自己的修改器。

        学习过程中还有很多不足,还望朋友们指正!

今天的文章游戏修改器(一)瞬移分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/65369.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注