欢迎来到C++游戏外挂开发系列教程!
游戏外挂开发是一个既有挑战性又充满乐趣的领域,它让我们有机会深入探索计算机程序设计和系统底层原理。本教程将带领你从零开始,逐步学习如何使用C++编程语言开发游戏外挂,包括各种常见游戏中的作弊功能,如自动射击、透视功能、无敌模式等。通过本系列教程,你将了解到游戏外挂的基本原理、常见开发工具、技术挑战和实际应用技巧,为你打造成一名优秀的游戏外挂开发者提供全面的指导。
上期教程有些同学可能对知识还不够透彻。这一期咱们要认真学习,因为在实战中,理解至关重要。本期我要来再解释一下游戏概念。
在我们开始之前,我们使用了一些技术手段,比如一些辅助工具、程序设计工具、初始变量引用、静态变量引用等,以及模块的初始分配数据。通过程序设计,可以轻松地找到一个应用程序的基础,而无需花费大量的时间,并且程序设计人员必须能够从程序中找到有用的信息。
这项任务虽然很艰巨,有些游戏数据结构可能会比较复杂,比如红黑树、链表等,这样就会增加我们找到游戏数据的努力。因此,我拒绝了一种更通用的方法,我们可以获得什么样的数据。这个方法就是取值法。
该计划的目的是确定程序数据,然后获取程序代码,并改变程序执行情况,以便我们能够发现程序执行过程中存在的问题,并向程序管理员传递正确的生命值。
在团队分离的特定情境下,我们需要构建一个理论。当代码执行到这一点时,我们需要写入一些指令。这些指令的目的是引导代码的执行流程。通常情况下,代码会继续向下执行。然而,当执行到某些关键点时,我们需要改变代码的执行方向,将其导向我们所需的路径。
这涉及到一些高级技术,并且需要小心处理,以避免游戏崩溃的情况发生。我们通过实践来验证这些理论,获取所需的数据,并在必要时返回到先前的执行状态,以确保游戏流程不会中断。虽然这些操作可能有些复杂,但是在处理好的情况下,游戏将能够顺利进行。
关于数据转换的问题,确实是一个挑战。我们需要了解数据的加密方式,以便将原始数据转换为游戏中所需的格式。这可能涉及到各种数学运算,例如加减乘除等,但具体的加密方式可能会因游戏而异,需要我们进行进一步的研究和分析。
我们来到了地址100511a,对吧?这是我们需要关注的地址。我们可以推断这个dx可能是一个负值,对应着坐标的某个方向。接下来是下一段代码,游戏没有断开连接。但当我们走路时,游戏却断开了连接。断开后,我们需要在数据中找到数字,然后显示文本。但有时候,我们找不到这些信息。尽管如此,我们可以确定的是,edxi是坐标。第一个值是三幺,我们可以以此判断位置。dx39的第一个是负责单独的板子,但这段代码似乎有些多余。安德斯可能会得出结论,我们可能需要在后台进行一些修改或复制。
我看看这段代码可能是Hook写的,或者是他复制的。我们看一下ebi,这不是有一个dd吗?将edxi复制到edx,然后将dx复制到这里。我们过来之后,该怎么办呢?我们可以尝试找到机器的方法。我们现在尝试找机器,按edxi。走路。好,然后是来源于哪里?edxi来源于bx eb edi来源于bp加0x8。对,就是这个值,它就是我们的坐标。断一下。重新搜索bp eb edx,查看是否有。好了,没有抑郁就好了。那么edp加减个什么呢?我们已经看到了bp加的四,然后是bp加的12。这是函数参数。
函数参数是从外部传递进来的。bp加的12再加上10可能是第三个。好,我们现在怎么做呢?要退回去,然后下一段,然后走路,断下,然后他们家有挂,直接在直行道返回。然后按一下f8,第二个框,我们一看他是party的,最后一个参数是edx,对吧?还是下一段好。先把断点全部取消了,回到代码,跑去了哪?pc edx。我们看edx是不是走路,好了,edx再往上走。我就不教你们找了,这么早肯定会找到机器,然后运行。这不是我们的重点,下期教程我们可以来讲一下机器的找法。
当代码执行到10005117的时候,我们怎么改呢?先把这个地址破解,OK,有没有同学知道?不是打一个17吗?我们就把这个字节改了,对不对?改个醒目过来,改完键后,我们再下一单机,这是我们下的代码要跟着被改了。跟着被改了,跟着被改。
改之前,先要把这个代码移植到这啊。比如说,我们要改什么呀?先过来行啊。执行到这的时候,我们申请一个钩子空间。申请钩子空间,对吧?申请空钩子空间呢,我们就可以在钩子空间里面运行这两段代码啊,运行这两段代码之后呢,我们再在钩子空间里面复制,然后再复制,再写梦,再醒目对吧,然后再醒目。目录到哪啊?我们八个通用就存序,八个通用寄存器,寄存器,寄存器啊,通用八个计时器。
然后复制了之后,我们还要再下来开启一段空间,对不对?再写将补,再写返回将补,这些返回将母对不对?这些范围降五,写了范围,降五之后无法回返,回到这儿来访问。我们获得的时候继续运行,对不对?返回后台地址继续运行,都是下面的干嘛?他就错了。那我们写在这下面的代码就run了,对不对?相约转码就run就run了。所以在写之前,我们还要把这个这下面的代码写成logo,这把稍微的段落写的都不,写成loop。
这个就是原理以及思路,但是实践起来必须非常严谨啊,非常严谨。这个还是必须非常有用的,一点输出啊,游戏游戏游戏崩溃,你一直在游戏肯定就崩溃了。然后过来,然后BT传递出来,传递代理,代替执行。代替执行编码,然后代替执行编码的长度,代理执行编码,就是我们这个地方这两个东西。这两个东西代替执行了,不是我们我们代理代理,他执行代理他执行说代理的代理资金编码,但是我们在这个里边,我们在这里在这里面代理他执行。
在这个里面,在他执行之后,我们帮他执行,不然不帮他执行肯定崩崩。首先获得这个距离,其实我们可以用指针直接写啊,我们可以用指针直接写,我们可以用纸人直接直接直接按那个指向指向负责啊,但是为了兼容性,兼容性可以怪物,可以以后扩展外部形态,我们用Right。用一个API啊,用一个API Right,Right怎么写的?Right Process Memory,这个API怎么写入虚拟的,例子啊,写日记里啊对吧?好先得到先得到当前句柄函,第八个左右SIC等于 Current Process,这个片是干什么,这个要获取当前距离获取,对好,然后给你拜个MOD代码,那个代码用代码是要申请多大啊?不行,有没有同学知道申请多大,快快想一下骆驼代码申请多大呀?想一想我们申请多大陆的代码,不是这个和打开进程不一样,这个不是打开进程,打开进程是另外一个API。