阅读:1355回复:7
Hook 系统服务的怪问题(NT/2k下正常,XP下蓝屏)
SYSCALL(ZwOpenKey) = (PVOID)HookRegOpenKey;
类似这类代码,在没有装ddk的xp机子上,就蓝屏。 如果去掉,就没事,当然就不能Hook了。 但是在xp上装了ddk后就可以正常了。 还有一点就是,在xp下,为什么,基本的驱动都不能动态卸载? 我只能一次最高给55分。 |
|
最新喜欢:![]() |
沙发#
发布于:2004-09-04 22:30
谢谢你的解释。赫赫,wp位,在以前别人的贴子里看过,但我没想到。
不过,那xp下为什么可以动态启动驱动,但为什么不能动态卸载呢?而在2k下,启动和卸载都正常。 |
|
板凳#
发布于:2004-09-04 09:56
当然如果系统有些重要的数据不想被修改的话,也可以设为只读属性,进行保护,MS可不希望你们随意修改SERVICETABLE.........
|
|
|
地板#
发布于:2004-09-04 09:53
这个涉及到X86的保护模式知识,在80486以前的CPU中,RING0代码段可以修改任何数据,不管他有没有页保护,但486以后在CR0的位16引入了WP保护位,如果设置的话即使RING0代码段修改只读页也会引起异常.
可能这和COW有关,不然系统无法在RING0中处理COW........ |
|
|
地下室#
发布于:2004-09-04 05:49
忘了说一点就是,为什么在2k也可以动态卸载,而xp下不能呢?
|
|
5楼#
发布于:2004-09-04 01:37
#define DISABLEWRITEPROTECT 虽然没试这段代码,但是我还是非常感谢两位特别是wowocock 多次关注我的贴子,并得到帮助。 我明天就试一下。 我的代码里只有 _asm cli SYSCALL(ZwOpenKey) = (PVOID)HookRegOpenKey; _asm sti 为什么不行?我对汇编不是很了解。 |
|
6楼#
发布于:2004-09-03 17:52
#define DISABLEWRITEPROTECT \
_asm cli \ _asm mov eax,cr0 \ _asm and eax,0fffeffffh \ _asm mov cr0,eax #define ENABLEWRITEPROTECT \ _asm mov eax,cr0 \ _asm or eax,10000h \ _asm mov cr0,eax \ _asm sti DISABLEWRITEPROTECT SYSCALL(ZwOpenKey) = (PVOID)HookRegOpenKey; ENABLEWRITEPROTECT |
|
|
7楼#
发布于:2004-09-03 16:55
嘿,你要考虑内存写保护了,多看看帖子
|
|