hook swapcontext的unload问题
x64下我hook了swapcontext函数,每次unload(什么都不做,unhook放到了其他位置,且正常工作。)的时候都会蓝屏://Bug Check 0xD1: DRIVER_IRQL_NOT_LESS_OR_EQUAL请问什么原因,如何解决? 楼主提问还不忘代码保密,真是厉害! Tesla.Angela 发表于 2012-6-15 18:30 static/image/common/back.gif
蓝屏十有八九是因为把指令折断了。
应该不是,我看了hook前后的汇编代码,貌似还是中断级的事 乔丹二世 发表于 2012-6-15 11:17 static/image/common/back.gif
楼主提问还不忘代码保密,真是厉害!
调通玩一阵子没什么bug了就开源,哈哈,以免献丑 蓝屏十有八九是因为把指令折断了。 watchsky 发表于 2012-6-15 22:32 static/image/common/back.gif
应该不是,我看了hook前后的汇编代码,貌似还是中断级的事
你理解错我的意思了。
比如一条指令,由两个字节组成:XX YY,而且这两个字节也是你修改过的两个字节。当你要UNHOOK时,把这两个字节替换成了ZZ WW,但是有一条线程执行到XX时,就被中断了(正好此时你进行了UNHOOK,把指令由XX YY改为了ZZ WW),结果最终执行的字节就是XX WW,于是就蓝屏了。 本帖最后由 watchsky 于 2012-6-16 23:05 编辑
Tesla.Angela 发表于 2012-6-16 18:35 static/image/common/back.gif
你理解错我的意思了。
比如一条指令,由两个字节组成:XX YY,而且这两个字节也是你修改过的两个字节。 ...
我明白你的意思了,但是问题好像不是这个,因为我尝试用另一条线程去unhook,结果成功unhook了,一直没有问题。之后我unload,unload里什么都不做,结果unload的最后一条DbgPrint被成功执行,然后蓝屏,蓝屏错误是d1。没办法,我在unload里死循环,就不蓝屏了,但是问题一直没找到是什么。奇怪的是,我不进行hook,则可以顺利unload watchsky 发表于 2012-6-16 23:03 static/image/common/back.gif
我明白你的意思了,但是问题好像不是这个,因为我尝试用另一条线程去unhook,结果成功unhook了,一直没有 ...
UNHOOK之后一段时间没有蓝屏?但是UNHOOK之后一段时间UNLOAD驱动就蓝屏了?
这个就怪了。。。一个垃圾解决方法就是干脆不卸载驱动了。 我看人家写的那个原版的xp的hook swapcontext注释里也有我那个错误,但是没引发这个错误,不知道他是怎么解决的。它的hook方法是直接push到指定地址。我的unload现在就是死循环加睡眠,头大的://Bug Check 0xD1: DRIVER_IRQL_NOT_LESS_OR_EQUAL Tesla.Angela 发表于 2012-6-16 23:39 static/image/common/back.gif
UNHOOK之后一段时间没有蓝屏?但是UNHOOK之后一段时间UNLOAD驱动就蓝屏了?
这个就怪了。。。一个垃圾解 ...
问题解决,我在hook的线程里进行unhook,可以顺利unload,在其它线程里进行unhook,则不能unload。但是原因没找到 watchsky 发表于 2012-6-17 12:36 static/image/common/back.gif
问题解决,我在hook的线程里进行unhook,可以顺利unload,在其它线程里进行unhook,则不能unload。但是原 ...
恭喜你解决问题。
PS:放源码(在内部区放)
页:
[1]