0040AAD0 /$ 8B5424 04 mov edx,dword ptr ss:[esp+0x4] ; 数据包首地址edx
0040AAD4 |. 81EC FC050000 sub esp,0x5FC ; 抬高栈顶
0040AADA |. 85D2
test
edx,edx
0040AADC |. 0F848F000000 je 1_2_9破?0040AB71
0040AAE2 |. 53 push ebx
0040AAE3 |. 56 push esi
0040AAE4 |. 57 push edi
0040AAE5 |. B9 77010000 mov ecx,0x177
0040AAEA |. 33C0 xor eax,eax
0040AAEC |. 8D7C242C lea edi,dword ptr ss:[esp+0x2C]
0040AAF0 |. F3:AB rep stos dword ptr es:[edi] ; 清空堆栈
0040AAF2 |. 8B8424 100600>mov eax,dword ptr ss:[esp+0x610] ; 数据包总长度放入eax
0040AAF9 |. 8BF2 mov esi,edx
0040AAFB |. 8BC8 mov ecx,eax
0040AAFD |. 8D7C242C lea edi,dword ptr ss:[esp+0x2C]
0040AB01 |. 8BD9 mov ebx,ecx
0040AB03 |. 83C2 02 add edx,0x2 ; 加2后,就可以从第3位开始
0040AB06 |. C1E9 02 shr ecx,0x2 ; 除4,ecx用作计数器。
0040AB09 |. F3:A5 rep movs dword ptr es:[edi],dword ptr ds:[esi] ; 将内容复制到刚开辟的堆栈空间中去。用的是movs,这也是为什么上一步要将总长度除4、先给edx加2了。
0040AB0B |. 8BCB mov ecx,ebx
0040AB0D |. 83E1 03 and ecx,0x3 ; 处理当长度不是2的整数倍的情况
0040AB10 |. F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi]
0040AB12 |. 8B0A mov ecx,dword ptr ds:[edx]
0040AB14 |. 894C240C mov dword ptr ss:[esp+0xC],ecx ; 1
0040AB18 |. 8B4A04 mov ecx,dword ptr ds:[edx+0x4]
0040AB1B |. 894C24 10 mov dword ptr ss:[esp+0x10],ecx ; 2
0040AB1F |. 8B4A08 mov ecx,dword ptr ds:[edx+0x8]
0040AB22 |. 894C24 14 mov dword ptr ss:[esp+0x14],ecx ; 3
0040AB26 |. 33C9 xor ecx,ecx
0040AB28 |. 8B520C mov edx,dword ptr ds:[edx+0xC]
0040AB2B |. 894C24 2E mov dword ptr ss:[esp+0x2E],ecx ; 将保存到堆栈中的3-6位清零
0040AB2F |. 895424 18 mov dword ptr ss:[esp+0x18],edx ; 4,这四步刚好将数据包中3-18位保存到堆栈中
0040AB33 |. 8D54241C lea edx,dword ptr ss:[esp+0x1C]
0040AB37 |. 52 push edx
0040AB38 |. 894C24 36 mov dword ptr ss:[esp+0x36],ecx ; 将保存到堆栈中的7-10位清零
0040AB3C |. 50 push eax
0040AB3D |. 8D4424 34 lea eax,dword ptr ss:[esp+0x34] ; 堆栈中数据包的地址
0040AB41 |. 894C24 3E mov dword ptr ss:[esp+0x3E],ecx ; 将保存到堆栈中的11-14位清零
0040AB45 |. 50 push eax
0040AB46 |. 894C24 46 mov dword ptr ss:[esp+0x46],ecx ; 将保存到堆栈中的15-18位清零
0040AB4A |. E8 C1AEFFFF call 1_2_9破?00405A10
0040AB4F |. 83C40C add esp,0xC
0040AB52 |. B9 04000000 mov ecx,0x4
0040AB57 |. 8D7C240C lea edi,dword ptr ss:[esp+0xC]
0040AB5B |. 8D74241C lea esi,dword ptr ss:[esp+0x1C]
0040AB5F |. 33D2 xor edx,edx
0040AB61 |. F3:A7 repe cmps dword ptr es:[edi],dword ptr ds:[esi]
0040AB63 |. 5F pop edi
0040AB64 |. 5E pop esi
0040AB65 |. 5B pop ebx
0040AB66 |. 75 09 jnz short 1_2_9破?0040AB71 ; 这个跳转作为设置al的,可以作为去除MD5校验位处
0040AB68 |. B0 01 mov al,0x1
0040AB6A |. 81C4 FC050000 add esp,0x5FC
0040AB70 |. C3 retn
0040AB71 |> 32C0 xor al,al
0040AB73 |. 81C4 FC050000 add esp,0x5FC
0040AB79 \. C3 retn