我们相信:世界是美好的,你是我也是。 来玩一下解压小游戏吧!

第九关是cheat engine文字教程的最后一关(后面还有三个实战的游戏关卡),其难度是非常大的。苏南大叔努力阅读了中英文版的文字教程,又看了网上无数的视频教程,外加上官方论坛里面翻了又翻(配色真让人难受)。解决方案是五花八门,怎么过关的都有。然而,苏南大叔的实验中,第九关“阵营”归属的代码依据,却一直没有找到。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 第九关教程注入++
Cheat Engine修改器,第九关教程:注入++(图13-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10cheat engine@7.6.3。第九关的最终解决方案,依然是代码注入。难度在于:如何找到代码修改条件的理论依据。

准备工作

本文的前提条件,是准备好cheat enginecheat engine tutorial。参考文章:

本文描述cheat engine tutorial的第九关,直达密码是:31337157。前几关教程:

关卡描述

这个游戏里面,有两个阵营。玩家两名:daveeric,电脑两名:halkitt。由于玩家血量较低(100),而敌人的血量值较高(500),双方的攻击值差不多。所以,理论上无论怎么推演,玩家都是不可能获胜的。

从代码层面上来说,双方共用了减HP的代码。所以,如果延用以前的思路的话,会导致双方都开无敌,游戏无法进行了。

通关的条件就是:在公用的减HP的代码上,把两者进行区分,帮助玩家获胜。
关键的线索:血量的存储类型是单浮点float

过关过程

先通过精准匹配浮点数的方式,找到四个选手的血量地址。(其实找一个就可以,按照题目说法,后续操作都一样)。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 浮点数精准匹配四个选手的血量地址
Cheat Engine修改器,第九关教程:注入++(图13-2)

然后随便找个选手,做“是什么改写了这个地址”检查。找到了一条汇编代码。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 是什么改写了这个地址
Cheat Engine修改器,第九关教程:注入++(图13-3)

因为题目中也说了,这是个共用代码。下一步是“找出什么指令访问了这个地址”。代码上右键,就可以找到对应的命令。实际上苏南大叔觉得,就是找到这条代码的上一条代码。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 访问该指令的地址
Cheat Engine修改器,第九关教程:注入++(图13-4)

然后在四个选手上,都“攻击”一通,就可以拿到四个“攻击”操作的地址。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 得到了四个选手攻击操作的地址
Cheat Engine修改器,第九关教程:注入++(图13-5)

全选四个地址,右键,选择“选中的地址分析数据”。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 选中的地址分析数据
Cheat Engine修改器,第九关教程:注入++(图13-6)

然后一路回车即可。【这一步要求快,别犹豫】

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 新建对比窗口
Cheat Engine修改器,第九关教程:注入++(图13-7)

找到内存对比图,注意0014位置。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 对比图0014位置
Cheat Engine修改器,第九关教程:注入++(图13-8)

苏南大叔在这里卡了好几天,找到地址后,要快速来到这里看效果。下面的图是个失败的截图。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - fail
Cheat Engine修改器,第九关教程:注入++(图13-9)

找到上面的这个关键图之后,在0014位置可以看到:1为友军,2为敌军。终于得出了重大结论,找到了代码改写的依据。下面准备修改代码。

修改分析

注意修改代码的方式很多。所以,这里的要注入的代码方式很多。通过“修改这个地址”的地址,找到要修改的位置。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 谁改写了这个地址
Cheat Engine修改器,第九关教程:注入++(图13-10)

选择subss的原因是:它是个减法操作。进入“工具”=>"自动汇编"界面。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 自动汇编
Cheat Engine修改器,第九关教程:注入++(图13-11)

参考第七关代码注入的理念,

  • 如果想在主界面最下方出现,然后“激活”来执行的话,就使用“ct框架”。
  • 否则就直接“代码注入”,然后点击下面的“执行”按钮。

这里选择方案二,直接代码注入。(似乎不容易反复更改,待议)

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 模版代码注入
Cheat Engine修改器,第九关教程:注入++(图13-12)

添加的代码是:

cmp [rbx+14],1   //是否是玩家
jne originalcode //不是玩家,直接跳转到原代码执行
addss xmm1,xmm0  //是玩家,将相减改为相加。
jmp exit         //跳到exit处
Plain text

代码注入并执行后,成功过关。

苏南大叔:Cheat Engine修改器,第九关教程:注入++ - 过关
Cheat Engine修改器,第九关教程:注入++(图13-13)

结语

至此,cheat engine自带的教程里面,文字版本的教程九关,就完全通过了。通过这九个关卡的学习,可以学习到cheat engine的基础操作方式。但是cheat engine里面自带的操作,还有很多很多,这就留作后续自己摸索了。

自带的教程后续还是三个实战篇的内容,是三个射击类的游戏。通过ce修改内存数据达到通过的效果。这里就留作后续的文章更新内容。待续。

更多苏南大叔的cheat engine相关经验文章,请点击苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   ce