镶嵌系统是很多3D游戏都有的功能,玩家可以向镶嵌槽内附加宝石来提升装备的属性,这也直接提升了物品的价值。在一些扫拍卖和摆摊的外挂中经常利用这个属性来低价购入高价值装备。以这款游戏为例,我们来对装备上的镶嵌槽和镶嵌宝石进行分析。
一般来说镶嵌方面的属性会存放在背包属性遍历中,于是我们选一个可以可以打孔的装备来分析(如图)
我们发现物品分为最大的镶嵌槽数量和以及开启的镶嵌槽数量,通过对镶嵌槽进行开启,并观察物品对象中的变化,得出+45为物品已经开启的镶嵌槽数量,下断访问后可以在代码段得到偏移(如图)
对装备上镶嵌一个宝石,再次观察物品对象,发现对象+2C的位置出现了类似于ID的数值,下断点访问后游戏断下(如图)
这里得出的偏移是一个结构大小为2字节的数组,数组的最大成员数量是6,而对WORD型的ID分析,发现这是宝石的ID,在取名字的数组中可以得到名字(如图)
这样我们就得到了镶嵌槽在物品对象下的信息,而最大的镶嵌槽数量并没有在物品属性对象下。由于最大镶嵌槽数量是在物品描述中的,所以我们到物品名字所在的对象下进行观察(如图)
在+130偏移处的数值为6,和最大镶嵌槽数量相等,对这个数值进行修改,发现装备显示的信息也随着改变(如图)
这样我们就得到了完整的装备镶嵌信息,公式如下
[[FBDCBC]+物品ID*4]+130 物品镶嵌槽上限
[[8E0D18]+0a848+n4]+2C+m2 装备镶嵌宝石ID WORD型 m为宝石镶嵌序号 从0开始最大值为装备镶嵌槽数量
[[8E0D18]+0a848+n*4]+44 装备镶嵌槽数量