能力值:
( LV9,RANK:690 )
|
-
-
2 楼
调试器最先取得SEH处理权
|
能力值:
( LV8,RANK:130 )
|
-
-
3 楼
我也不是很清楚,我的理解是:
如果这个异常无论有无调试器都存在的话,有调试时,进入异常,会修改程序到错误的流程,无调试器时,进入异常,但会进入正常的流程.
也可能异常: 在无调试器时,被跳过,有调试时,就经过异常.
.
to cyclotron兄: 能详细解释一下吗?最近在学着分析一个程序的算法,也存在楼主的这个问题,调试时,到发生异常处蓝屏重启,没有调试器时可以正常通过,现在跟踪时,只好把发生异常的指令nop掉了!
|
能力值:
(RANK:300 )
|
-
-
4 楼
当程序异常发生时,程序会到达预先设置好的 SEH 段,继续运行
SEH 的程序段是程序的一部份,只会在程序发生异常时才到达
软件作者故意制造异常,使程序来到 SEH 段,程序的工作在SEH 那里继续
如果有调试器,系统会把异常交给调试器
|
能力值:
( LV8,RANK:130 )
|
-
-
5 楼
谢谢riiji的回复: 我在分析的程序,产生异常的代码,在算法的那段代码中间,就是说,没调试器时,产生异常后,由windows把程序转到软件作者写的那段异常处理程序里(属于程序的一部分);有调试时,windows会把异常交给调试器去处理,那么调试怎么处理这个异常呢?难道它就不需要查异常链表吗?我在学习看学二版的那个例子时,产生异常后,还是由系统接管,然后会回到软件的异常处理代码啊!请大侠给分析一下.
|
能力值:
( LV9,RANK:690 )
|
-
-
6 楼
以OllyDbg为例,当程序发生异常时,系统首先通知OllyDbg处理异常,OllyDbg可以选择是否由调试器处理或不处理,如果OllyDbg忽略异常,那么系统将从SEH链中依次搜索程序自己的SEH Handler。
|
能力值:
( LV8,RANK:130 )
|
-
-
7 楼
谢谢cyclotron兄的讲解!我调试前设了od忽略所有异常了! 但到那段产生异常的代码依然蓝屏重启!
|
能力值:
(RANK:410 )
|
-
-
8 楼
Anti_Debug。你在调试壳?
|
能力值:
( LV8,RANK:130 )
|
-
-
9 楼
最初由 小虾 发布 Anti_Debug。你在调试壳?
不是调试壳! 还没那个能力啊! 刚才又看了一遍那个程序,如果直接断在产生异常的代码,然后F9就没问题,但调试时间长了,从od退出就蓝屏了(xp-sp1系统),不会是还有什么其他的检查或者是程序本身的问题?回头再看看在问.谢谢诸位兄弟热心指点了!
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我的看法是应该跟进去看看,不然恐怕正中了敌人的诡计:异常处理代码中有调试器检测,一旦查出有调试器在运行,结果可想而知。
|
|
|