52入门
资料
52破解中帖子地址:植物大战僵尸修改器制作--从入门到入土 其中推荐学习的 CE 入门教程是 你能学会的Cheat Engine零基础入门教程 已下载该视频文件到 homeWin7new6t (硬盘柜第三个全新6T硬盘)硬盘中共享目录下的视频教程中
该教程用到的游戏客户端和视频教程都在:阿里云盘\setup\Others\52入门pvz\
CE官网
CE官方教程
第六关 - 指针
概述
这一关目标是找到内存地址的上级指针
查找数据地址
Scan Type选择Exact ValueValue Type选择4 Bytes- 搜索找到地址后双击选入地址列表
查找指针
- 在地址列表中点击右键菜单中的 “Find out what accesses this address”
- 点击教程中的按钮“change value”后CE主界面上新弹出的窗口出现4行代码,是CE找到的访问上面内存地址的代码。双击第一行,如果没有出现中括号包裹的地址则双击第二行,一直找到类似的代码。双击打开后的界面如下

- 手动添加指针地址

- 最后按照教程的指示,点击手动添加的指针地址行的列“active”表示锁定,然后点击教程的按钮“change address and value”等待几秒钟接可通关
- 也可以通过搜索目标数据的直接地址来找到基址

第七关 - 代码注入
演示CE中如何在指定的内存地址上注入自己的代码
每次点击 Hit me 目标数据会减少1,查找到直接地址后通过右键菜单 “find out what writes to this address” 打开新界面再次点击 “hit me”,会出现一行代码,即是修改数据的代码。选中后点击右边的 “show disassembler” 显示出汇编代码

在上面图片右边的窗体 “Memory Viewer” 中通过快捷键 ctrl+a 打开 autou assembler 窗体,或者如下图通过菜单栏进入


alloc(newmem,2048,"Tutorial-x86_64.exe"+2DB57)
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
// 这里写入要注入的代码
// 下面表示将地址中的数据增加3
add [01558310],3
originalcode:
sub dword ptr [rsi+000007E0],01
exit:
jmp returnhere
"Tutorial-x86_64.exe"+2DB57:
jmp newmem
nop 2
returnhere:
注入后点击教程的按钮 Hit me,会看到数字没有减少反而增加了
第八关 - 多级指针
搜索多级指针要搜索 hex 类型地址和 find out what accesses this address 交替使用找到绿色基址
找到目标数据直接地址

四级指针01 在直接地址上通过右键菜单
find out what accesses this address得到代码mov [rsi+18],eax,由于 rsi = 014C7B40,那么 014C7B40 + 18 = 014C7B58。刚好是直接地址,即直接地址的上级指针是 rsi = 014C7B40,偏移量是18
四级指针02 搜索 hex 类型地址 014C7B40 并选入下面的地址列表中,其所在内存地址 014C7AE0 才是一级指针(被搜索的地址 014C7B40 是一级指针的内容数据)

四级指针03 继续在一级指针上
find out what accesses this address得到代码mov rsi,[rsi]说明本次操作无效
四级指针04 由于上面一步操作无效,那么继续搜索一级指针的内存地址
014C7AE0,得到地址014C7A98选入下面地址列表中
四级指针05 继续在二级指针上
find out what accesses this address,得到代码mov rsi,[rsi+18],如下图 014C7A80 + 18 = 014C7A98,那么在二级指针上标注偏移量18(在地址列表的列 Description 上写明 “二级指针+18”),同时搜索地址014C7A80
四级指针06 搜索地址
014C7A80找到地址后选入下面的地址列表中
四级指针07 继续在三级指针上
find out what accesses this address得到代码mov rsi,[rsi+10],014C6FA0 + 10 = 014C6FB0,所以要在三级指针上标记偏移量10,下一步要搜索地址014C6FA0
四级指针08 搜索 hex 类型地址 014C6FA0 可以看到左边已经显示绿色地址
"Tutorial-x86_64.exe"+325B00,表示已经找到基址了,选择下来后成为四级指针,即基址。
四级指针09 通过CE主页面右下角的按钮
add address manually手动添加地址,填写"Tutorial-x86_64.exe"+325B00,即基址,然后从下到上依次填写偏移量10,18,0,18,最终得到直接地址014C7B58
四级指针10
PlantsVsZombies
阳光基址
- 通过阳光值的变动找到直接地址
31C1FA18 - 通过双击左边搜索到的内存地址列表中的该地址选择到下面待编辑表格中,并通过右键菜单“找出是什么访问了这个地址”显示相关汇编代码

- 搜索寄存器
edi中的地址,记得要搜索“十六进制”
可以看到左边搜索到很多地址,一般 00 开头的都不要使用,相似的地址也不要使用,例如下面的 2DB开头的,那么在中间段的地址中试验查找即将地址双击选择进入下面的待编辑区域并通过F5查看汇编代码,要找带有偏移的代码。0273B730 02805B34 02805B7C 02805BC4 02805C0C 02805C54 2312CC28 2574846C - 拿上面的第一个地址
0273B730继续 “找出是什么访问了这个地址”
到这一步已经出现两个偏移了,依次是:5578和868,接下来继续搜索此时 esi中的地址:0273AEC8 - 继续搜索十六进制
0273AEC8就搜索到基址了,使用第一个绿色的基址即可
- 验证找到的基址

进度
- 2023年11月26日 16:09:31 - 下次开始CE官方教程第六关
- 2023年11月27日 10:27:58 - 第六关通关并记录
- 2023年11月28日 08:07:00 - 开始第七关,注入代码
