一、背景

​ 最近玩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下载地址:
链接:https://pan.baidu.com/s/1UZHRKRTy2munxSLtwoVdSg
提取码:g4rw

CE进阶操作--自带小游戏TutorialGame的修改方法相关推荐

  1. c语言mac小游戏,Mac自带小游戏怎么玩以打发空闲时间

    在我们的空闲时间,许多用户都喜欢玩一些小游戏来打发时间,但是许多MAC用户却不知道怎么玩MAC自带的小游戏.今天小编就给大家讲讲这些小游戏的操作方法吧. 具体的操作方法: 1.emacs是unix的t ...

  2. 苹果系统java小游戏_Mac自带小游戏怎么玩?

    在我们的空闲时间,许多用户都喜欢玩一些小游戏来打发时间,但是许多MAC用户却不知道怎么玩MAC自带的小游戏.今天小编就给大家讲讲这些小游戏的操作方法吧. 具体的操作方法: 1.emacs是unix的t ...

  3. 【Cheat Engine自带小游戏step1的通关思路】

    Cheat Engine自带小游戏step1的通关思路 Step1小游戏 多试几次可以发现如下规律:前4次开火敌人会掉血,第5次开火瞬间,敌人就处于恢复状态,无论开火快慢,敌人永远不会死亡. 通关的几 ...

  4. 找回win7系统自带小游戏

    不少朋友都很喜欢Win7系统自带的小游戏,比如扫雷.纸牌.空档接龙等等,空闲时间直接从Windows系统中调出小游戏,既可以放松心情又能锻炼脑筋.但是有些朋友打开Win7开始菜单中的"游戏& ...

  5. Edge浏览器自带小游戏----你知道吗!?

    用了这么久的edge浏览器,你可知道它自带小游戏! Edge浏览器自带一款名叫<让我们网上冲浪吧>的一款小游戏. 现在就跟小编一起来冲浪吧!打开你的Edge浏览器,在网址栏输入edge:/ ...

  6. 解答edge浏览器自带小游戏在哪里

    用了这么久的edge浏览器,edge浏览器上自带小游戏,你知道吗~edge浏览器上有一款叫<让我们网上冲浪吧>的小游戏,下面小编就来教教大家怎么打开edge浏览器上的小游戏. 打开方法如下 ...

  7. 微信小游戏跳一跳作弊方法

    微信小游戏跳一跳作弊方法 本实现方法代码来源:https://zhuanlan.zhihu.com/p/32473340 原理粗解 微信小游戏跳一跳,本质上时一个半离线游戏,它的与服务器的通信其实是在 ...

  8. pyecharts折线图上symbol(小圆圈)颜色的修改方法

    本人刚接触pyecharts,尝试做k线与指标图,但遇到不少困难. 虽然pyecharts虽在展现上令人舒畅,但使用起来并不能像echarts那么完善,比如k线的颜色目前就改不了,我是在尝试了各种方法 ...

  9. 修改计算机参数,缺氧参数怎么修改 游戏内参数修改方法解答

    缺氧 参数怎么修改游戏内参数修改方法解答,在游戏中,有一些东西可能十分难,需要玩家去修改一些游戏中的内容来达到简化我们的 生存 难度,今天就为玩家们带来缺氧参数修改方法,让我们可以完全你的自定义生成我 ...

最新文章

  1. centos下axel安装与使用
  2. Linux系统文件以及目录介绍
  3. spark 朴素贝叶斯
  4. PHP如何使用GeoIP数据库
  5. 头文件的用法及注意事项
  6. tensorflow 测试 cuda 是否安装成功,测试代码环境
  7. 基于Unity的弹幕游戏多人联机尝试
  8. malloc/free与new/delete的区别
  9. dll侧加载_WORD打开时出现加载DLL错误解决方法
  10. mac php命令行模式,phpstorm分别在Mac和Windows下启动命令行,并启用ssh
  11. 【TensorFlow】TensorFlow函数精讲之tf.constant()
  12. laravel 图片上传 intervention/image
  13. linux下的screen工具配置(针对 string escape)
  14. 一次性口令php,Multi-OTP 4.2.2 发布,PHP 一次性密码管理
  15. 2022电工(技师)考试题库模拟考试平台操作
  16. 微博舆情挖掘需求分析
  17. 延时消抖c语言,蓝桥杯练习(二)按键的使用和延时消抖
  18. 人工智能、机器学习和模式识别以及神经网络
  19. 针式打印机设置自定义纸张大小
  20. win10网络计算机打不开,win10网络和internet设置打不开怎么办_win10网络设置打不开无法打开的解决方法...

热门文章

  1. Neuron:自动优化TMS线圈放置,实现个性化靶向功能网络刺激
  2. 【RK按键】按键切换
  3. 如何在微信内置浏览器中开启开发者模式(f12)
  4. 一分钟详解三维重建学习路线
  5. 小红伞命令行工具ScanCL使用安装
  6. 《格鲁夫给经理人的第一课》读书笔记
  7. Git分布式版本管理工具
  8. termux配置python安装kali_安卓用termux安装kali linux教程
  9. 4.根据提示,完成下面的程序。#include<stdio.h>typedef struct date {int year;int month;int day;} Date;void
  10. Java封装和多态作业