greensleeve
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2010-07-17
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望14点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1648回复:8

regmon在XP SP2下的问题2

楼主#
更多 发布于:2005-05-12 06:12
regmon version 4.2 , 在xpsp2下就蓝屏 , please help

最新喜欢:

threebagsthreeb...
袁飞
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
沙发#
发布于:2005-05-12 06:26
Use regmon v7.0
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-12 09:33
Use regmon v7.0

老大有源码吗,好像Sysinternals网站上不再公布了
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-12 09:38
regmon version 4.2 , 在xpsp2下就蓝屏 , please help

在XP下服务表已经变成只读的了
看一下这个帖子就明白了
http://www.driverdevelop.com/forum/html_91373.html?1115861846
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-05-12 10:25
修改CR0
---内核开发合作或提供基础技术服务QQ:22863668 ---
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-12 15:35
修改CR0

正是 :D
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
greensleeve
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2010-07-17
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望14点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-13 00:16
How to 修改CR0 ?
袁飞
greensleeve
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2010-07-17
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望14点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-13 00:51
Regmon 4.30 可以在XP SP2下运行,比较4.3和4.2的源代码,发现在获取系统服务表时,4.2用的是OSKRNL导出的变量,4.3却通过一个函数获得,它将这个函数封装在一个LIB文件里,没有源代码,下面我将两个版本的相关代码贴出来:

4.2 Version :

...
PSRVTABLE               ServiceTable;

#define SYSCALL(_function)  ServiceTable->ServiceTable[ *(PULONG)((PUCHAR)_function+1)]

...
//这一句可以在DriverEntry里看到,KeServiceDescriptorTable是导出变量
ServiceTable = KeServiceDescriptorTable;

4.3 Version :

//
// Pointer to system global service table
//
PVOID                   *KeServiceTablePointers;
SERVICE_HOOK_DESCRIPTOR *HookDescriptors;

...

typedef ULONG   ULONG_PTR;

#define SYSCALL_INDEX(_Function) *(PULONG)((PUCHAR)_Function+1)

#define HOOK_SYSCALL(_Function, _Hook, _Orig )  \\
    if( !HookDescriptors[ SYSCALL_INDEX(_Function) ].Hooked ) { \\
            _Orig = (PVOID) InterlockedExchange( (PLONG) &KeServiceTablePointers[ SYSCALL_INDEX(_Function) ], (LONG) _Hook ); \\
            HookDescriptors[ SYSCALL_INDEX(_Function) ].Hooked = TRUE; \\
    }

......
//下面一句也是从DriverEntry中找到的,我把它的原来的注释也贴上来:
//
    // Use a secret function to obtain a pointer to the system service
    // table. The function is in the object-only regmlib.lib because
    // Microsoft requested that it not be published.
    //
    KeServiceTablePointers = RegmonMapServiceTable( &HookDescriptors );

。。。
其中RegmonMapServiceTable()由一个LIB文件中导出,没能代马,所以不知它是怎么获得系统务表的,

有人知道吗?如果我想用4.2中的方法,怎么修改CR0才可以不死机呢?能不能把修改CR0的代码贴上来?谢谢谢谢了
袁飞
greensleeve
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2010-07-17
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望14点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-05-13 04:05
自已搞定了,把我的代码贴出来,请大虾们指正,我是临时报佛脚看了一下汇编的书,不知道这段汇编地不地道:

HookRegistry()
{
    ...
//以Hook ZwRegSetValueKey 为例
     RealRegSetValueKey = (PREGSETVALUEKEY)SYSCALL(ZwSetValueKey);
//将CRO 的16bit清0
_asm cli;
_asm mov ebx,cr0
_asm and ebx,0xfffeffff
_asm mov cr0,ebx
SYSCALL( ZwSetValueKey ) = (PVOID)HookRegSetValueKey;
//将CRO 的16bit置位
_asm mov ebx,cr0
_asm or  ebx,0x00010000
_asm mov cr0,ebx
_asm sti
...
}

UnHookRegistry()
{
...
_asm cli;
_asm mov ebx,cr0
_asm and ebx,0xfffeffff
_asm mov cr0,ebx
// UNHOOK_SYSCALL( ZwSetValueKey, HookRegSetValueKey, RealRegSetValueKey );
SYSCALL( ZwSetValueKey ) = (PVOID) RealRegSetValueKey;
_asm mov ebx,cr0
_asm or  ebx,0x00010000
_asm mov cr0,ebx
_asm sti
...
}
袁飞
游客

返回顶部