免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
内容参考于:易道云信息技术研究院
本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。
上一个内容:107.游戏安全项目-基址更新后定位方法
血量的地址是基址 + CEF18的位置,当前基址是400000
然后这个地址是一个绿色的,绿色的一定会是全局变量,但是当切换进度的时候它又会变
切换进度发生改变,变成了基址+B5ACC,所以这样的可以猜测为声明人物属性的变量时是用的数组,一个全局的数组,内存地址的变化是因为访问数组的下标变了
然后接下来要逆向分析找 数组的起始点 与 索引,数组的起点也就是 数组[0] 的位置,索引就是当前是用什么来代表的人物。
然后右击选择是什么访问了它
然后就出来了两个,如果没有的话在游戏中使用一下加血的技能就会有了
它们所有的访问都是以 4B51D0 为开头进行的访问,然后加上了什么什么,它就很可能是数组的基址,上图红框附近的代码
edx * 4 + 4B51D0代表了人物血量
首先 eax=*ecx;
假设eax结果是1;
edx = eax+eax*8 也就是edx = eax*9
然后 shl 是左移运算符,edx << 6; 也就是 edx = eax * 576 ,具体可以看图1
然后 sub 是减法 也就是edx = edx - eax 也就是等于 edx = 576* eax-eax 也就等于edx = 575* eax 575 * 4 + 004B51D0 也就是等于 2300 + 4B51D0 也就是
eax是0的时候人物地址是4B51D0
eax是1的时候人物地址是4B51D0 + 2300
eax是2的时候人物地址是4B51D0 + 4600
然后在找到ecx 的值就可以了,它的值是索引,通过它可以找到人物对象地址
图1:
然后ecx的值是537400
537400 - 游戏基址的结果在游戏pe中,符合全局变量的条件
然后人物的数组是来自于 4B51C0(4B51D0是血量),索引来自于游戏基址 + 0x137400位置,然后人物的地址就是 4B51C0 + 索引 * 8FC 这样计算获取,8FC的十进制是2300