-
-
[求助]OD调试SEH,怎么F9运行就死机?
-
发表于:
2008-5-24 23:44
6906
-
学习Hume的SEH in ASM 研究,编译了一个,然后用论坛的OLLYICE调试,为什么F9运行的时候就死机了,鼠标能动,但是电脑没反应了
;//=================================================
;// ex. 1,by Hume,2001,例子1---final型的异常处理
;//==================================================
.386
.model flat, stdcall
option casemap :none ; case sensitive
include Windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
szCap db "By Hume[AfO],2001...",0
szMsgOK db "OK,the exceptoin was handled by final handler!",0
szMsgERR1 db "It would never Get here!",0
buff db 200 dup(0)
.code
_start:
lea eax,Final_Handler
;调用SetUnhandledExceptionFilter来安装final SEH
invoke SetUnhandledExceptionFilter,eax
xor ecx,ecx
mov eax,200
cdq
div ecx
;以下永远不会被执行
invoke MessageBox,NULL,addr szMsgERR1,addr szCap,MB_OK+MB_ICONEXCLAMATION
invoke ExitProcess,NULL
Final_Handler:
invoke MessageBox,NULL,addr szMsgOK,addr szCap,MB_OK+MB_ICONEXCLAMATION
mov eax,EXCEPTION_EXECUTE_HANDLER ;== 1 这时不出现非法操作的讨厌对话框
;mov eax,EXCEPTION_CONTINUE_SEARCH ;== 0 出现,这时是调用系统默认的异常处理过程,程序被终结了
;mov eax,EXCEPTION_CONTINUE_EXECUTION
;==-1不断出现对话框,将陷入死循环
;因为我们并没有修复ecx,所以不断产生异常,然后不断调用这个例程
;可以被执行了!我自己加的
invoke MessageBox,NULL,addr szMsgERR1,addr szCap,MB_OK+MB_ICONEXCLAMATION
ret
end _start
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!