12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 292|回复: 0

[原创]CE进阶操作之Tutorial Game学习

[复制链接]

315

主题

315

帖子

640

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
640
发表于 2021-2-19 18:18:11 | 显示全部楼层 |阅读模式
一、配景

​        最近玩CE的时候,突然发现Help菜单里面居然还藏着一个小游戏,花了半天时间,终于使用CE完成了所有关卡,现在分享给大家,也可以和大家共同加深CE功能的学习。
二、环境

系统:windows 10
调试器:Cheat Engine 7.1
目标游戏:CE自带的TutorialGame
三、游戏过关攻略

1.第一关

​        观察游戏
​        起首,我们打开游戏,选择第一关,全通关后需要选择,没通关的话直接进去就是第一关,CE附加游戏。

​        观察游戏界面如下:

​        这里会有一个提示,每5次射击后,子弹会重装,之后目标会治疗,试着找出一种方式摧毁目标,经过我们的尝试,发现单纯射击,确实干不掉它。子弹打完它就满血了。
​        过关思路:我们可以找到放子弹的变量,然后将其锁定,即可让子弹永久打不完,从而绕过目标的治疗。
​        开始操作
​        起首,搜刮当前子弹数量,射击,再次搜刮子弹数量,这是一种常见的变量搜刮方法,也是CE里面最强大的一种方法。
​        


​        这时候我们发现问题了,搜到后面,发现没有结果了?我们思路肯定出现了一点问题,或许子弹不是减少,而是增长?增长到5就重置?好的,打光子弹,从0开始搜刮,搜刮结果如下:
​        



​        我们好像找到了一个和我们预想差不多的变量地点,这里双击添加到我们的地点列表,选中后空格键锁定,在游戏中发现,不管我们怎么发射子弹,敌人血量都不重置了。
​        
​        到目前为止,我们就能干掉这个目标了,但我们尝试用一种快乐的方法干掉他。
​        在地点列表中,右键,查找是什么改写了该变量。
​        
​        在游戏中开一枪,我们看到改变此变量的指令,跳转到反汇编窗口
​        
​        在反汇编窗口,可以看到,该指令是将这个变量加一,假如我们改为+0,或者nop,就可以实现无限子弹了。

​        选中该指令,ctrl+a出现主动汇编窗口,模板中选择AOB注入,更改掉当前指令,这里直接注释即可,然后File->Assign to current cheat table,添加到当前作弊列表中。

​        在地点列表选中脚本,可以看到相应的汇编指令已经改变,跳转到我们的代码实行了。


​        此时,应用我们的脚本,即可快乐度过第一关

2.第二关

观察游戏

​        可以看到这里也是有提示的,我们有2个高血量高伤害的敌人,我们需要干掉他们。然后有一个警告,敌人和玩家是有关联的。
绕过思路:
​        起首,秦王绕柱走。走位走位,那个回手掏。然后发现操作太蛇皮了,反人类的移动,没办法,感兴趣的朋友们可以练练走位,然后干掉它俩。接下来介绍我个人的2种过关思路:
​        (1)我们锁血了,按原理说就能直接干掉他俩了。
​        (2)我们找到扣血代码,然后hook,在扣血前判断,假如是本身就不扣血,假如是敌人就秒杀。
开始操作:
​        先搜刮本身的血量,这里方法和前面是一致的。根据屏幕上的显示进行搜刮,或者根据被攻击的次数,选择减少的数值,也能找到本身的血量,操作过程如下:
​        

​        更改数值,发现游戏内数值也改变,我们找到了血量变量地点
​        锁定该血量。干掉2个敌人。

​        血量掉的贼慢,开始第二种方法。
​        和第一关一样的操作,查找是什么改写了这个地点,然后进入游戏,让本身被打一枪。

​        进入反汇编窗口,查看代码,看到前后都是00 00,只有3条代码,可以猜测此处应当是血量扣除的代码。
​        右键,查看这条指令访问的地点,从而找出敌人的血量

​        会弹一个小框出来,我们进入游戏,和敌人相爱相杀,小框会记录每次该指令访问的地点。
​        
​        因为游戏提示说,玩家和敌人实在是有关联的,以是我们分析一下数据布局,这里选中这3个地点,右键->打开指定地点并分析数据。

​        一系列确定之后,可以看到,布局体窗口如下:

​        我们很快就在偏移0x60处找到了血量,并且在0x70处找到了阵营信息。

​        现在我们可以开始优雅的过关了。选中扣血代码,ctrl+a进入主动汇编,选择AOB注入模板。

