Eushully游戏数据CE修改初探——以天结迷宫大师为例

零、引言

https://tieba.baidu.com/p/5146684434
看到贴吧里的CE修改教程,自己试了一下是可行的,当然有些东西还需稍微修改。
Eushully共通的加密方法,对Cheat Engine有兴趣的朋友可以试试
注意:每次打开游戏都要重新搜索!

一、贴吧具体方法

加密原理

游戏数值A,CE数值B,常数C(每次启动程序会重置,载入存档不会)
B=A移14位然后异或C,也就是(用计算器的程序员模式)先把A乘以16384,然后异或C。(如果A乘以16384后所得16进制值大于8位数,则高位往低位补充)

具体操作

先通过模糊搜索找到钱的地址(4byte通常会是靠后的一个)
通过钱,反推C的流程一样,先用钱A乘以16384,然后异或CE里看到的数值B,就可以得到C。
有了C:
你可以用计算器通过AC,算出B,再直接通过精确数值查找,一般改变1次就能找到。


二、实际搜索例子

以初次进入天结1为例,金钱开始是2000。
1、将游戏存档,先用CE搜索“未知的初始值”;
2、购买一个96金币的东西,这里可以买“黄液”,然后扫描“变动的数值”;
3、再购买另一个96金币的的东西,这里可以买“青液”,然后扫描“变动的数值”;
4、可重复步骤2、3多次,如果金钱没有变动时可以多扫描几次“未变动的数值”。
5、读取最开始金钱为2000的存档(存、读取并不会改变金钱的地址),并扫描“变动的数值”。
6、不改变金钱,继续读取金钱为2000的存档,并扫描“未变动的数值”。
7、重复步骤2~6(购买的东西不一定是96金币的,可购买别的)
8、当结果只有几百个,或者几十个,甚至更少时,基本可以停止了。
9、把结果往下拉到底,如果只有一个地址以3开头,基本可以确定该地址就是金钱的地址了。
最后一个为金钱地址

三、游戏数值修改

金币地址我们已经知道了,但是这么一长串数值明显不是游戏里的数值。
为方便后文使用,定义:游戏数值A,CE数值B,常数C
(注:以下均按CE默认十进制)
以金币2000为例,设A=2000。其在CE里的数值为836211780,设B = 836211780
A1=2000 * 16384=32768000(也就是二进制左移14位)
C = A1 XOR B = 32768000 XOR 836211780 = 807638084(XOR代表“异或运算”,可用计算器“程序员模式”计算)
(C = (A*16384) XOR B)
程序员模式

1、算了这么大一串有啥用呢?
其实只是为了得出C,因为每次打开游戏时,会随机生成一个C,但是存、读档并不会改变C。(目前没有找到C具体是咋算出来的,所以每次开游戏都得从头找C)
2、那么C有什么用呢?
有了C就可以开始修改啦~

假设我要修改为金币10000,那么把A设为10000,C为上面算出的 807638084
也就是
B = (A * 16384) XOR C = (A * 16384) XOR C = (10000 * 16384) XOR 807638084 = 971478084

然后把CE里金钱数值改为B值,也就是971478084。
在游戏中进入商店可发现金钱确实为10000。
修改成功!~~

当然HP,物品数量,玄墨点数等的修改均类似。


四、后话

1、每次打开游戏C都会变,所以每次开游戏都需要重新计算C。
2、补位
C为8位16进制数,那么A * 16384可能会超过8位16进制数,那么该怎么异或呢?
这里其实采用了补位的方法,假设我们要把A修改为5194000,那么A * 16384 = 85098496000,其16进制为13D0440000,显然超过了8位数,但是要进行异或一般来说应该不能超过8位16进制数(一般一个地址最多存储8位16进制数),所以要把高位往地位补,这里即把13往低位补充,变为D0440013。再将其与C进行异或,得到B = 3764884567(10进制数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值