背包整理
首先下bp WSASend断点,然后点击“整理”按钮
然后ctrl+f9,每一步往下跟踪
====================
发现,始终跟不到这个整理的call,分析如下:
这是因为在点击“整理”按钮后,
向服务器发送的封包并不是这个点击操作的;
整理背包这个操作是一个递归的操作,跟踪发现会有循环调用的情况
所以说会很难找到,整理的call
上面这个call非常向整理背包的call,其中 esi指向的是地址 2035E2C8(这个地址每次会变化)
这个地址的值对应:02 01 02 0b 。。。。就是要整理的内容
如果能分析出这个变化值应该也可以做的整理背包,但是很困难!
换另一种思路:
点击“整理”按钮,游戏界面会有相应的字符串提示,提示是:“物品整理结束”这样的字样,
就从这里下手,
打开CE附加进程,搜索字符串:物品整理结束
找到一堆的这样字符串,细心找
这个是我找到的值,修改一下,就会在游戏中发现
好啦!,我们用到的地址就是 103F2B90
然后转到OD,附加进程
在数据窗口中dd,如下:
呵呵这正是我们想要的
然后,对这个地址中的数据,下内存访问断点:
然后点击“整理”按钮,迅速记录下 堆栈调用,如下
首先,看看第一个call :00684475
CPU Disasm
地址 十六进制数据 指令 注释 标签
00684456 8BCE mov ecx, esi
00684458 74 16 je short Moon.00684470
0068445A 68 61090000 push 961 Arg1 = 961
0068445F E8 ACE3FFFF call Moon.00682810 Moon.00682810, 物品开始整理提示
00684464 33C0 xor eax, eax
00684466 3946 0C cmp dword ptr ds:[esi+0C], eax
00684469 5E pop esi
0068446A 0F95C0 setne al
0068446D C2 0C00 retn 0C
00684470 68 63090000 push 963 Arg1 = 963
00684475 E8 96E3FFFF
call Moon.00682810 Moon.00682810, 物品整理结束提示
这里就比较有意思啦!!
用call工具测试一下就会发现,这个就是点击整理后,游戏界面中会提示:物品整理结束 字样的call
到这里其实就应该想到了,在往上一层应该就是,点击整理按钮这个事件的call了,
下断点查看call调用,就可以发现,这里的call就是整理背包物品的
CPU Disasm
地址 十六进制数据 指令 注释 标签
007879EA 6A 03 push 3 Arg3 = 3
007879EC 50 push eax Arg2 => [ARG.ECX], 5
007879ED 51 push ecx Arg1 => [ARG.ECX+4], 5
007879EE 8B0D 68791C01 mov ecx, dword ptr ds:[Moon.
11C7968] ASCII "D."
007879F4 E8 07CAEFFF call Moon.00684400 Moon.00684400, 真正的物品整理call
整理汇编如下:
mov ecx,[11C7968]
push 3
push 5
push 5
call 00684400
测试成功
特征码: B0 01 5E C2 04 00 8B 06 8B 4E 04 6A 03 50 51
继续分析,实际上可以进入这个call中查看00684400 ,发现真正有用的call是这个:
CPU Disasm
地址 十六进制数据 指令 注释 标签
00684433 8B4424 10 mov eax, dword ptr ss:[esp+10]
00684437 8B4C24 0C mov ecx, dword ptr ss:[esp+0C]
0068443B 8946 08 mov dword ptr ds:[esi+8], eax
0068443E 8B4424 08 mov eax, dword ptr ss:[esp+8]
00684442 894E 34 mov dword ptr ds:[esi+34], ecx
00684445 8BCE mov ecx, esi
00684447 8946 58 mov dword ptr ds:[esi+58], eax
0068444A 8946 14 mov dword ptr ds:[esi+14], eax
0068444D E8 AEFBFFFF call Moon.00684000 Moon.00684000, 正在有用的整理背包数据call,不带其他提示
对上面代码分析,就可以总结出如下的汇编,这个就是真正有用的整理call
mov esi,[11C7968]
mov ecx,[11C7968]
mov dword ptr ds:[esi+8],3
mov dword ptr ds:[esi+34],5
mov dword ptr ds:[esi+58],5
mov dword ptr ds:[esi+14],5
call 00684000
不带有其他界面提示,也不会有 此状态无法整理 的提示
记录这个call的特征码:
8B 44 24 10 8B 4C 24 0C 89 46 08 8B 44 24 08 89 4E 34 8B CE 89 46 58 89 46 14