znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
阅读:1328回复:10

大家讨论一下,目录隐藏的问题,主要是ntfs上

楼主#
更多 发布于:2005-04-04 17:24
参阅了先前网友的帖子,隐藏的方法在osr文档上也有,但对于特殊的目录查询请求,很难有效。
在ntfs上,经常会发生查询请求只返回一个entry,即它的nextoffset指向0,这时,这项很难处理,因为你将它清空后,会生产一个空的文件(即不是目录也不是文件,因为你把它的属性清除了) ,而且还有其它附作用,现在的有什么方法可以处理它?

多个entry的搬移大法不能用了。

最新喜欢:

cyliucyliu
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-04-05 12:36
参阅了先前网友的帖子,隐藏的方法在osr文档上也有,但对于特殊的目录查询请求,很难有效。
在ntfs上,经常会发生查询请求只返回一个entry,即它的nextoffset指向0,这时,这项很难处理,因为你将它清空后,会生产一个空的文件(即不是目录也不是文件,因为你把它的属性清除了) ,而且还有其它附作用,现在的有什么方法可以处理它?

多个entry的搬移大法不能用了。

 
---内核开发合作或提供基础技术服务QQ:22863668 ---
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-04-05 12:43
恩?
怎么没东西
试试改文件名如何,改成不识别的。
---内核开发合作或提供基础技术服务QQ:22863668 ---
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-06 10:03
参阅了先前网友的帖子,隐藏的方法在osr文档上也有,但对于特殊的目录查询请求,很难有效。
在ntfs上,经常会发生查询请求只返回一个entry,即它的nextoffset指向0,这时,这项很难处理,因为你将它清空后,会生产一个空的文件(即不是目录也不是文件,因为你把它的属性清除了) ,而且还有其它附作用,现在的有什么方法可以处理它?

多个entry的搬移大法不能用了。

 


把该irp再次交给下层文件系统驱动处理。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地下室#
发布于:2005-04-06 10:11
能说一下吗?
详细一点:)
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-06 13:43
能说一下吗?
详细一点:)


do
{
IoSetCompletionRoutine(...);

IoCallDriver();

KeWaitForSingleObject();

// 在这里隐藏目录,

...

// 然后判断
// 如果所有目录被隐藏,包括你说的只返回一个entry,而该entry也被隐藏的情况
// 那么就 continue,继续让文件系统驱动处理,文件系统驱动会帮你把所有事情搞定的
// 否则 break

} while (1);

IoCompleteRequest();
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
6楼#
发布于:2005-04-06 14:56
感觉这个流程有点不对呀

IoCalldriver后才能得到目录内容缓冲区,就是那个QueryBuffer.
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-07 08:47
IoCallDriver();   <----------------------|
                                         |
KeWaitForSingleObject();                 |
                                         |
// 在这里隐藏目录!!!!!!                  |
                                         |
// 这里不是已经调用过IoCallDriver了吗 ---|
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
8楼#
发布于:2005-04-07 11:59
你说的意思是不是和你以前帖在站上的源码表达的是一致的?
如果是,那就是问题所在,不行:)


关键的地方是: 如果是只有一个或所有的都隐藏,怎么办?
你下发到下层没啥用,只不过是又得到一个querybuffer
如果至少有一项不用隐藏,可以用搬移大法,但如果说只有一项而且是隐藏的,或全部要隐藏,怎么办? 这是问题所有.我试过了所有方法,包括返回状态,清零bufer,都没用.如果返回rootkit上的状态(status_no_more_file 或status_no_such_file) 会影响其它查询,表现为所有的目录都被隐藏了.

你在判断目录是否需要隐藏时,已经调用过了iocalldriver,然后呢?


我分析推测,上层会认为至少有一项需要显示,现在没有好的办法解决这个问题.

如果你的办法确实可行,烦请更细点:)

[编辑 -  4/7/05 by  znsoft]
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-07 12:37
对,下发到下层又会返回一个QueryBuffer,不过这个QueryBuffer和上次返回的结果不一样,所以你可以返回这个QueryBuffer,如果这个QueryBuffer你也要隐藏,那就继续下发。。。最后你总会得到一个不用隐藏的QueryBuffer,或者返回no_more_files(or no_such_file???),此时QueryBuffer内容,文件系统已经帮你处理好了
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
10楼#
发布于:2005-04-07 12:47
ok.谢谢,下周去试试!

http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部