Cheat Engine修改器,第九关教程:注入++
发布于 作者:苏南大叔 来源:程序如此灵动~

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

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10
,cheat engine@7.6.3
。第九关的最终解决方案,依然是代码注入。难度在于:如何找到代码修改条件的理论依据。
准备工作
本文的前提条件,是准备好cheat engine
和cheat engine tutorial
。参考文章:
本文描述cheat engine tutorial
的第九关,直达密码是:31337157
。前几关教程:
- https://newsn.net/say/cheat-engine-step3.html
- https://newsn.net/say/cheat-engine-step4.html
- https://newsn.net/say/cheat-engine-step5.html
- https://newsn.net/say/cheat-engine-step6.html
- https://newsn.net/say/cheat-engine-step7.html
- https://newsn.net/say/cheat-engine-step8.html
关卡描述
这个游戏里面,有两个阵营。玩家两名:dave
和eric
,电脑两名:hal
和kitt
。由于玩家血量较低(100
),而敌人的血量值较高(500
),双方的攻击值差不多。所以,理论上无论怎么推演,玩家都是不可能获胜的。
从代码层面上来说,双方共用了减HP
的代码。所以,如果延用以前的思路的话,会导致双方都开无敌,游戏无法进行了。
通关的条件就是:在公用的减HP
的代码上,把两者进行区分,帮助玩家获胜。
关键的线索:血量的存储类型是单浮点float
。
过关过程
先通过精准匹配浮点数的方式,找到四个选手的血量地址。(其实找一个就可以,按照题目说法,后续操作都一样)。

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

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

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

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

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

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

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

找到上面的这个关键图之后,在0014
位置可以看到:1
为友军,2
为敌军。终于得出了重大结论,找到了代码改写的依据。下面准备修改代码。
修改分析
注意修改代码的方式很多。所以,这里的要注入的代码方式很多。通过“修改这个地址”的地址,找到要修改的位置。

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

参考第七关代码注入的理念,
- 如果想在主界面最下方出现,然后“激活”来执行的话,就使用“
ct
框架”。 - 否则就直接“代码注入”,然后点击下面的“执行”按钮。
这里选择方案二,直接代码注入。(似乎不容易反复更改,待议)

添加的代码是:
代码注入并执行后,成功过关。

结语
至此,cheat engine
自带的教程里面,文字版本的教程九关,就完全通过了。通过这九个关卡的学习,可以学习到cheat engine
的基础操作方式。但是cheat engine
里面自带的操作,还有很多很多,这就留作后续自己摸索了。
自带的教程后续还是三个实战篇的内容,是三个射击类的游戏。通过ce
修改内存数据达到通过的效果。这里就留作后续的文章更新内容。待续。
更多苏南大叔的cheat engine
相关经验文章,请点击苏南大叔的博客:


