wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1355回复:7

Hook 系统服务的怪问题(NT/2k下正常,XP下蓝屏)

楼主#
更多 发布于:2004-09-03 15:25
SYSCALL(ZwOpenKey) = (PVOID)HookRegOpenKey;

类似这类代码,在没有装ddk的xp机子上,就蓝屏。
如果去掉,就没事,当然就不能Hook了。

但是在xp上装了ddk后就可以正常了。

还有一点就是,在xp下,为什么,基本的驱动都不能动态卸载?

我只能一次最高给55分。


最新喜欢:

LeopardLeopar...
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-04 22:30
谢谢你的解释。赫赫,wp位,在以前别人的贴子里看过,但我没想到。

不过,那xp下为什么可以动态启动驱动,但为什么不能动态卸载呢?而在2k下,启动和卸载都正常。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-09-04 09:56
当然如果系统有些重要的数据不想被修改的话,也可以设为只读属性,进行保护,MS可不希望你们随意修改SERVICETABLE.........
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-09-04 09:53
这个涉及到X86的保护模式知识,在80486以前的CPU中,RING0代码段可以修改任何数据,不管他有没有页保护,但486以后在CR0的位16引入了WP保护位,如果设置的话即使RING0代码段修改只读页也会引起异常.
可能这和COW有关,不然系统无法在RING0中处理COW........
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-04 05:49
忘了说一点就是,为什么在2k也可以动态卸载,而xp下不能呢?
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-04 01:37
#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  


虽然没试这段代码,但是我还是非常感谢两位特别是wowocock
多次关注我的贴子,并得到帮助。
我明天就试一下。

我的代码里只有
_asm cli
SYSCALL(ZwOpenKey) = (PVOID)HookRegOpenKey;
_asm sti

为什么不行?我对汇编不是很了解。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
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
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-03 16:55
嘿,你要考虑内存写保护了,多看看帖子
游客

返回顶部