首页
社区
课程
招聘
有关SEH的疑问?
发表于: 2005-2-4 13:18 4372

有关SEH的疑问?

2005-2-4 13:18
4372
SEH既然是WINDOWS的错误处理,那么,为什么在正常情况下,软件可以运行,不会掉入SEH中去,而使用OD运行时就会掉入呢,这个怎么解释呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
2
调试器最先取得SEH处理权
2005-2-4 13:32
0
雪    币: 225
活跃值: (146)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
我也不是很清楚,我的理解是:
如果这个异常无论有无调试器都存在的话,有调试时,进入异常,会修改程序到错误的流程,无调试器时,进入异常,但会进入正常的流程.
也可能异常: 在无调试器时,被跳过,有调试时,就经过异常.
.
to cyclotron兄: 能详细解释一下吗?最近在学着分析一个程序的算法,也存在楼主的这个问题,调试时,到发生异常处蓝屏重启,没有调试器时可以正常通过,现在跟踪时,只好把发生异常的指令nop掉了!
2005-2-4 15:51
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
当程序异常发生时,程序会到达预先设置好的 SEH 段,继续运行

SEH 的程序段是程序的一部份,只会在程序发生异常时才到达
软件作者故意制造异常,使程序来到 SEH 段,程序的工作在SEH 那里继续

如果有调试器,系统会把异常交给调试器
2005-2-4 16:13
0
雪    币: 225
活跃值: (146)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
谢谢riiji的回复: 我在分析的程序,产生异常的代码,在算法的那段代码中间,就是说,没调试器时,产生异常后,由windows把程序转到软件作者写的那段异常处理程序里(属于程序的一部分);有调试时,windows会把异常交给调试器去处理,那么调试怎么处理这个异常呢?难道它就不需要查异常链表吗?我在学习看学二版的那个例子时,产生异常后,还是由系统接管,然后会回到软件的异常处理代码啊!请大侠给分析一下.
2005-2-4 16:40
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
6
以OllyDbg为例,当程序发生异常时,系统首先通知OllyDbg处理异常,OllyDbg可以选择是否由调试器处理或不处理,如果OllyDbg忽略异常,那么系统将从SEH链中依次搜索程序自己的SEH Handler。
2005-2-4 17:14
0
雪    币: 225
活跃值: (146)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
谢谢cyclotron兄的讲解!我调试前设了od忽略所有异常了! 但到那段产生异常的代码依然蓝屏重启!
2005-2-4 17:21
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
8
Anti_Debug。你在调试壳?
2005-2-4 17:24
0
雪    币: 225
活跃值: (146)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
最初由 小虾 发布
Anti_Debug。你在调试壳?

不是调试壳! 还没那个能力啊! 刚才又看了一遍那个程序,如果直接断在产生异常的代码,然后F9就没问题,但调试时间长了,从od退出就蓝屏了(xp-sp1系统),不会是还有什么其他的检查或者是程序本身的问题?回头再看看在问.谢谢诸位兄弟热心指点了!
2005-2-4 18:04
0
雪    币: 204
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我的看法是应该跟进去看看,不然恐怕正中了敌人的诡计:异常处理代码中有调试器检测,一旦查出有调试器在运行,结果可想而知。
2005-2-8 15:53
0
游客
登录 | 注册 方可回帖
返回
//