阅读:1649回复:8
regmon在XP SP2下的问题2
regmon version 4.2 , 在xpsp2下就蓝屏 , please help
|
|
最新喜欢:![]()
|
沙发#
发布于: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 ... } |
|
|
板凳#
发布于: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的代码贴上来?谢谢谢谢了 |
|
|
地板#
发布于:2005-05-13 00:16
How to 修改CR0 ?
|
|
|
地下室#
发布于:2005-05-12 15:35
修改CR0 正是 :D |
|
|
驱动老牛
![]() |
5楼#
发布于:2005-05-12 10:25
修改CR0
|
|
6楼#
发布于:2005-05-12 09:38
regmon version 4.2 , 在xpsp2下就蓝屏 , please help 在XP下服务表已经变成只读的了 看一下这个帖子就明白了 http://www.driverdevelop.com/forum/html_91373.html?1115861846 |
|
|
7楼#
发布于:2005-05-12 09:33
Use regmon v7.0 老大有源码吗,好像Sysinternals网站上不再公布了 |
|
|
8楼#
发布于:2005-05-12 06:26
Use regmon v7.0
|
|