阅读:1704回复:14
关于Hook Zw*的问题!用户被禁言,该主题自动屏蔽! |
|
沙发#
发布于:2004-12-15 08:36
那你是通过那种方式hook的
|
|
|
板凳#
发布于:2004-12-15 12:43
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2004-12-15 15:11
那你参看fileMom
|
|
|
地下室#
发布于:2004-12-15 19:34
用户被禁言,该主题自动屏蔽! |
|
5楼#
发布于:2004-12-15 19:40
不懂
|
|
6楼#
发布于:2004-12-17 17:58
用户被禁言,该主题自动屏蔽! |
|
7楼#
发布于:2004-12-23 07:06
用户被禁言,该主题自动屏蔽! |
|
8楼#
发布于:2004-12-23 10:46
呵呵,其实我也是新手,大家讨论讨论。
不是太明白你的“根本没有调用真正的函数”是什么意思?是没有调用你Hook的ZwOpenFile还是上层根本就没有调用这个函数? 我曾经用Hook INT 2E的方法拦截了NtCreateFile和NtReadFile等系统服务,如果在你自己定义的函数当中返回错误值,并且没有调用真正的服务函数,应该能够正确的取消操作的。 |
|
9楼#
发布于:2004-12-23 16:32
我正确的捕捉到操作,例如ZwOpenFile,但是我想取消这个操作该怎么办呢,我给出了STATUS_ACCESS_DENIED也不行(根本没有调用真正的函数)?遇到这种问题该怎么办,不像过滤驱动里直接给出一个状态值就可以了,哪位高手可以指点一下。 可以的, 我试过RegMon的直接返回STATUS_ACCESS_DENIED操作, 能够成功保护没个键值 |
|
|
10楼#
发布于:2004-12-23 20:25
用户被禁言,该主题自动屏蔽! |
|
11楼#
发布于:2004-12-26 14:13
这个与ZW*函数本身的实现有关系,有的不调用真正的函数而是直接返回一个SUCCESS信号就可以,系统不会有提示;而有的就不行,我认为主要是看参数中是否有传出来的OUT。
|
|
12楼#
发布于:2004-12-26 22:44
用户被禁言,该主题自动屏蔽! |
|
13楼#
发布于:2004-12-27 15:54
要把ZwCreateFile也处理了,试试 |
|
14楼#
发布于:2004-12-29 18:16
Hook ntoskrnl.exe中的函数的方法有很多,给你一种最简单的
__declspec(dllimport) ServiceDescriptorTableEntry_t KeServiceDescriptorTable; RealZwXXXXXXXX = (ZWQUERYSYSTEMINFORMATION)(KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)ZwXXXXXXXX+1)]); _asm { CLI MOV EAX, CR0 AND EAX, NOT 10000H //内核可写 MOV CR0, EAX } //Hook function (KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)ZwXXXXXXXX+1)]) = (ULONG)HookZwXXXXXXXX; _asm { MOV EAX, CR0 OR EAX, 10000H MOV CR0, EAX STI } |
|