77341991 发表于 2015-8-29 23:22

行星边际2 闪退原因

本帖最后由 77341991 于 2015-8-29 23:58 编辑

LONG WINAPI UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionInfo)    ps2自己的异常处理函数

0091CD90/. 55                PUSH EBP
0091CD91|. 8BEC            MOV EBP,ESP
0091CD93|. 833D 080CC502 00CMP DWORD PTR DS:,0
0091CD9A|. 56                PUSH ESI
0091CD9B|. 74 7C             JE SHORT PlanetSi.0091CE19
0091CD9D|. 8B75 08         MOV ESI,DWORD PTR SS:
0091CDA0|. 8B06            MOV EAX,DWORD PTR DS:
0091CDA2|. 8138 03000080   CMP DWORD PTR DS:,80000003
0091CDA8|. 74 6F             JE SHORT PlanetSi.0091CE19
0091CDAA|. E8 21FAFFFF       CALL PlanetSi.0091C7D0
0091CDAF|. FF15 2464D302   CALL DWORD PTR DS:            ; [GetCurrentThreadId
0091CDB5|. 8B0D 080CC502   MOV ECX,DWORD PTR DS:
0091CDBB|. 8941 30         MOV DWORD PTR DS:,EAX
0091CDBE|. 8B16            MOV EDX,DWORD PTR DS:
0091CDC0|. 813A FD0000C0   CMP DWORD PTR DS:,C00000FD   此处edx值为0xc0000005错误就是内存分配大小不够越界 出现野指针正常数据被覆盖就是收到了异常消息 客户端没检查大小
0091CDC6|. 75 43             JNZ SHORT PlanetSi.0091CE0B
0091CDC8|. A1 080CC502       MOV EAX,DWORD PTR DS:
0091CDCD|. 8B48 28         MOV ECX,DWORD PTR DS:
0091CDD0|. 51                PUSH ECX                                 ; /hEvent
0091CDD1|. FF15 2064D302   CALL DWORD PTR DS:            ; \ResetEvent
0091CDD7|. 8B15 080CC502   MOV EDX,DWORD PTR DS:
0091CDDD|. 8B42 20         MOV EAX,DWORD PTR DS:
0091CDE0|. 56                PUSH ESI
0091CDE1|. 50                PUSH EAX
0091CDE2|. 68 10CD9100       PUSH PlanetSi.0091CD10
0091CDE7|. FF15 1C64D302   CALL DWORD PTR DS:            ;kernel32.QueueUserAPC
0091CDED|. 8B0D 080CC502   MOV ECX,DWORD PTR DS:
0091CDF3|. 8B51 28         MOV EDX,DWORD PTR DS:
0091CDF6|. 6A FF             PUSH -1                                  ; /Timeout = INFINITE
0091CDF8|. 52                PUSH EDX                                 ; |hObject
0091CDF9|. FF15 F463D302   CALL DWORD PTR DS:            ; \WaitForSingleObject
0091CDFF|. E8 8CF9FFFF       CALL PlanetSi.0091C790
0091CE04|. 33C0            XOR EAX,EAX
0091CE06|. 5E                POP ESI
0091CE07|. 5D                POP EBP
0091CE08|. C2 0400         RETN 4
0091CE0B|> 56                PUSH ESI                                 ; /Arg1
0091CE0C|. E8 1FFDFFFF       CALL PlanetSi.0091CB30                   ; \PlanetSi.0091CB30
0091CE11|. 83C4 04         ADD ESP,4
0091CE14|. E8 77F9FFFF       CALL PlanetSi.0091C790
0091CE19|> 33C0            XOR EAX,EAX
0091CE1B|. 5E                POP ESI
0091CE1C|. 5D                POP EBP
0091CE1D\. C2 0400         RETN 4




这call返回值为0   客户端没处理直接就使用
01B11762|. E8 49C7FFFF    CALL PlanetSi.01B0DEB0                   ; \PlanetSi.01B0DEB0
01B11767|. 8B40 0C      MOV EAX,DWORD PTR DS:


大将军 发表于 2016-3-6 16:53

没看懂..来个具体方法!!!

rx158 发表于 2016-3-16 01:00

学习学习,谢谢了

sstm 发表于 2016-12-20 14:14

页: [1]
查看完整版本: 行星边际2 闪退原因