-
-
[原创]数据包中的功能控制分析
-
发表于:
2013-11-14 02:38
8382
-
00408C8C |> \83FB 12 |cmp ebx,0x12
00408C8F |. 0F8E C9000000 |jle 1_2_9破?00408D5E //当总长度小于0x12时,丢弃该数据包
00408C95 |. 8D8424 380100>|lea eax,dword ptr ss:[esp+0x138] //数据包存放地址放到eax中
00408C9C |. 53 |push ebx
00408C9D |. 50 |push eax
00408C9E |. E8 FD99FFFF |call 1_2_9破?004026A0 //这是一个解密call,我们在前面的章节破解的
00408CA3 |. 8B8C24 400100>|mov ecx,dword ptr ss:[esp+0x140] ; 将解密后数据包中前四个字符给ecx,其实也就用到第一个字符
00408CAA |. 83C4 08 |add esp,0x8
00408CAD |. 81E1 FF000000 |and ecx,0xFF //得到数据包解密后的首个字符
00408CB3 |. 8D41 FC |lea eax,dword ptr ds:[ecx-0x4] ; Switch (cases 4..CA)
……
00408CD0 |> 8D8424 380100>|lea eax,dword ptr ss:[esp+0x138] ; Case 4 of switch 00408CB3
……
00408CD9 |. E8 82030000 |call 1_2_9破?00409060 //这个call中将会出现数据包中各位对应的功能
……
00408CEB |> 8D8C24 380100>|lea ecx,dword ptr ss:[esp+0x138] ; Case 6 of switch 00408CB3
……
00408D02 |> 8B4424 14 |mov eax,dword ptr ss:[esp+0x14] ; Case C8 of switch 00408CB3
……
00408D2D |> 8B4C24 14 |mov ecx,dword ptr ss:[esp+0x14] ; CaseCAof switch 00408CB3
……
00408D5E |> 8B35 98CE4300 |mov esi,dword ptr ds:[0x43CE98] ; Default case of switch 00408CB3
……
00408D6A |.^0F84 36FEFFFF \je 1_2_9破?00408BA6
……
004090F4 |. 897424 18 mov dword ptr ss:[esp+0x18],esi ; 清空内存数据
004090F8 |. E8 D3190000 call 1_2_9破?0040AAD0
004090FD |. 83C4 08 add esp,0x8
00409100 |. 84C0 test al,al
00409102 |. 0F84 ED010000 je 1_2_9破?004092F5
0040913B |. |83C0 FC |add eax,-0x4 ; Switch (cases 4..10)
……
0040914E |> |8D4C24 18 |lea ecx,dword ptr ss:[esp+0x18] ; Case 9 of switch 0040913B
……
0040915F |> |684C1A4400 |push 1_2_9破?00441A4C ; Case 4 of switch 0040913B
……
00409170 |> |68 90064400 |push 1_2_9破?00440690 ; Case A of switch 0040913B
……
00409177 |> |688C064400 |push 1_2_9破?0044068C ; Case B of switch 0040913B
……
0040917E |> |684C1E4400 |push 1_2_9破?00441E4C ; Case C of switch 0040913B
……
00409185 |> |684C124400 |push 1_2_9破?0044124C ; Case D of switch 0040913B
……
0040918C |> |68 88064400 |push 1_2_9破?00440688 ; Case E of switch 0040913B
……
00409193 |> |68 84064400 |push 1_2_9破?00440684 ; Case F of switch 0040913B
……
0040919A |> |684C164400 |push 1_2_9破?0044164C ; Case 10 of switch 0040913B
……
004091A9 |> |E8 A2030000 |call 1_2_9破?00409550 //对接收到数据的数据结构进行判定,若异常,则丢弃数据包,若正确,则保存数据到相应的位置
……
004091BB |> |8D5424 30 |lea edx,dword ptr ss:[esp+0x30] ; Case 8 of switch 0040913B
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)