<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 1  文章 - 37  trackbacks - 0
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    test

    搜索

    •  

    最新評(píng)論

    數(shù)據(jù)發(fā)送接收情況:
    ........客戶端與Gateserver,Loginserver的數(shù)據(jù)互換,省略
    1. 客戶端向Gameserver發(fā)送[**登錄用戶名/角色名/驗(yàn)證數(shù)1/驗(yàn)證數(shù)2/版本驗(yàn)證數(shù)/1/0]
    2. Gameserver向客戶端發(fā)送密文,類似#eLrBHMNx<F=hgmlYA]X]ENtpGM`X@?PuN`LwT_m>RmleJ_l{PAMHQ?pUCpdbENa<F`pjBllQC=HSC\\pT?LduQ_y=PQM>JptK!
    3. 客戶端向Gameserver發(fā)送解密后密文,類似#3<<<<<Jx?<<<<<<<<A>xZCNLSHoPpAnQRF?ljIaaUPmlSF^L_BmtfFODJA_X\\A]T`GNlq@L!
    ........歡迎信息,裝備信息等省略

    數(shù)據(jù)格式
    [#][標(biāo)識(shí)位][指令頭][消息體][!]
    例如 #3<<<<<B\\<<<<<<<<<mi{EhL!

    命令結(jié)構(gòu)體
    typedef struct tag_TDEFAULTMESSAGE
    {
        int     nRecog;
        WORD    wIdent;  3EF
        WORD    wParam;
        WORD    wTag;
        WORD    wSeries;
    } _TDEFAULTMESSAGE, *_LPTDEFAULTMESSAGE;

    解密命令體<<<<<Jx?<<<<<<<<得到wIdent值是3EF(1007),OD打開Mir3.exe,查找常量000003EF,跟蹤進(jìn)入,得到如下代碼
    >>Method1(未知參數(shù))
      push    esi
      push    edi
      push    0   
      push    0
      push    0
      push    0
      mov     esi, ecx
      push    3EF
      lea     edi, dword ptr [esi+18]  ;esi+18 是命令結(jié)構(gòu)體的首地址
      push    edi         ;命令結(jié)構(gòu)體首地址
      call    004A0D00    ;生成命令結(jié)構(gòu)體 (edi,3ef,0,0,0,0)
      mov     eax, dword ptr [esp+C] ; eax保存第一個(gè)參數(shù)
      push    0
      push    eax
      push    edi
      mov     ecx, esi    ;傳遞this指針,
      call    0049E450    ;發(fā)送數(shù)據(jù),arg3: 0, arg2: 第一個(gè)參數(shù), arg1: 命令結(jié)構(gòu)體
      pop     edi
      pop     esi
      retn    4

    簡單分析,入棧的4個(gè)0和3EF,則對(duì)應(yīng)結(jié)構(gòu)體,該函數(shù)至少1個(gè)參數(shù),目前不知這個(gè)參數(shù)是什么意思,跟進(jìn)0049E450看看
    >>Method2(命令結(jié)構(gòu)體,未知參數(shù),0)
      mov     eax, dword ptr [esp+4]  ;eax=命令結(jié)構(gòu)體
      push    ebx
      push    ebp
      push    esi
      mov     esi, ecx                ;得到this指針
      push    20
      lea     ebp, dword ptr [esi+24] ;esi+18是命令結(jié)構(gòu)體,加密命令結(jié)構(gòu)體得到的字符串保存在esi+24中
      push    ebp                     
      push    eax
      call    004A0CA0                ;跟進(jìn)發(fā)現(xiàn)是加密命令結(jié)構(gòu)體,arg3: 20(32), arg2: esi+24, arg1: 命令結(jié)構(gòu)體地址
      mov     eax, dword ptr [esi+14] ;eax=esi+14=標(biāo)識(shí)位
      cmp     eax, 9
      jl L015                         ;如果標(biāo)識(shí)位小于9,則跳到L015
      mov     dword ptr [esi+14], 1   ;否則標(biāo)識(shí)位重設(shè)為1
      jmp L017
    L015:
      inc     eax
      mov     dword ptr [esi+14], eax ;標(biāo)識(shí)位自加1
    L017:
      mov     edx, dword ptr [esp+14] ;edx=第2個(gè)參數(shù)
      test    edx, edx                ;
      je L048                         ;如果第2個(gè)參數(shù)為0,則跳轉(zhuǎn)到L048
      mov     eax, dword ptr [esp+18] ;eax=第3個(gè)參數(shù): 0
      test    eax, eax               
      push    edi                 
      jnz L031                        ;eax不等于0則跳轉(zhuǎn)
      mov     eax, edx                ;eax=第2個(gè)參數(shù)
      lea     edi, dword ptr [eax+1] 
    L026:
      mov     cl, byte ptr [eax]      ;cl=第2個(gè)參數(shù)第1個(gè)字節(jié)
      inc     eax                     ;eax                   
      test    cl, cl                  ;循環(huán)得到第一個(gè)參數(shù)的長度
      jnz L026                        ;沒到字符串尾則繼續(xù)循環(huán)
      sub     eax, edi               
    L031:
      push    2000
      push    eax
      lea     edi, dword ptr [esi+44]
      push    edi
      push    edx
      call    004A0B10                ;調(diào)用加密函數(shù),將edx加密,保存在esi+44中
      mov     ecx, dword ptr [esi+14]
      push    edi
      push    ebp
      push    ecx
      lea     ebx, dword ptr [esi+2044]
      push    004CBFE4                 ; #%d%s%s!
      push    ebx
      call    004BB568
      add     esp, 14
      pop     edi
      jmp L056
    L048:
      mov     edx, dword ptr [esi+14]
      push    ebp
      push    edx
      lea     ebx, dword ptr [esi+2044]
      push    004CBFC4                   ; #%d%s!
      push    ebx
      call    004BB568                   ;sprintf  格式化發(fā)送給服務(wù)器端的數(shù)據(jù)
      add     esp, 10
    L056:
      mov     eax, ebx
      lea     edx, dword ptr [eax+1]
    L058:
      mov     cl, byte ptr [eax]
      inc     eax                        ;這個(gè)循環(huán)得到數(shù)據(jù)長度
      test    cl, cl
      jnz L058
      push    0
      sub     eax, edx
      push    eax                        ; 數(shù)據(jù)長度
      mov     eax, dword ptr [esi+6044]
      push    ebx                 ; Data ,要發(fā)送的數(shù)據(jù)
      push    eax                 ; Socket對(duì)象
      call    <jmp.&WS2_32.#19>   ;這里是調(diào)用send(Socket對(duì)象, 要發(fā)送的數(shù)據(jù), 數(shù)據(jù)長度, 0 (flag));
      pop     esi
      pop     ebp
      pop     ebx
      retn    0C

    L017和L031說明Method1和Method2中的未知參數(shù)就是明文消息體,Method1只有1個(gè)消息體參數(shù)


     

    posted on 2008-06-01 10:48 Phrancol Yang 閱讀(564) 評(píng)論(0)  編輯  收藏 所屬分類: 反匯編
    主站蜘蛛池模板: 亚洲免费观看视频| 亚洲欧美日韩中文二区| 国产日韩AV免费无码一区二区三区| 午夜电影免费观看| 亚洲成av人片在www鸭子| 免费无码成人AV片在线在线播放 | 亚洲最大av无码网址| 色噜噜狠狠色综合免费视频| 日韩a在线观看免费观看| 亚洲av综合日韩| 亚洲精品国产高清嫩草影院| 香蕉免费一级视频在线观看| 九月丁香婷婷亚洲综合色| 午夜不卡久久精品无码免费| 99ri精品国产亚洲| 最近最新的免费中文字幕| 亚洲AV无码一区二区三区性色| 免费看一级做a爰片久久| 一二三区免费视频| 亚洲A∨无码一区二区三区| 国产一卡二卡四卡免费| 亚洲AV无码资源在线观看| 亚洲精品WWW久久久久久| a级成人毛片免费图片| 亚洲精品视频在线观看免费| 91网站免费观看| 国产亚洲女在线线精品| 亚洲色婷婷综合久久| aⅴ在线免费观看| 久久精品国产亚洲AV| 亚洲精品无码永久在线观看你懂的| 国产精品白浆在线观看免费| 亚洲性色成人av天堂| 免费人成在线观看网站品爱网日本| 你是我的城池营垒免费观看完整版| 亚洲老熟女@TubeumTV| 深夜国产福利99亚洲视频| 99久久精品毛片免费播放| 久久精品国产亚洲αv忘忧草| 又黄又大又爽免费视频| 7x7x7x免费在线观看|