具体CE的用法,网上很多教程,这里不多讲解;动态指针链用法,可以参考

【Windows 逆向】使用 Cheat Engine 工具进行指针扫描挖掘关键数据内存真实地址 

( 指针扫描 )

https://blog.csdn.net/shulianghan/article/details/121314138

下文以win7自带的Purble Place的猜颜色为例讲解一下,怎么不用猜就知道答案

准备工具:CE(Cheat Engine)、win7自带的Purble Place

步骤一:先从最简单的,从动态地址,逐步走到基址获取指针链

打开purble Place

打开CE,有个一闪一闪的放大镜,打开,选择Purble Place

右上输入100,首次搜索(先从得分入手)

然后猜一下后,输入新分数,点下一次扫描,只有一个结果,双击它,在CE的下方窗口选中它,F5,独取什么访问了它

再猜一遍,修改分数,双击新增项,右键复制可能的值088C65F0

在CE搜索界面,勾16位,新建搜索、首次搜索088C65F0

一直执行下去,知道找到.exe,结果如下图所示

过程中如果出现多个搜索结果,有的会F5后空白,有的会数值一张快速增长,这些都不是我们要的结果;有的会移动鼠标它才有反应,这就是我们要的,注意,地址是动态的,每次游戏都不一样

当出现绿色的exe,这就是静态地址,也就是基址,每次重开游戏它都是不变的

我们可以进内存看一下,
先复制双击地址再在下面双击复制地址PurblePlace.exe+FD620,点击内存视图,再ctrl+D分析结构,在框框里粘贴,再按ctrl+N新建

先展开0后,再依次按上图红字展开88、0(RSI)、20、24

成功找到分数,这时候重开一局,它的分数就变回100了

以下就是本作归纳的指针链

【分数】PurblePlace.exe+FD620偏移+88+0+20+24

【读秒】PurblePlace.exe+FD620偏移+88+0+20+18

win7Purble Place获取答案——CE逆向破解

【鼠标所指对象】PurblePlace.exe+FD620偏移+18

【猜测次数】PurblePlace.exe+FD620偏移+88-0-20-0C

【最近一次接触的按钮】-38-0C

【所选帽子】PurblePlace.exe+FD620+88+0+B8+38

【所选眼睛】PurblePlace.exe+FD620+88+0+B8+3C

【所选鼻子】PurblePlace.exe+FD620+88+0+B8+40

【所选嘴巴】PurblePlace.exe+FD620+88+0+B8+44

【所选服装】PurblePlace.exe+FD620+88+0+B8+48

【正确的帽子】

PurblePlace.exe+FCE68+C8+38

PurblePlace.exe+FD620+88+0+C0+38

PurblePlace.exe+FD620+88+0+B8+78+4A0+30+38

【总答案】注意C++数组从0开头,需要加1

从内存看,得到地址:0A492DA8开始 04 00 00 00 04 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00,即答案:4 4 1 1 2;+1=5 5 2 2 3

想通过上面的方法,本作没找到所选帽子、正确的帽子,而是通过指针扫描得到的

步骤二、指针扫描

步骤,正确的帽子的地址,例如第一局知道是第1个,第二局知道是第3个,然后搜1、3,但是再开几局发现不对,然后个数-1,即帽子是第3种颜色,输入2搜索;得到临时的动态地址

再用文章最开始的方法进行操作,右键该地址,指针扫描后保存,建议存到桌面,记住保存的路径和文件名;然后关闭Purble Place后重新打开,进入猜颜色游戏,CE重新点放大镜绑定游戏,打开内存视图,工具菜单-指针扫描(ctrl+P),文件菜单-打开,打开刚才指针扫描保存的文件,指针扫描器菜单-删除不正确的指针(ctrl+R),选要查找的值,输入最新的正确值(正确的帽子颜色序号,记得减1)

这些基址+偏移,基本都是正确的,可以记录几个,重新多几次游戏进行筛选。

最后,有兴趣也可以看一下之前写的

64位win7扫雷获取雷表——C++逆向工程破解(一)