【游戏漏洞】大话西游网页版收发包分析

幸运草 2020年5月20日23:51:53安全防范评论阅读模式

8种网络黑灰产作案工具

由于该游戏是有微端的,这个游戏实际上和正常端游区别不大。

我们可以选择OD直接分析收发包。

正常我们知道可以分析 send(sendto WSASend) 和recv 等函数来分析收发包。

这个游戏也可以直接通过send 和recv 断下 但是发送的都是加密包,并且我们通过调用关系向上追溯发现无论做什么动作都是一样的  返回几层就到线程头了,无法继续返回到明文封包位置和功能函数里,那么这位置对于我们来说就是无用的。

那么这种情况说明什么呢?

说明这是线程发包,我们先来了解下线程发包的原理。

正常的发包是这样的,某个功能函数调用内层函数,内层函数对功能参数进行组包,然后加密等等操作,再去调用send等发包函数将封包发送出去,当然内层函数可能很多层,这里面忽略。

那么我们就可以通过这样的调用关系从send返回到明文封包甚至功能函数里去了。

那线程发包是什么情况呢?

线程发包前面的组包加密过程跟正常是一样的,只是他没有直接调用send发送,而是写入到某个指针地址里然后修改了某些发送封包标志位,让其他线程去发送。

那么于此同时有另外一条线程在不断的循环判断是否需要调用send发送封包,一旦判断到标志就会立刻发送。我们之前send返回的调用就是在这条线程里。

那么现在很明显了,我们在这条线程里怎么找也是找不到我们想要的明文封包和功能函数的,那么怎么办呢?

俩种办法,第一种封包内容上下写入断,因为内容是在线程外被写入的那么我们就可以跳出线程来到组包的位置了。

第二种办法在send附近找发送封包的标志,通过标志位跳出线程。

第一种方法为例,直接在send 的buffer 上下写入断 直接可以返回到 以下位置

发包函数以及HOOK位置

010372BB    E8 092C0100     call    01049EC9                         ; 01049EC9

010372C0    F20F1005 70E119>MOVSD XMM0, [119E170]

010372C8    F20F110424      MOVSD [ESP], XMM0

010372CD    53              push    ebx

010372CE    E8 C8250100     call    0104989B                         ; 0104989B

010372D3    83C4 0C         add     esp, 0C

010372D6    B8 01000000     mov     eax, 1

010372DB    5F              pop     edi

010372DC    5E              pop     esi

010372DD    5B              pop     ebx

010372DE    8B4D FC         mov     ecx, dword ptr [ebp-4]

010372E1    33CD            xor     ecx, ebp

010372E3    E8 64261300     call    0116994C                         ; 0116994C

010372E8    8BE5            mov     esp, ebp

010372EA    5D              pop     ebp

010372EB    C3              retn

010372EC    C685 FCFFFDFF 0>mov     byte ptr [ebp+FFFDFFFC], 0

010372F3    66:8B47 28      mov     ax, word ptr [edi+28]

010372F7    66:8985 FDFFFDF>mov     word ptr [ebp+FFFDFFFD], ax

010372FE    8D85 FCFFFDFF   lea     eax, dword ptr [ebp+FFFDFFFC]

01037304    56              push    esi                              ; Len

01037305    50              push    eax                              ; pBuf

01037306    FF15 C0D52D02   call    dword ptr [22DD5C0]              ; 明文发包CALL以及HOOK位置

0103730C    83C4 08         add     esp, 8

0103730F    FFB5 F4FFFDFF   push    dword ptr [ebp+FFFDFFF4]

01037315    FFB5 F8FFFDFF   push    dword ptr [ebp+FFFDFFF8]

0103731B    E8 A92B0100     call    01049EC9                         ; 01049EC9

01037320    8B4D FC         mov     ecx, dword ptr [ebp-4]

01037323    83C4 08         add     esp, 8

01037326    33CD            xor     ecx, ebp

01037328    33C0            xor     eax, eax

0103732A    5F              pop     edi

0103732B    5E              pop     esi

0103732C    5B              pop     ebx

0103732D    E8 1A261300     call    0116994C                         ; 0116994C

01037332    8BE5            mov     esp, ebp

01037334    5D              pop     ebp

01037335    C3              retn

这个位置可以返回到所有的功能CALL了 当然也有特殊功能有另外线程

recv 也一样 不过不是写入断了 而是对包内容下访问断,因为他只是需要copy 而不是改写

断到以下位置

HOOK收包位置

62E888EC  |> /8B4B 30       mov     ecx, dword ptr [ebx+30]

62E888EF  |. |89F2          mov     edx, esi

62E888F1  |. |29C8          sub     eax, ecx

62E888F3  |. |39F0          cmp     eax, esi

62E888F5  |. |0F46D0        CMOVBE EDX, EAX

62E888F8  |. |89F8          mov     eax, edi

62E888FA  |. |034B 34       add     ecx, dword ptr [ebx+34]

62E888FD  |. |29F0          sub     eax, esi

62E888FF  |. |895424 08     mov     dword ptr [esp+8], edx                                ;  Len Edx

62E88903  |. |8955 E4       mov     dword ptr [ebp-1C], edx

62E88906  |. |894424 04     mov     dword ptr [esp+4], eax                                ;  pBuf Eax

62E8890A  |. |890C24        mov     dword ptr [esp], ecx                                  ;  在这里HOOK

62E8890D  |. |E8 1EB40000   call    62E93D30                                              ;  &msvcrt.memcpy>

62E88912  |. |8B55 E4       mov     edx, dword ptr [ebp-1C]                               ;  Hook EAX{pBuf} ESI{Len}

62E88915  |. |29D6          sub     esi, edx

有了这2个位置   收发包明文显示 做什么都得心应手

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

你的手机被劫持了吗?

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草

发表评论