找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 12845|回复: 10

hook swapcontext的unload问题

 火.. [复制链接]

4

主题

183

回帖

3

精华

钻石会员

积分
4965
发表于 2012-6-15 10:46:17 | 显示全部楼层 |阅读模式
x64下我hook了swapcontext函数,每次unload(什么都不做,unhook放到了其他位置,且正常工作。)的时候都会蓝屏://Bug Check 0xD1: DRIVER_IRQL_NOT_LESS_OR_EQUAL
请问什么原因,如何解决?

280

主题

203

回帖

0

精华

版主

积分
1808
发表于 2012-6-15 11:17:02 | 显示全部楼层
楼主提问还不忘代码保密,真是厉害!

4

主题

183

回帖

3

精华

钻石会员

积分
4965
 楼主| 发表于 2012-6-15 22:32:01 | 显示全部楼层
Tesla.Angela 发表于 2012-6-15 18:30
蓝屏十有八九是因为把指令折断了。

应该不是,我看了hook前后的汇编代码,貌似还是中断级的事

4

主题

183

回帖

3

精华

钻石会员

积分
4965
 楼主| 发表于 2012-6-15 11:53:47 | 显示全部楼层
乔丹二世 发表于 2012-6-15 11:17
楼主提问还不忘代码保密,真是厉害!


调通玩一阵子没什么bug了就开源,哈哈,以免献丑

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2012-6-15 18:30:04 | 显示全部楼层
蓝屏十有八九是因为把指令折断了。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2012-6-16 18:35:59 | 显示全部楼层
watchsky 发表于 2012-6-15 22:32
应该不是,我看了hook前后的汇编代码,貌似还是中断级的事

你理解错我的意思了。

比如一条指令,由两个字节组成:XX YY,而且这两个字节也是你修改过的两个字节。当你要UNHOOK时,把这两个字节替换成了ZZ WW,但是有一条线程执行到XX时,就被中断了(正好此时你进行了UNHOOK,把指令由XX YY改为了ZZ WW),结果最终执行的字节就是XX WW,于是就蓝屏了。

4

主题

183

回帖

3

精华

钻石会员

积分
4965
 楼主| 发表于 2012-6-16 23:03:48 | 显示全部楼层
本帖最后由 watchsky 于 2012-6-16 23:05 编辑
Tesla.Angela 发表于 2012-6-16 18:35
你理解错我的意思了。

比如一条指令,由两个字节组成:XX YY,而且这两个字节也是你修改过的两个字节。 ...


我明白你的意思了,但是问题好像不是这个,因为我尝试用另一条线程去unhook,结果成功unhook了,一直没有问题。之后我unload,unload里什么都不做,结果unload的最后一条DbgPrint被成功执行,然后蓝屏,蓝屏错误是d1。没办法,我在unload里死循环,就不蓝屏了,但是问题一直没找到是什么。奇怪的是,我不进行hook,则可以顺利unload

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2012-6-16 23:39:18 | 显示全部楼层
watchsky 发表于 2012-6-16 23:03
我明白你的意思了,但是问题好像不是这个,因为我尝试用另一条线程去unhook,结果成功unhook了,一直没有 ...

UNHOOK之后一段时间没有蓝屏?但是UNHOOK之后一段时间UNLOAD驱动就蓝屏了?

这个就怪了。。。一个垃圾解决方法就是干脆不卸载驱动了。

4

主题

183

回帖

3

精华

钻石会员

积分
4965
 楼主| 发表于 2012-6-17 00:32:27 | 显示全部楼层
我看人家写的那个原版的xp的hook swapcontext注释里也有我那个错误,但是没引发这个错误,不知道他是怎么解决的。它的hook方法是直接push到指定地址。我的unload现在就是死循环加睡眠,头大的://Bug Check 0xD1: DRIVER_IRQL_NOT_LESS_OR_EQUAL

4

主题

183

回帖

3

精华

钻石会员

积分
4965
 楼主| 发表于 2012-6-17 12:36:26 | 显示全部楼层
Tesla.Angela 发表于 2012-6-16 23:39
UNHOOK之后一段时间没有蓝屏?但是UNHOOK之后一段时间UNLOAD驱动就蓝屏了?

这个就怪了。。。一个垃圾解 ...

问题解决,我在hook的线程里进行unhook,可以顺利unload,在其它线程里进行unhook,则不能unload。但是原因没找到

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2012-6-17 15:04:35 | 显示全部楼层
watchsky 发表于 2012-6-17 12:36
问题解决,我在hook的线程里进行unhook,可以顺利unload,在其它线程里进行unhook,则不能unload。但是原 ...

恭喜你解决问题。
PS:放源码(在内部区放)
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表