CE自带新手教程详解

文章详细介绍了CE自带的新手教程,包括代码注入技巧、多级指针定位、以及如何利用共享代码在游戏中的应用,涉及游戏漏洞利用和反汇编知识。
摘要由CSDN通过智能技术生成

完整视频讲解

CE自带入门教程完整演示

B站同名账号KrnlsYs

第1~6关 见上篇文章

CE自带新手教程 1-6关详解

第七关、代码注入

这关稍微有点难度,简单来说,就是在我们比较关心的游戏的代码,跳转到自己的代码,做完自己想做的事情以后再给他跳回去,比如本例中是想让减1血反而变成加2血

还是先搜到生命值,不演示了。找到以后查找写入,打一下出来一条代码,点显示反汇编

sub来自英文,即减法的意思。左边是目标操作数,右边是源操作数,很显然[ebx+4A4]即血量,这代码的意思就是让我们的血量-1

这关对我们的要求是减1血反而加2血,因此有两种方式,先介绍CE想让我们用的方法。

选中这一行代码,点击工具,再点击自动汇编

选择模板,代码注入,确定

会生成代码模板,然后按照如下蓝色注释改写

//蓝色的字 是注释,可以忽略。

写好之后点击确定,再回到Tutorial点击攻击我,会发现每次血量没有减少,而是增加了2

第二种简单方法是,在反汇编器中,直接双击那一行,把sub改成add,把1改成2即可。但是此方法有局限性,因为有时候可能使这条指令变长导致覆盖后边的代码,执行就错误了,不理解没关系,就先用第一种

第八关、多级指针

类似第6关,只不过这关是4级指针,更复杂一点

首先先找到这个值,过程和之前一样,不再演示

找到以后右键查找写入,然后点击修改值,出现一条代码如下

双击打开

和之前第六关分析的一样,左边是目标操作数,右边是源操作数。[esi+18]指的是esi+18里边的值,esi+18就是当前这个值的地址,而eax是我们点击修改值之后的结果,因此只要找到esi就能找到这个地址的来源
16进制搜索esi,即搜索0x177BAF0,找到一个结果
右键查找访问,点击修改值,此时出现两条代码
其中第二条前后都是esi寄存器,找基址的过程中应该避免选择这样的指令。原因是双击打开后,显示的寄存器是指令执行之后的状态,这意味着左右两个esi的意义不同,左边的已经被赋值了,而右边的是赋值之前,我们想找赋值之前的结果,但实际上只显示了赋值之后的结果
所以选择第一条
很显然来自于ESI,所以继续搜索esi
继续查找访问,修改值,和之前一样的流程
选择第一条,原因同上
继续查找esi
找到四个结果,依次右键查找访问,然后修改值,看看哪个有代码出现即可。我这里是第一个
选择第一条
继续跟踪ESI,即可找到如下绿色的静态地址
加入下方地址列表后双击打开看一下
发现比较奇怪,出现了一个名字"Tutorial-i386.exe"
这实际上是模块名,指的是名为"Tutorial-i386.exe"的模块加载的地址,加上后边的2566E0,这实际上是一个相对地址,模块加载的地址,加上这个固定的相对地址总能找到这个意义相同的地址,再通过多级偏移就可以定位到我们想要的数据
把这4级按如图所示的顺序添加,可以发现此时已经指向了正确的数据
最后根据本关提示,将值锁定为5000,然后点击修改指针即可过关

第九关、共享代码

本关模拟了一个游戏场景,敌人比我们血量多,伤害也比我们血量高

点击这个按钮自动Play发现我们被击败了,可以利用之前学过的代码注入的方式,找到扣血代码做某些处理。

根据提示,本关生命值是浮点数,且敌人和自己共享扣血代码,也就是说自己扣血和敌人扣血都经过这里,所以不能简单的nop,否则自己和敌人会一起无敌

下面开始解决这个问题

首先还是先找到自己的生命值,搜索浮点数,过程略。找到以后查找写入,再次攻击自己,出现一条扣血代码。

根据之前找基址的过程可知,血量偏移就是4,ebx就是本人对象。

右键,选择如下,选择查找代码访问的地址,会弹出一个框,里边是空的,没关系

此时分别攻击四位玩家一次,注意要按顺序点

发现出现四条,并且计数都是1,因为我们确实攻击了1次。但是值似乎很奇怪,这是因为默认是整数显示,但这关的生命值是浮点数,如果想显示浮点数可以右下角切换,不过这不重要

注意按顺序,依次双击这四条代码就会把地址加入到地址列表(红框所示),然后就可以关掉它了

点击红色箭头处按钮

然后点击工具-> 对数据/结构进行解析

会弹出一个如下窗口

点击左上角文件,添加新地址,然后再点击左上角文件,添加新组,在新组中添加第二个地址。效果如下

现在是两个组,每组两个地址。之所以这样设置,是因为玩家1和玩家2属于同一阵营,玩家3和玩家4属于同一阵营,按照阵营分组

