浅谈数据的加密解密
这是在"BackMir修改"吧里,573650245大佬的“【教程】关于多倍主属性的修改”和“【新手教程】100倍经验制作。”2个帖子里的内容,我不过是借花献佛.
直接上图说话吧。 第一张图,是存储人物经验的代码.

以下是我对代码执行流程的分析。
1,新得的经验如果为0,则置为1
mov eax,00000001
test edi,edi
cmove edi,eax
,2,判断人物数据是否加密,然后按情况取当前经验值,偏移 +74
mov bl,[esi+7A] // +7A = 1 加密状态
mov ecx,[gamesvr.exe+1CEA2C] // 解密密钥
call gamesvr.exe+D4240 // 解密函数
3,新旧经验相加后,存储加密的数据
mov ecx,[gamesvr.exe+1CEA2C]
// 加密密钥,与解密密钥相同
call gamesvr.exe+D4190 // 加密函数
如果要直接修改经验,确实就是改加密前的数据,也就是 +83798地址这里:
add eax,edi
两个寄存器,选一个改其数据即可。
好,继续下一个,是关于攻速的

上面代码执行流程:
1, 按人物数据是否加密,读取出其攻速数据,偏移+40
注意,与上面经验的解密密钥不同,
这里是 movzx ecx,byte ptr [gamesvr.exe+1CEA26]
解密函数则是一样
2,读取人物的词缀攻速数据,push 13 ...
有数据则计算发挥效用的几率 ,第一个 MSVCR120.rand
有效用,则继续计算词缀攻速的“上下限”,第2个 MSVCR120.rand

这是计算攻速后的汇总返回
设定一个最小值600,但取最大值
cmp edi,eax
cmovl edi,eax
所以要修改的话,可以改mov eax,00000258
这里然后将 lea eax,[edi-64] 这行代码置空即可
当然,综合分析之后,我们应该更进一步,直接改加密的攻速数据.
应当如下:
假设ebx是人物地址
mov edx,10 //最大值是 FF 也就是255
movzx ecx,byte ptr [gamesvr.exe+1CEA26]
call gamesvr.exe+D4190 // 加密函数
mov byte ptr[ebx+40],al
// 如果有错,就用 mov word ptr[ebx+40],ax,
但绝不是 mov [ebx+40],eax 长度太大会窜改其它数据
攻速,在C端也有限制,所以仅修改服务器上的代码,是不起直接作用的.
想真正发挥效用,就得用我这个加密方法来修改,
并小退存档,数据同步到C端后,才会起效用
总结就是,人物(物品也类似)部分数据的加密和解密函数是固定的,
按数据的不同,有其相应的密钥,获取到这2个数据,就就能解密加密所有的数据
至于移动速度,也是类似攻速,请自己找出加密的密钥吧。
什么攻击力,血量等等,当然也是如此