• 81阅读
  • 0回复

《QQ西游》外挂背包分析 [复制链接]

上一主题 下一主题
离线任鸟飞
 

微信公众号  任鸟飞逆向


今天我们来分析一下QQ西游的背包遍历。
背包物品的突破口很多,最常见物品数量,物品位置,物品名字,背包格子内的对象等等都可以作为突破口,如果这些都无法有效的找到物品的对象,那么可以尝试通过背包占用格子数量,分析使用物品函数参数等查找。
对于这款游戏来说,物品的数量是可以作为突破口的,但是需要注意的是物品的数量偏移并不是一个可以被4整除的地址,所以我们CE扫描的时候要把快速扫描点掉,并且要用WORD或者BYTE来扫描。如果通过物品位置扫描的话需要注意的是物品的位置并不是从0或者1开始的,而是从1E开始的,因为之前还有装备栏和附加包裹栏等。如果通过格子内的对象来分析的话,也是可以很快找到的,但是对象找到了,对象内的信息也不容易观察。
我们从物品数量入手,搜索byte型,最终得到1个结果(如图)
在OD数据窗口中跟随这个地址,并下硬件访问断点,再次访问物品游戏断下(如图)
游戏断下后我们得到一个+A的偏移,继续向上追eax的来源,得到一个数组
mov     eax, dword ptr[esi+eax*4+A848],分析上面的跳转我们发现eax小于0或者大于FA都无法经过数组,也就说数组序号的范围是0到FA,继续追esi的来源,可以得到一个基地址movesi, dword ptr [8E0D18]
在数据窗口中观察数组的情况,我们发现eax=0时的指针并不指向物品栏第一格的物品,而是指向的装备栏,而eax=1E的时候才指向第一格。(如图)
观察背包物品的对象,我们物品得到物品的名字,所以,我们需要找到物品名字库,并和物品对象进行关联。经过CE的扫描,我们得到一个可以改变本地物品名字的地址(如图)
在OD中下硬件访问,最终得到物品名字库代码(如图)如图)
整理后得到的公式如下
[[8E0D18]+0a848+n*4]+8物品IDWORD型
[[8E0D18]+0a848+n*4]+0A物品数量  byre型
[[[FBDCBC]+物品ID*4]+4]物品名字ASCII型
数据并不难,关键是能否在寻找突破口时考虑全面,把数据类型和可能关联的数据想清楚就能很容易的得到结果。
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个