首页
社区
课程
招聘
[求助]有关异常处理
发表于: 2012-12-27 13:59 5101

[求助]有关异常处理

2012-12-27 13:59
5101
请教2个问题:
1.任意地址写入0xcc引发异常,然后在VEH处理,删除断点,设置单步调试(m_pException->ContextRecord->EFlags |= 0x100; ),若被Hook的地址是多线程运行,其中一个线程断下来后,其它线程是否还会运行?
2.一个异常在Ring3层面最先由KiUserExceptionDispatcher处理,对该函数进行hook,在打开调试器情况下,若发生异常,那么该异常先由Hook的函数处理还是debugger?

:)

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 154
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
1、每个线程都会触发异常转入你的VEH函数,即便一个线程正在你的VEH函数中执行代码,其他线程也可能同时在执行你的VEH函数代码,VEH是进程级别的。
2、调试器的异常是内核分发的,所以第一次接到异常的应该都是调试器。
2012-12-27 15:58
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1.一个线程中断下来,不影响其他线程,也就是说其他线程会照常运行.
2.如2L所说,程序在被调试状态下,任何异常都会先分发给调试器,如果调试器不进行处理,才会分发给被调试进程
2012-12-27 16:27
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
先谢谢楼上2位:)
那我的问题又来了,我采用的是VEH任意地址hook,参照的是这篇文章(http://www.pediy.com/kssd/pediy10/85807.html)
1.这个Hook调用时先恢复原来Hook的代码,然后执行新call...既然有恢复的操作,那么多线程情况下肯定存在漏hook,这个如何解决?有没有更好的hook方法?
2.VEH hook优先调用调试器,那对hook的进程进行调试时,hook部分代码就失效了? 有没有解决方法呢?
2012-12-27 16:42
0
雪    币: 154
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
1、。。。这是一个很神奇的RP概率问题。
2、调试器对第一次发生的异常一般都是交给系统继续分发给程序,程序无法处理这个异常才会从新返回调试器,调试器才会要求用户处理,因为不处理就挂了。VEH异常的时候调试器不处理,你的程序处理了,系统就不会继续分发给调试器了。
2012-12-27 23:11
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
1.安装veh后,给所有线程中设置硬件断点来设置hook就不会有这个问题,或者学od,每次断下来后暂停所有线程,恢复代码,在断下的线程执行单步中断,再设置回int3断点,然后恢复所有线程的执行,就OK了,不过后者这个方法看起来有些复杂了.
2.调试器设置忽略掉你自己设置的那个异常,就会自动交会被调试进程,也就是交给你的veh去处理了
2012-12-28 05:02
0
雪    币: 332
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
异常处理循序 调试器 然后 VEH 然后 SEH 处理
2013-1-28 13:51
0
游客
登录 | 注册 方可回帖
返回
//