突擊了一個星期的匯編,再對照民間流傳的傳奇源碼(C++版本),基本摸清了這部分的代碼
OD打開Mir3.exe(Mir3G_20070108) -> ASCII ->找到**%s/%s/%d/%d/%d/1/%d->雙擊,得到如下代碼
這段代碼是將幾個參數,使用sprintf生成字符串,然后6BIT加密,以#%d%s!格式發送到服務器端
0049E2D0 mov eax, dword ptr [esp+14] ; eax=arg5(第5個參數)
0049E2D4 sub esp, 600 ; 預留1536個存儲單元
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 指向上面預留的1536個存儲單元中最后512個單元的首地址
0049E324 push 004CBFCC ; |**%s/%s/%d/%d/%d/1/%d
0049E329 push edx ; |s
0049E32A call edi ; \wsprintfA edx指向生成的明文字符串首地址
0049E32C add esp, 20 ; 前移32個存儲單元
0049E32F push 1FF 512入棧 <加密函數第4個參數>
0049E334 lea eax, dword ptr [esp+20C] eax =明文字符串
0049E33B push eax ; /String
0049E33C call dword ptr [<&KERNEL32.lstrlenA>] ; \lstrlenA 得到明文的長度,保存在eax中
0049E342 push eax eax入棧 明文長度入棧<加密函數第3個參數>
0049E343 lea ecx, dword ptr [esp+10] ecx=第一次入棧的edi的值,應該是某個成員變量
0049E347 push ecx ecx入棧<加密函數第2個參數>
0049E348 lea edx, dword ptr [esp+214]
0049E34F push edx 明文字符串首<加密函數第1個參數>
0049E350 call 004A0B10 調用加密函數
fnEncode(char *strSrc, char *strDest, int lenSrc, 512)
...................
后面是發送信息
posted on 2008-05-30 16:34
Phrancol Yang 閱讀(623)
評論(0) 編輯 收藏 所屬分類:
反匯編