我解释一下,这是和KuNgBiM那篇跳过网络验证一样的一段代码,但是这个验证中为什么没有接收代码的的那个mov 呢?
00418F17 . 8985 58FEFFFF mov dword ptr [ebp-1A8], eax ; 获取服务器数据
很是不解!!!
按理说过的方式是一样的,附录代码
我的代码
004012C6 |. 8D45 F0 lea eax, [local.4] ; |
004012C9 |. 50 push eax ; |pSockAddr
004012CA |. 56 push esi ; |Socket
004012CB |. E8 2CEE0000 call <jmp.&WS2_32.#4> ; \connect
004012D0 |. 83F8 FF cmp eax, -1
004012D3 75 0E jnz short 004012E3
004012D5 |. 837D 08 00 cmp [arg.1], 0
004012D9 |. 75 08 jnz short 004012E3
004012DB |. 56 push esi ; /Socket
004012DC |. E8 FDED0000 call <jmp.&WS2_32.#3> ; \closesocket
004012E1 |. 33F6 xor esi, esi
004012E3 |> 8BC6 mov eax, esi
004012E5 |. 5E pop esi
004012E6 |. C9 leave
004012E7 \. C3 retn
KuNgBiM的代码
00418F11 . FF15 D0A54600 call dword ptr [<&ws2_32.connect>] ; \connect
00418F17 . 8985 58FEFFFF mov dword ptr [ebp-1A8], eax ; 获取服务器数据
00418F1D . 83BD 58FEFFFF FF cmp dword ptr [ebp-1A8], -1 ; 返回值是否大于等于FFFFFFFF
; 是则挂(通信不正常)
00418F24 75 14 jnz short 00418F3A ; ★所以这里必须跳!改为JMP★
00418F26 . C705 3C105D00 0D000000 mov dword ptr [5D103C], 0D
00418F30 . E8 EB180100 call 0042A820
00418F35 . E9 5C0A0000 jmp 00419996
00418F3A > 6A 00 push 0 ; /Flags = 0
00418F3C . 6A 60 push 60 ; |DataSize = 60 (96.)
00418F3E . 8D8D 74FFFFFF lea ecx, dword ptr [ebp-8C] ; |
00418F44 . 51 push ecx ; |Data
这个是为什么呢?
PS:请不要看地址,那一定不相同,但是程序执行的流程应该是差不多的.
真的不是想原版比对,但是得有个流程啊,这个应该是差不多的.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课