首页
社区
课程
招聘
下SEH中断一定要用堆栈吗?
2004-9-13 15:01 4258

下SEH中断一定要用堆栈吗?

2004-9-13 15:01
4258
添加SEH中断的代码一般如下:
push offset perThread_Handler ;perThread_Handler为我的中断程序
push fs:[0]
mov fs:[0],esp
即总是压了栈后使用ESP.
但看讲SEH的文章上说不用栈,用数据区也可以,所以我就写了测试代码:
.data
        PreSehPtr                                dd 0
        SehHandler                                dd 0
.code
........
   mov eax, fs:[0]
   mov PreSehPtr, eax
   mov eax, offset perThread_Handler
   mov SehHandler, eax
   mov fs:[0], offset PreSehPtr
然后在后面的程序中产生异常,可却没有中断.不知怎么回事?

注:上面的程序只是个大概的意思,我的程序对SEH链的建立应该是没有问题的,好像就是非要用ESP才能中断不可

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞1
打赏
分享
最新回复 (2)
雪    币: 241
活跃值: (21)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
hying 2004-9-13 15:20
2
0
应该不一定用堆栈,只要指定的结构正确就可以.
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
qiweixue 19 2004-9-17 21:31
3
0
发生SEH时,系统会自动往栈压ERR结构・・
用数据区模仿栈的调用・・偶到是没有试过・・
游客
登录 | 注册 方可回帖
返回