隨筆 - 1  文章 - 37  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          test

          搜索

          •  

          最新評(píng)論

          突擊了一個(gè)星期的匯編,再對(duì)照民間流傳的傳奇源碼(C++版本),基本摸清了這部分的代碼

          OD打開(kāi)Mir3.exe(Mir3G_20070108) -> ASCII ->找到**%s/%s/%d/%d/%d/1/%d->雙擊,得到如下代碼


          這段代碼是將幾個(gè)參數(shù),使用sprintf生成字符串,然后6BIT加密,以#%d%s!格式發(fā)送到服務(wù)器端
          0049E2D0  mov     eax, dword ptr [esp+14]          ; eax=arg5(第5個(gè)參數(shù))
          0049E2D4  sub     esp, 600                                    ; 預(yù)留1536個(gè)存儲(chǔ)單元
          0049E2DA  push    esi                                           
          0049E2DB  push    edi
          0049E2DC  mov     edi, dword ptr [<&USER32.wsprint>;  USER32.wsprintfA   
          0049E2E2  push    eax                              ; /<%d>      ;eax入棧
          **%s/%s/%d/%d/%d/1/arg5
          0049E2E3  mov     eax, dword ptr [esp+618]         ; |  eax = arg3
          0049E2EA  mov     esi, ecx                         ; |
          0049E2EC  mov     ecx, dword ptr [esp+61C]         ; | ecx = arg4
          0049E2F3  mov     edx, ecx                         ; |             edx=ecx=arg4
          0049E2F5  xor     edx, FA0280AF                    ; |    edx=arg4異或FA0280AF 
          0049E2FB  push    edx                              ; |<%d>   edx入棧
          **%s/%s/%d/%d/arg4異或FA0280AF/1/arg5
          0049E2FC  mov     edx, eax                         ; |          edx=eax=arg3
          0049E2FE  xor     edx, ecx                         ; |            edx=arg3異或arg4
          0049E300  mov     ecx, dword ptr [esp+614]         ; |   ecx=arg1
          0049E307  xor     edx, 5580AF27                    ; |      edx = edx異或5580AF27
          0049E30D  push    edx                              ; |<%d>   edx入棧
          **%s/%s/%d/arg3異或arg4再異或5580AF27/arg4異或FA0280AF/1/arg5
          0049E30E  xor     eax, 3EB2C5CC                    ; |  eax = arg3異或3EB2C5CC
          0049E313  push    eax                              ; |<%d>
          **%s/%s/arg3異或3EB2C5CC/arg3異或arg4再異或5580AF27/arg4異或FA0280AF/1/arg5
          0049E314  mov     eax, dword ptr [esp+620]         ; | eax = arg2
          0049E31B  push    eax                              ; |<%s>
          **%s/arg2/arg3異或3EB2C5CC/arg3異或arg4再異或5580AF27/arg4異或FA0280AF/1/arg5
          0049E31C  push    ecx                              ; |<%s>
          **arg1/arg2/arg3異或3EB2C5CC/arg3異或arg4再異或5580AF27/arg4異或FA0280AF/1/arg5
          0049E31D  lea     edx, dword ptr [esp+220]         ; |  edx 指向上面預(yù)留的1536個(gè)存儲(chǔ)單元中最后512個(gè)單元的首地址
          0049E324  push    004CBFCC                         ; |**%s/%s/%d/%d/%d/1/%d
          0049E329  push    edx                              ; |s
          0049E32A  call    edi                              ; \wsprintfA  edx指向生成的明文字符串首地址
          0049E32C  add     esp, 20                      ; 前移32個(gè)存儲(chǔ)單元
          0049E32F  push    1FF                             512入棧  <加密函數(shù)第4個(gè)參數(shù)>
          0049E334  lea     eax, dword ptr [esp+20C]  eax =明文字符串
          0049E33B  push    eax                              ; /String  
          0049E33C  call    dword ptr [<&KERNEL32.lstrlenA>] ; \lstrlenA 得到明文的長(zhǎng)度,保存在eax中
          0049E342  push    eax                                   eax入棧   明文長(zhǎng)度入棧<加密函數(shù)第3個(gè)參數(shù)>
          0049E343  lea     ecx, dword ptr [esp+10]     ecx=第一次入棧的edi的值,應(yīng)該是某個(gè)成員變量
          0049E347  push    ecx                                   ecx入棧<加密函數(shù)第2個(gè)參數(shù)>
          0049E348  lea     edx, dword ptr [esp+214] 
          0049E34F  push    edx                                    明文字符串首<加密函數(shù)第1個(gè)參數(shù)>
          0049E350  call    004A0B10                           調(diào)用加密函數(shù)
          fnEncode(char *strSrc, char *strDest, int lenSrc, 512)
          ...................
          后面是發(fā)送信息

          posted on 2008-05-30 16:34 Phrancol Yang 閱讀(623) 評(píng)論(0)  編輯  收藏 所屬分類: 反匯編
          主站蜘蛛池模板: 个旧市| 延庆县| 钦州市| 吉林省| 峨边| 清苑县| 龙井市| 龙口市| 绍兴市| 青神县| 霍山县| 宜州市| 阳新县| 武隆县| 张北县| 乐至县| 芜湖市| 新化县| 吉隆县| 台江县| 当雄县| 新泰市| 铅山县| 曲沃县| 钦州市| 类乌齐县| 汪清县| 呈贡县| 岳普湖县| 鹤庆县| 保定市| 海南省| 磐石市| 栖霞市| 治县。| 湛江市| 洛阳市| 垫江县| 华容县| 茌平县| 浦东新区|