请大家帮我解释下这个汇编程序的意思

0051A038 55 push ebp
0051A039 8BEC mov ebp, esp
0051A03B 81C4E0FEFFFF add esp, $FFFFFEE0
0051A041 53 push ebx
0051A042 56 push esi
0051A043 57 push edi
0051A044 33C9 xor ecx, ecx
0051A046 898DE0FEFFFF mov [ebp+$FFFFFEE0], ecx
0051A04C 898DE4FEFFFF mov [ebp+$FFFFFEE4], ecx
0051A052 898DE8FEFFFF mov [ebp+$FFFFFEE8], ecx
0051A058 898DECFEFFFF mov [ebp+$FFFFFEEC], ecx
0051A05E 894DF4 mov [ebp-$0C], ecx
0051A061 894DF0 mov [ebp-$10], ecx
0051A064 894DFC mov [ebp-$04], ecx
0051A067 894DF8 mov [ebp-$08], ecx
0051A06A 8BD8 mov ebx, eax
0051A06C 33C0 xor eax, eax
0051A06E 55 push ebp
0051A06F 68A1A25100 push $0051A2A1
0051A074 64FF30 push dword ptr fs:[eax]
0051A077 648920 mov fs:[eax], esp
0051A07A 8D45FC lea eax, [ebp-$04]
0051A07D 8B15AC4B5300 mov edx, [$534BAC]
0051A083 E8B8A0EEFF call 00404140
0051A088 8B45FC mov eax, [ebp-$04]
0051A08B 50 push eax
0051A08C 8D45F8 lea eax, [ebp-$08]
0051A08F 8B15C0505300 mov edx, [$5350C0]
0051A095 E8A6A0EEFF call 00404140
0051A09A 8B45F8 mov eax, [ebp-$08]
0051A09D 5A pop edx
0051A09E E879ECF6FF call 00488D1C
0051A0A3 85C0 test eax, eax
0051A0A5 7E0F jle 0051A0B6
0051A0A7 C7833402000006000000 mov dword ptr [ebx+$0234], $00000006
0051A0B1 E9B0010000 jmp 0051A266
0051A0B6 8D55F4 lea edx, [ebp-$0C]
0051A0B9 8B83EC020000 mov eax, [ebx+$02EC]
0051A0BF E8E4B1F1FF call 004352A8
0051A0C4 8B45F4 mov eax, [ebp-$0C]
0051A0C7 50 push eax
0051A0C8 8D45F0 lea eax, [ebp-$10]
0051A0CB 8B15AC4B5300 mov edx, [$534BAC]
0051A0D1 E86AA0EEFF call 00404140
0051A0D6 8B55F0 mov edx, [ebp-$10]
0051A0D9 58 pop eax
0051A0DA E83DECF6FF call 00488D1C
0051A0DF 85C0 test eax, eax
0051A0E1 751E jnz 0051A101
0051A0E3 6A30 push $30
Possible String Reference to: "警告"
呵呵代码有点长.辛苦大家了.分数我可以再加.

0051A038 push ebp
0051A039 mov ebp, esp ;开辟新的堆栈
0051A03B add esp, $FFFFFEE0 ;为参数开辟空间
0051A041 push ebx
0051A042 push esi
0051A043 push edi
0051A044 xor ecx, ecx ;清空ecx
0051A046 mov [ebp+$FFFFFEE0], ecx
0051A04C mov [ebp+$FFFFFEE4], ecx
0051A052 mov [ebp+$FFFFFEE8], ecx
0051A058 mov [ebp+$FFFFFEEC], ecx
0051A05E mov [ebp-$0C], ecx
0051A061 mov [ebp-$10], ecx
0051A064 mov [ebp-$04], ecx
0051A067 mov [ebp-$08], ecx ;把函数参数压栈,全部是0
0051A06A mov ebx, eax
0051A06C xor eax, eax ;清空eax
0051A06E push ebp
0051A06F push $0051A2A1
0051A074 push dword ptr fs:[eax]
0051A077 mov fs:[eax], esp ;设置新的seh
0051A07A lea eax, [ebp-$04] ;把ebp-$04的参数传到eax
0051A07D mov edx, [$534BAC] ;把$534BAC地址的数据放到edx
0051A083 call 00404140 ;调用函数404140
0051A088 mov eax, [ebp-$04]
0051A08B push eax ;保存eax
0051A08C lea eax, [ebp-$08] ;获得ebp-$08的地址
0051A08F mov edx, [$5350C0] ;把$5350c0地址的数据放到edx
0051A095 call 00404140 ;调用函数404140
0051A09A mov eax, [ebp-$08]
0051A09D pop edx
0051A09E call 00488D1C ;调用函数488d1c
0051A0A3 test eax, eax ;测试返回值是否为0
0051A0A5 jle 0051A0B6 ;小于或等于跳
0051A0A7 mov dword ptr [ebx+$0234], $00000006
0051A0B1 jmp 0051A266 ;跳到0051A266
0051A0B6 lea edx, [ebp-$0C]
0051A0B9 mov eax, [ebx+$02EC]
0051A0BF call 004352A8 ;调用函数4352a8
0051A0C4 mov eax, [ebp-$0C]
0051A0C7 push eax
0051A0C8 lea eax, [ebp-$10]
0051A0CB mov edx, [$534BAC]
0051A0D1 call 00404140 ;调用函数404140
0051A0D6 mov edx, [ebp-$10]
0051A0D9 pop eax
0051A0DA call 00488D1C ;调用函数488d1c
0051A0DF test eax, eax ;测试返回值是否为0
0051A0E1 jnz 0051A101
0051A0E3 push $30
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