具体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

【鼠标所指对象】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)
这些基址+偏移,基本都是正确的,可以记录几个,重新多几次游戏进行筛选。
最后,有兴趣也可以看一下之前写的