任鸟飞《QQ西游》 背包分析
今天我们来分析一下QQ西游的背包遍历。背包物品的突破口很多,最常见物品数量,物品位置,物品名字,背包格子内的对象等等都可以作为突破口,如果这些都无法有效的找到物品的对象,那么可以尝试通过背包占用格子数量,分析使用物品函数参数等查找。对于这款游戏来说,物品的数量是可以作为突破口的,但是需要注意的是物品的数量偏移并不是一个可以被4整除的地址,所以我们CE扫描的时候要把快速扫描点掉,并且要用WORD或者BYTE来扫描。如果通过物品位置扫描的话需要注意的是物品的位置并不是从0或者1开始的,而是从1E开始的,因为之前还有装备栏和附加包裹栏等。如果通过格子内的对象来分析的话,也是可以很快找到的,但是对象找到了,对象内的信息也不容易观察。我们从物品数量入手,搜索byte型,最终得到1个结果(如图)https://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVuANSFaSMs6n9m8jicRwdxQTanXasjhoNcURqZhDTSEplt4ZU5h7CCBVkNqMibKWZXlNMubET6Pia8A/0?wx_fmt=png在OD数据窗口中跟随这个地址,并下硬件访问断点,再次访问物品游戏断下(如图)https://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVuANSFaSMs6n9m8jicRwdxQ2wiaEJEMw2Cw1U3ShfWPVNIUtUlA3ldULlb0NQsFCJrveNOjOw5QrRg/0?wx_fmt=png游戏断下后我们得到一个+A的偏移,继续向上追eax的来源,得到一个数组mov eax, dword ptr ,分析上面的跳转我们发现eax小于0或者大于FA都无法经过数组,也就说数组序号的范围是0到FA,继续追esi的来源,可以得到一个基地址mov esi, dword ptr 在数据窗口中观察数组的情况,我们发现eax=0时的指针并不指向物品栏第一格的物品,而是指向的装备栏,而eax=1E的时候才指向第一格。(如图)https://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVuANSFaSMs6n9m8jicRwdxQJYdu6cuILXQVcTcaHvwjb6w6UnqN6eWPPefZbm3qILwCBJicE5GVN4A/0?wx_fmt=png观察背包物品的对象,我们物品得到物品的名字,所以,我们需要找到物品名字库,并和物品对象进行关联。经过CE的扫描,我们得到一个可以改变本地物品名字的地址(如图)https://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVuANSFaSMs6n9m8jicRwdxQibko3Aem9jRo6nGStFACK00ia4vEIf4aVelZRnPH74wvicv9hVQ2EJYDQ/0?wx_fmt=png在OD中下硬件访问,最终得到物品名字库代码(如图)如图)https://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVuANSFaSMs6n9m8jicRwdxQkh129ZDicYIu6M3xhhwOQKo6GSXKOVMWzzYAIKlichyWv1A8Dkcy6kRw/0?wx_fmt=pnghttps://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVuANSFaSMs6n9m8jicRwdxQLc3p3GTcibhqMmPaP3RsoLEbXiad25UteK1e2pP7FsxuawyTK9zk1tOg/0?wx_fmt=png整理后得到的公式如下[+0a848+n*4]+8物品ID WORD型[+0a848+n*4]+0A物品数量byre型[[+物品ID*4]+4]物品名字ASCII型数据并不难,关键是能否在寻找突破口时考虑全面,把数据类型和可能关联的数据想清楚就能很容易的得到结果。老师,这论坛全是小学生 发了也白发 q765593142 发表于 2017-11-20 16:00
老师,这论坛全是小学生 发了也白发
哈哈哈 从娃娃抓起
页:
[1]