求助 汇编 crash
004028A2 sub eax,0
004028A5 mov esi,ecx
004028A7 je 004028FB
004028A9 sub eax,1
004028AC je 004028DA
004028AE sub eax,1
004028B1 jne 00402887
004028B3 mov eax,dword ptr [esp+10h]
004028B7 test eax,eax
004028B9 ja 004028D0
004028BB push 0
004028BD push esi
004028BE push 0
004028C0 push ebx
004028C1 mov dword ptr [ecx+14h],1
004028C8 call dword ptr ds:[437030h]
004028CE jmp 00402887
004028D0 mov edx,dword ptr [ecx]
004028D2 push eax
004028D3 mov eax,dword ptr [edx+14h]
004028D6 call eax
004028D8 jmp 00402887
004028DA mov edx,dword ptr [ecx]
004028DC mov eax,dword ptr [edx+10h]
004028DF call eax
004028E1 mov ecx,dword ptr [esi+18h]
004028E4 push ecx
004028E5 call dword ptr ds:[4371C0h]
004028EB call 00401200
004028F0 push esi
004028F1 call 00419DAF
004028F6 add esp,4
004028F9 jmp 00402887
004028FB mov edx,dword ptr [ecx+18h]
004028FE push 0
00402900 push ecx
00402901 lea edi,[ecx+18h]
00402904 push ebx
00402905 push edx
00402906 call dword ptr ds:[437020h]
0040290C test eax,eax
0040290E jne 0040292C
00402910 mov eax,dword ptr [edi]
00402912 push eax
00402913 call dword ptr ds:[4371C0h]
00402919 call 00401200
0040291E push esi
0040291F call 00419DAF
00402924 add esp,4
00402927 jmp 00402887
0040292C mov edx,dword ptr [esi]
[解决办法]
首先要肯定问题确实是在 0040292C mov edx,dword ptr [esi] 处的 esi=0 引起的;如果真是这样,上面的调用的自己的函数和其它线程就可能有问题,比较常见的就是使用了 esi 但没有进行保存恢复,或者是对几个寄存器进行保存恢复时顺序错误导致 esi 值被改变。