网络游戏中,对于无法使用封包断点进行分析找call的一种方法[以背包整理为例]

10 篇文章 0 订阅
6 篇文章 0 订阅
背包整理

首先下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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

junehappylove

急急如律令,buibui~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值