fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:3901回复:10

Hook ZwCreateKey的问题

楼主#
更多 发布于:2005-06-04 18:51
有什么有效的办法,可以区分 ZwCreateKey 请求具体是 Create Key 还是 Open Key???

谢谢!!
在交流中学习。。。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-04 19:32
我觉得先放它(ZwCreateKey)过去,在返回后判断Disposition的值,决定是创建还是打开比较简单,不知大家还有什么更简单的办法
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-04 19:42
我觉得先放它(ZwCreateKey)过去,在返回后判断Disposition的值,决定是创建还是打开比较简单,不知大家还有什么更简单的办法


如果放过去了就没法控制了。
我测试了,Disposition很多情况下都是NULL。
在交流中学习。。。
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-06-06 08:46
也许应该把ZwCreateKey反汇编后看一下,调试一下。
[b]万水千山总是情,回个帖子行不行?[/b]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-06-06 08:55
[quote]我觉得先放它(ZwCreateKey)过去,在返回后判断Disposition的值,决定是创建还是打开比较简单,不知大家还有什么更简单的办法


如果放过去了就没法控制了。
我测试了,Disposition很多情况下都是NULL。 [/quote]
这回不能再骗大侠的分了,得来点真格的了,否则就so shamed.
我跟了一下瑞星的实现办法,感觉还不错
瑞星hook的是NtCreateKey,但大侠肯定知道ZwCreateKey用不了两句就调用了NtCreateKey。由于NtOpenKey的参数是NtCreateKey子集,所以瑞星开始就调用NtOpenKey,根据它的返回值,如果成功,表明是打开,直接设置NtCreateKey的返回参数返回就可以了,如果失败表明是创建,失败后就再调用NtCreateKey创建
使用上面方法可以达到控制目的,而且由于多数是打开操作,因此上述方法对性能不会产生很大影响。
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2005-06-06 09:22
有什么有效的办法,可以区分 ZwCreateKey 请求具体是 Create Key 还是 Open Key???

谢谢!!

自己先用OPENKEY打开就知道是不是要创建了。
---内核开发合作或提供基础技术服务QQ:22863668 ---
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-06 09:33
问题前天已经搞定了,不过还得多谢几位了。
我的做法是在Hook ZwCreateKey的例程里,先调用ZwOpenKey,如果返回STATUS_SUCCESS,则说明是Open,直接返回。如果ZwOpenKey失败,则说明是Create,调用真实的ZwCreateKey即可。
在交流中学习。。。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-06-06 09:43
问题前天已经搞定了,不过还得多谢几位了。
我的做法是在Hook ZwCreateKey的例程里,先调用ZwOpenKey,如果返回STATUS_SUCCESS,则说明是Open,直接返回。如果ZwOpenKey失败,则说明是Create,调用真实的ZwCreateKey即可。

英雄所见略同啊 :D
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
506398911@qq.co
驱动牛犊
驱动牛犊
  • 注册日期2009-07-22
  • 最后登录2012-01-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2010-11-03 16:47
看了各位看法 发现很有道理 赞一个
wy79807545
驱动牛犊
驱动牛犊
  • 注册日期2010-04-29
  • 最后登录2013-10-01
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2011-01-05 09:47
也许应该把ZwCreateKey反汇编后看一下,调试一下。
instruder
论坛版主
论坛版主
  • 注册日期2010-03-10
  • 最后登录2011-02-15
  • 粉丝0
  • 关注7
  • 积分31分
  • 威望281点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2011-01-08 12:22
直接看wrk啊
游客

返回顶部