вот Код (Text): format PE GUI 4.0 at $00400000 include 'D:\fasm\INCLUDE\win32ax.inc' section '.data' data readable writeable szException db 'Exception', 0 .code proc SehHandler PUSH EDX MOV EDX,DWORD [EBP+0Ch] MOV EAX,DWORD [EBP+10h] add dword [EAX+0B8h],1h PUSH DWORD [EDX+8h] ;[edx].SafeOffset POP DWORD [EAX+0B8h] ;[eax].regEip PUSH DWORD [EDX+0Ch] ;[edx].PrevEsp POP DWORD [EAX+0C4h] ;[eax].regEsp PUSH DWORD [EDX+10h] ;[edx].PrevEbp POP DWORD [EAX+0B4h] ;[eax].regEbp MOV EAX,0h POP EDX invoke MessageBox, NULL, NULL,szException, MB_OK ret endp start: xor eax, eax mov eax, cs push SehHandler push dword [fs:0] mov [fs:0], esp db 0CDh, 03 ; 2-byte int 3 SafePlace: pop DWORD[fs:0] mov esp, DWORD[esp+1h] invoke ExitProcess, 0 .end start после месаги, ХР просит завершить приложения где ошибки? перевёл часть кода из масм.
Код (Text): ; SEH Guard code proc __SEHHandler uses edx, pExcept:DWORD, pFrame:DWORD, pContext:DWORD, pDispatch:DWORD mov edx,[pFrame] mov eax,[pContext] virtual at edx .seh SEH end virtual virtual at eax .ctx CONTEXT end virtual push [.seh.safeOffset] pop [.ctx.regEip] push [.seh.prevEsp] pop [.ctx.regEsp] push [.seh.prevEbp] pop [.ctx.regEbp] ; set here your on_error actions mov eax,1 ret endp В фасме это int 3 (в отличие от int3). Используй отладочный вывод лучше.
no_vichok Ну, если тебе непонятно, что представляет из себя структура SEH из кода __SEHHandler, то я умываю руки.