表面加密
原理
从之前的文章中可以知道,这个游戏中是单浮点类型的数据,进行扫描后发现了这么多,对数据进行修改后看效果。
可以看到数据被改为999,这里消耗一次要500,所以点完之后应该是499。
点击消耗按钮后再看,却发现其实数据并未改变,改变的只是显示的数据,也就是前端,后端并未被改写。这也就是表面加密的原理:直接扫描出的精确数据并非真正的存放地址,而是前端的数据,真正的数据并非显示在上面的数据。
这种加密也可以用模糊搜索
来破解,通过模糊搜索来对相关的数值进行筛选,可以参考这里的模糊搜索方法:
https://blog.csdn.net/m0_62783065/article/details/141886354?spm=1001.2014.3001.5501
指针扫描
原理
在做破解的过程中,关掉程序,其中所有找到的属性都会消失。这是因为程序启用了动态基址
,每次打开程序的内存基址都是不同的,所以数值的地址才会不一样,但是他的计算公式是一样的,每一个数据都是由基址+偏移存放在内存中,所以我们只要能知道指针指向的位置,就可以固定住找到的属性值而不用每次都重新改。
例如在下面找到体力的数量,这个属性关掉游戏后就会消失,这时候我们双击它到下面的框中,右键点击指针扫描此地址。
指针扫描的数据可以参照下图:
参数写完后确定,文件保存的目录一定要是英文
,他会进行扫描,这些就是不同指针最终指向该地址的指向:
这时把游戏关掉重新用CE选择游戏,可以看到该体力变成150,通过重新扫描内存对程序重新扫描,在扫描值这个地方写上现在体力的数值150,就可以找哪些指针是能够复用的。
以上流程循环几次,就可以看到就剩这些指针了,讲这些指针都添加到CE下方栏中,这样就可以复用很多指针 不用每次重新开都二次找了。