sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
阅读:1704回复:14

关于Hook Zw*的问题!

楼主#
更多 发布于:2004-12-14 19:24
用户被禁言,该主题自动屏蔽!
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-15 08:36
那你是通过那种方式hook的
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-15 12:43
用户被禁言,该主题自动屏蔽!
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-15 15:11
那你参看fileMom
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-15 19:34
用户被禁言,该主题自动屏蔽!
linhf
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2006-06-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-15 19:40
不懂
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-17 17:58
用户被禁言,该主题自动屏蔽!
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-23 07:06
用户被禁言,该主题自动屏蔽!
joshua_yu
驱动小牛
驱动小牛
  • 注册日期2004-12-06
  • 最后登录2010-12-01
  • 粉丝0
  • 关注0
  • 积分428分
  • 威望54点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-23 10:46
呵呵,其实我也是新手,大家讨论讨论。

不是太明白你的“根本没有调用真正的函数”是什么意思?是没有调用你Hook的ZwOpenFile还是上层根本就没有调用这个函数?

我曾经用Hook INT 2E的方法拦截了NtCreateFile和NtReadFile等系统服务,如果在你自己定义的函数当中返回错误值,并且没有调用真正的服务函数,应该能够正确的取消操作的。
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-23 16:32
  我正确的捕捉到操作,例如ZwOpenFile,但是我想取消这个操作该怎么办呢,我给出了STATUS_ACCESS_DENIED也不行(根本没有调用真正的函数)?遇到这种问题该怎么办,不像过滤驱动里直接给出一个状态值就可以了,哪位高手可以指点一下。


可以的,
我试过RegMon的直接返回STATUS_ACCESS_DENIED操作,
能够成功保护没个键值
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-23 20:25
用户被禁言,该主题自动屏蔽!
lghtly
驱动牛犊
驱动牛犊
  • 注册日期2004-10-14
  • 最后登录2005-11-29
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-26 14:13
这个与ZW*函数本身的实现有关系,有的不调用真正的函数而是直接返回一个SUCCESS信号就可以,系统不会有提示;而有的就不行,我认为主要是看参数中是否有传出来的OUT。
sharkmouse
禁止发言
禁止发言
  • 注册日期2003-05-05
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1355分
  • 威望7163点
  • 贡献值1点
  • 好评度24点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-26 22:44
用户被禁言,该主题自动屏蔽!
ttzwater
驱动小牛
驱动小牛
  • 注册日期2003-06-07
  • 最后登录2011-10-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望23点
  • 贡献值0点
  • 好评度22点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-27 15:54

要把ZwCreateFile也处理了,试试
shadow3
驱动牛犊
驱动牛犊
  • 注册日期2004-05-28
  • 最后登录2010-04-07
  • 粉丝0
  • 关注0
  • 积分101分
  • 威望13点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
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
}
游客

返回顶部