​        现在我们新建一个标签,名为kill,体现立刻杀死当前对象,然后在代码入口处,判断当前阵营,假如为0,直接跳转到Kill,干掉,假如为1,则不进行任何操作。由于代码本身自带ret,以是我们后面的指令不会实行,不管他

​        现在试试结果吧,将脚本保存到CheapTable,运行脚本,完美过关

3.第三关

观察游戏:

​        游戏大概意思为把所有平板都变成绿色来解锁们,然后进入门就通关了。提示可以通过检测碰撞,或者使用坐标传送。
过关思路:
​        (1)找出坐标信息,由于是2D游戏,只要找到x,y即可,然后直接传送,把平台都变成绿色,最后传送到门里面
​        (2)找出碰撞代码,绕过它。
开始操作:
​        起首,我们来找人物的坐标信息。这里可以先找x,y根据编程逻辑,就跟在x的后边。而坐标一样平常为浮点数(PS:对于坐标原点,向右x增长,向左x减少,认识界面编程的应该不难懂白。),查找过程如下:




至此,我们找到了正确的x值,然后我们在该地点后面+4即为y的偏移。
​        
​        好的,看起来我们可以通过修改x,y的值过关了
​        当然,我们也要改一个优雅的方法,最好是能够hook代码的那种。
​        选择x的地点,右键,查看什么访问了这个地点

​        可以看到,坐标x在玩家对象中的偏移为baseAddr+24,在x处右键,内存中显示

更改显示模式为4字节整数

​        将首地点-偏移(0x24),跳转到对象首地点

​        进入游戏,不停死亡,观察该内存区域中的数值变化,发现图下方框的位置,当玩家死后,变为1,玩家存活变为0

​        将其添加到作弊表中。锁定该值,可以发现,人物无敌了

​        分别锁定,发现二者功能如下,第一个地点是体现人物是否显示,第二个地点体现人物是否死亡。

​        接下来我们怎么操作呢,找到访问该地点的代码,然后绕过它。在判断人物死亡的地点处右键,什么改写了该地点,然后进游戏死亡,查看到如下代码

​        进入反汇编,看到如下代码,若修改参数能实现无敌,但我们要的是避免碰撞,或者避免死亡检测。

​        这里我们用到CE的另一个功能,指令跟踪。

​        设置最大跟踪次数为10000,跳过系统模块和取消单步
​        
​        进入游戏,死亡,得到如下结果,右键,全部睁开

​        我们在第二层找到了调用这条语句的代码,双击到达反汇编代码

​        只要将je改为jmp即可绕过碰撞。选中je,ctrl+a,选择AOB注入模板,更改指令如下:

​        添加到作弊表,启用脚本,可以看到,我们已经不会和敌人碰撞了

​        接下来只要渐渐修改我们的坐标,把所有平台点绿,即可过关。

4.绕过Integrity Check

​        我们已经过关了,但是此时发现一个问题,每次我们运行脚本进行hook的时候,窗口顶部总会显示一个可恶的Integrity check error

​        现在我们来绕过它。
​        起首,打开游戏,CE附加历程,当我们运行脚本hook时,内存中我们hook的指令会被更改为jmp,以是我们先找到指令位置。搜刮hook的特性码


这里解释一下,特性码就是指令在内存中的十六进制编码。通过该十六进制编码,可以在变动的内存中找到该指令地点,完成hook。AOB注入也是因为这个原理,以是稳如老狗,游戏基址任意变都能使用。
​        添加该地点到作弊列表,右键在内存窗口中查看

​        右键,给它下一个内存访问断点,查看是哪儿读取了该地点中的指令

​        现在我们看到,有3处查抄了该地点处的代码

​        在反汇编窗口分析这3个访问指令,找到了如下的循环判断代码。

​        根据排查,发现将xx.exe+38E0C处的jg指令改为jmp指令,即可让检测失效,这里没有分析上下文,以是不清楚该处到底是如何实现代码检测的。
​        接下来的工作就是主动汇编(Ctrl+A)->AOB注入模板->将jg改为jmp

​        添加到作弊列表中,启用该脚本,此时用其他脚本发现,代码完整性查抄已经被绕过了,接下来只要把作弊表保存一份,即可

四、总结

​        我们完成了3个关卡的作弊,以及完整性查抄的绕过,但这还不够,我们应该将完整性查抄的代码逆向出来,这里我就偷了一个懒,直接试出来如何绕过了,各位小伙伴感兴趣的可以继续追踪分析。
五、工具获取与源码

CE7.1工具,可以在官网上直接下载,百度或者其他搜刮引擎搜刮Cheap Engine即可到达官网。
演示用到的CT见附件。


附件(暗码52pojie.cn).zip
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-5-19 22:15 , Processed in 0.094727 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表