自用记录贴:从零开始学习CheatEngine(一)

日因土豆兄弟难五部分角色难以突破,故铤而走险打算借助神秘力量帮助攻坚。在网上搜索一番后,发现CE具有修改本地单机游戏数据的黑暗力量,故开一记录贴,学习如下:

我的环境:吾爱破解论坛发布的CheatEngine 7.4汉化版,网站链接如下:

Cheat Engine 7.4 全网抢先发布 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

2.从教程开始的CE入门

       1.精确值扫描:当我们知道我们要修改的值的时候,就可以尝试着使用精确值扫描了。对于教程中给出的案例,我们只需要输入数值,扫描扫描再扫描即可。

         2.未知的初始值:当我们不知道我们要修改值的确切值时,我们就只能使用“未知的初始值”,来开启我们的旅程。按照教程我们很容易找到四个减少的数值,分别点开查看,发现只有一个在0~500之间,修改它到5000,通关。

         PS:由于它会短暂显示具体减少的数值,所以我们可以使用“数值减少了...”来更加快速的锁定要修改数值。

        3.浮点数:把四字节分别改为单精度,双精度即可:

        4.代码查找:这里我们要替换一段会变换我们关键数据未知的汇编代码。正好我对与汇编代码并不非常熟悉,所以我们在完成教程之前, 先来分析一下这段代码的意思吧:

        mov指令:mov 目的地址 源地址

        rax寄存器:累加寄存器,一般用于储存函数的返回值

        rbp寄存器:基质寄存器,用于访问栈底地址

        edx寄存器:存放整数除法的余数

        再结合CE为我们给出的关键修改代码为:mov [rax],edx:我们就理解了这段代码的意思了:

首先,把要修改的地址值rax+000007E0放入rax寄存器中。准备要替换的数值[rbp-18]放入edx中(我猜这里是通过取模生成了一个某一个范围内的随机整型),然后把该替换数值放入我们的欲修改地址中(标注语句)。【PS:以上分析不一定正确,欢迎指正】

        5.指针:我第一次看这个看迷糊了。但是后来我逐渐明白了,首先,这个程序想要实现一个改变数值在内存中储存位置的效果,但是地址变了之后,程序怎么去找到这个移动了的数值呢?答案是有一个固定的指针,指向一个变化的地址,这个变换的地址上面存的才是我们的数值,图如下:

但是我们发挥RTS的传统:不管,来继续进行我们熟悉的部分:精确值扫描。

        简单地扫了几次,我们就找到了这个值目前地地址:

        

         接着按照“代码查找”中的步骤,我们就慢慢的上道了:

        标红的语句是修改我们关注的值的语句,所以我们关注的值就放在[edx]里面。不论是看中文提示"您要查找的......可能是018ABB08",还是下面EDX=018ABB08。我们都可以发现指针数值,其实就是018ABB08。

        指针数值018ABB08,那么指针本身的地址是什么呢?是接下来我们继续按照它的要求,验证一下我们找寻的结果。结果当然是正确的。

         接下来锁定我们新添加的指针(在左边点击变叉叉),通关!

        附上本次过程分析图:

        7.代码注入:还是有点迷糊,但是不管,我们先执行我们的基操:精确值扫描:

        接下来继续使用:代码查找,并加上它告诉我们的“显示反汇编程序”进行操作,得到:

         毫无疑问,标蓝的汇编语句就是导致我们每次都健康减一的罪魁祸首了(毕竟它语句的语句名就叫sub——减法)

        dword:双字,也就是4个字节(是不是很熟悉?)

        ptr:pointer的缩写,也就是指针

        sub ax bx:ax = ax - bx

        那怎么改就一目了然了,我们修改如下:

         不过执行测试之后,遗憾的发现,原本的代码只是被挤到下面去了,并没有被替代,所以点一下变成了每次+1。

        不过问题不大,修改代码为+3或者直接把下面的语句变成空语句都可以解决问题,如下:

         愉快通关!        

        8.多级指针:有了第五关:指针的分析经验,我相信这关没什么难度,首先画出分析图如下:

        但是做着做着,我就发现:欸,不对,怎么第四个指针里面的值和存放关注数值地址A'的值不一样呢?赶紧看一眼汇编代码,哦,原来这里有偏移值(18)了。【红框中地址不同,是因为橙框中的代码存在偏移量18,所以0197AE90 = 18 + 0197AEA8】

         所以我们之前的分析图遗漏了Offset的部分,补完后,完整的图如下(当然,第五关那个图也少了偏移量,但是偏移量刚好为0,所以可以正常使用)

        想起第五关隐约有着关于偏移值的说法,所以我们使用它的教导来进行指针确定。精确搜索地址016FAD48时,搜索到了两个地址里面有它,根据指导选择地址较小的016FA6E8。之后添加指针,注意加上偏移量。

        那么,某个地址B = 016FA6E8,X1 = 016FAD48,Offset = 18,A' = 016FAD60,继续如法炮制,把剩下的指针都找出来:

         锁定我们找到了超长偏移指针,并更改数值为5000,通关!完整分析图如下:

         

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值