按顺序,复制我们之前双击加到地址列表的4个地址,并粘贴到这4个textbox里,并且对每一个地址都-4

这就是为什么之前强调一定要按顺序,如果没有按顺序的话,你可能会误把友军和敌军添加到同一个分组导致分析错误

-4的原因是,之前分析过,生命值偏移是4,所以生命值地址-4 就得到了玩家对象的地址。我们现在要分析玩家对象

如下所示

点击结构,定义新结构

名字无所谓,大小默认即可(实际上是根据游戏不同而设定,但是这只是个教学案例,所以默认的大小4096就足够了)

点击确定后结果如下

其中不同颜色有不同含义,我这里的颜色是我自己设置的,你们可能与我不同。我这里的粉色意思是组之间不同,这也正如我们所料,因为我们就是按照阵营划分的分组

也就是说,玩家对象+偏移0x10 代表的是阵营,1是友军,2是敌军

知道了阵营的偏移就很好解决了,还是先查找写入自己血量的地址,点击显示反汇编

在反汇编器定位到这条代码,然后和第七关一样,选择工具,自动汇编,模板,代码注入

别的地方都不用动,newmem处按照如下所示填写

具体原因见蓝色部分注释即可,对完全没接触过汇编的同学可能有点难度

点击执行,确定

然后来到游戏,点击

敌人被秒杀了,我们还活着 顺利过关

第十关、Step1

大意:每5次射击就需要重新装弹,但敌人会自动回血,想办法干掉敌人

注意这是个新进程,需要重新附加

根据测试,发现前4发子弹可以正常使敌人掉血,但第5发敌人会进入无敌状态并回血

所以尝试搜索敌人生命值,直接置0,但是似乎搜不到,所以换个思路,搜索自己已打出的子弹数量

敌人满血时搜0,打出1发子弹搜1……最终搜到一个结果,将这个值锁定为0,这样敌人就不会进入无敌状态,成功过关

第十关、Step2

大意:两个敌人比你血多,且比你伤害高,想办法打败敌人。提示:敌人和玩家是相关的,很显然可以用第9关共享代码的知识处理,如果没学会第9关先去学习一下

和第9关一样,先找到自己的生命值,查找写入,然后右键选择查找该代码访问的地址。记住生命值偏移是0x50

根据计数或值很容易判断,中间的是自己,其他两个是敌人,双击加入地址列表

在工具找到对数据结构进行解析,敌人一组,自己一组填入血量地址并-50

定义新结构确定

可以发现5c的位置比较适合作为阵营进行判断。敌人是1,自己是0

因此,查找血量写入,来到扣血代码处,工具,自动汇编,代码注入,按照如下填写,解释见蓝色部分注释

确定,再回到游戏攻击敌人,发现敌人掉血非常快,顺利过关

第十关、Step3

大意:让所有平台变绿来解锁右边的门,注意,敌人是一击必杀的。提示:有多种解决方案,例如碰撞检测,瞬移,飞……

(话说有没有感觉这个小人有点像蜜雪冰城…)

这里就以飞为例。在游戏中经常通过标志位0或1来控制某些功能的开关,例如此处就很可能通过0和1控制人物是否可以跳跃。

我们现在是在原地,所以搜索1代表可以跳跃,跳起来以后在空中时搜索0代表当前不能跳跃。反复搜索。注意跳起来这个过程比较短,搜索时手速要快,或者设置CE的热键搜索

注意要搜索字节型,因为编程时是通过布尔值来控制,布尔值是1字节的

搜到最后发现没有结果,所以反过来试试,在地上搜0,表示当前人物是非跳跃状态,跳起搜1表示当前是跳跃状态

这一次很容易就找到了一个结果,将其锁定为0可以发现,有时可以连跳了。但是别忘了之前学过的nop,干脆直接把对这个地址赋1的代码nop掉,那么这个地址的值就永远是0,意味着永远处在非跳跃状态,即永远可以跳跃

右键查找写入,静止时只有第一条,跳起时出现第二条,发现确实是向里写入1的值,所以把这条nop掉,显示反汇编,选中这条,右键替换为空操作码(不会的话去看第五关的教程)

此时按住空格发现自己飞起来了!

那么过关就很简单了,把所有平台变绿即可

最后它又出幺蛾子。这个门被怪物挡住了,没办法直接走过去,所以想办法瞬移过去,即修改自己坐标

利用之前搜索未知值的办法,左右移动搜索改变的数值,注意选择浮点数,最终找打一个结果

走到地图最左边,这个值是-0.97,再来到门附近,发现这个值是0.7+

说明大概整个地图的X坐标范围是[-1,1],所以,直接把自己的坐标改为正的0.97即可(和最左边对称)

轻松拿下

CE自带教程至此就全部结束了。如果还有没理解的可以去看一下我的视频教程,在B站搜索我的账号KrnlsYs就可以找到了,还有更详细的CE入门到精通全套课程,欢迎大家关注

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值