跳至主要內容

52入门

chanchaw大约 6 分钟game-plugin

资料

52破解中帖子地址:植物大战僵尸修改器制作--从入门到入土open in new window 其中推荐学习的 CE 入门教程是 你能学会的Cheat Engine零基础入门教程open in new window 已下载该视频文件到 homeWin7new6t (硬盘柜第三个全新6T硬盘)硬盘中共享目录下的视频教程中

该教程用到的游戏客户端和视频教程都在:阿里云盘\setup\Others\52入门pvz\
CE官网open in new window

CE官方教程

第六关 - 指针

概述

这一关目标是找到内存地址的上级指针

查找数据地址

  1. Scan Type 选择 Exact Value
  2. Value Type 选择 4 Bytes
  3. 搜索找到地址后双击选入地址列表

查找指针

  1. 在地址列表中点击右键菜单中的 “Find out what accesses this address”
  2. 点击教程中的按钮“change value”后CE主界面上新弹出的窗口出现4行代码,是CE找到的访问上面内存地址的代码。双击第一行,如果没有出现中括号包裹的地址则双击第二行,一直找到类似的代码。双击打开后的界面如下 第六关查找指针
  3. 手动添加指针地址 手动添加指针地址
  4. 最后按照教程的指示,点击手动添加的指针地址行的列“active”表示锁定,然后点击教程的按钮“change address and value”等待几秒钟接可通关
  5. 也可以通过搜索目标数据的直接地址来找到基址 通过直接地址查找基址

第七关 - 代码注入

概述1/4

演示CE中如何在指定的内存地址上注入自己的代码

查找直接地址2/4

每次点击 Hit me 目标数据会减少1,查找到直接地址后通过右键菜单 “find out what writes to this address” 打开新界面再次点击 “hit me”,会出现一行代码,即是修改数据的代码。选中后点击右边的 “show disassembler” 显示出汇编代码

显示写入代码的汇编代码
显示写入代码的汇编代码

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

打开autoAssembler
打开autoAssembler
通过模板注入代码3/4
注入代码模板
注入代码模板
注入的代码如下4/4
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 交替使用找到绿色基址

  1. 找到目标数据直接地址

    四级指针01
    四级指针01
  2. 在直接地址上通过右键菜单 find out what accesses this address 得到代码 mov [rsi+18],eax,由于 rsi = 014C7B40,那么 014C7B40 + 18 = 014C7B58。刚好是直接地址,即直接地址的上级指针是 rsi = 014C7B40,偏移量是18

    四级指针02
    四级指针02
  3. 搜索 hex 类型地址 014C7B40 并选入下面的地址列表中,其所在内存地址 014C7AE0 才是一级指针(被搜索的地址 014C7B40 是一级指针的内容数据)

    四级指针03
    四级指针03
  4. 继续在一级指针上 find out what accesses this address 得到代码 mov rsi,[rsi] 说明本次操作无效

    四级指针04
    四级指针04
  5. 由于上面一步操作无效,那么继续搜索一级指针的内存地址 014C7AE0,得到地址 014C7A98 选入下面地址列表中

    四级指针05
    四级指针05
  6. 继续在二级指针上 find out what accesses this address,得到代码 mov rsi,[rsi+18],如下图 014C7A80 + 18 = 014C7A98,那么在二级指针上标注偏移量18(在地址列表的列 Description 上写明 “二级指针+18”),同时搜索地址 014C7A80

    四级指针06
    四级指针06
  7. 搜索地址 014C7A80 找到地址后选入下面的地址列表中

    四级指针07
    四级指针07
  8. 继续在三级指针上 find out what accesses this address 得到代码 mov rsi,[rsi+10],014C6FA0 + 10 = 014C6FB0,所以要在三级指针上标记偏移量10,下一步要搜索地址014C6FA0

    四级指针08
    四级指针08
  9. 搜索 hex 类型地址 014C6FA0 可以看到左边已经显示绿色地址 "Tutorial-x86_64.exe"+325B00,表示已经找到基址了,选择下来后成为四级指针,即基址。

    四级指针09
    四级指针09
  10. 通过CE主页面右下角的按钮 add address manually 手动添加地址,填写 "Tutorial-x86_64.exe"+325B00,即基址,然后从下到上依次填写偏移量10,18,0,18,最终得到直接地址014C7B58

    四级指针10
    四级指针10

PlantsVsZombies

阳光基址

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

进度

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