阅读:1203回复:12
为什么拦截不到driverentry
为什么拦截不到driverentry
我写了一个filter程序,我想在系统启动时拦截driverentry 我已经把应该做的事情都做了,在启动时能看到filter.nms和filter.c 在filter.c中的看到断点已经存在,可就是没断下来,是不是没有执行driverentry??? 如果没有执行,我驱动中的其他例程却又能成功断下。 我只能这样解释,filter驱动在我的softice之前已经运行,会不会这样??? 请大家帮忙。小分献上. |
|
|
沙发#
发布于:2002-10-14 11:42
不懂,但建议你在DrverEntry里放一个
__asm int 3 然后在SoftIce里 i3here drv 看看能否断下 |
|
|
板凳#
发布于:2002-10-14 11:53
我在DriverEntry中用
__asm { int 3 } 更严重,系统崩溃了。郁闷呀。 |
|
|
地板#
发布于:2002-10-14 11:55
我在DriverEntry中用 你不拦截当然崩溃,要在SoftIce里 i3here drv 一定要用! |
|
|
地下室#
发布于:2002-10-14 12:09
我现在只想问这句
filter驱动在我的softice之前已经运行,会不会这样??? 不然如何断不到driverentry 我也发现了在上次加 __asm { int 3 } 崩溃是在softice运行之前的,这正好说明我写的驱动在softice之前运行了。所以能断不到driverentry。 如果是这样,该怎么解决? |
|
|
5楼#
发布于:2002-10-14 12:38
那完了,我不懂了,我不做驱动的,等做过类似东西的人来说一下吧。
不过你说“崩溃是在softice运行之前的”,这应该不对。 只要SI活着,它就应该能拦到断点的,比如Int 3断点。 SI是全局于系统的,它一旦激活,就常驻系统,不存在谁比它先运行的问题。 |
|
|
6楼#
发布于:2002-10-14 12:43
我的意思就是指在softice激活之前我的驱动就运行了。
|
|
|
7楼#
发布于:2002-10-14 12:46
我的意思就是指在softice激活之前我的驱动就运行了。 不会啊,比如你的驱动里有个int 3,那么运行到这里,SoftIce肯定会弹出的。 你真的用 i3here drv了? |
|
|
8楼#
发布于:2002-10-14 13:12
真是太郁闷了,我i3here drv和i3here on都用过了。
反正一加 __asm { int 3 } 在driverentry中就崩溃。 我的驱动是start=0的级别。 |
|
|
9楼#
发布于:2002-10-14 13:22
si的启动次序很高的,但不知道是不是在si前你的driver就load了
你的driver需要用start=0吗?用auto(是2吧?:D)不行吗? |
|
10楼#
发布于:2002-10-14 13:25
si的启动次序很高的,但不知道是不是在si前你的driver就load了 嗄?他的驱动是和Windows一道启动的?那就有可能,但可能性不大 |
|
|
11楼#
发布于:2002-10-14 13:55
[quote]si的启动次序很高的,但不知道是不是在si前你的driver就load了 嗄?他的驱动是和Windows一道启动的?那就有可能,但可能性不大 [/quote] 你看仔细点呀。 :P |
|
12楼#
发布于:2002-10-14 14:39
谢谢各位,问题已经解决了。
正如我所说,原来我的驱动真的是在SI之前运行了, 我把NTIce加在filter前(在system\\currentcontrolset\\ServiceGroupOrder ) 就行了。 |
|
|