sxbyl
驱动牛犊
驱动牛犊
  • 注册日期2001-04-29
  • 最后登录2003-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1517回复:2

关于98下隐藏文件的一个问题,请大家指点一下

楼主#
更多 发布于:2002-12-23 11:16
我要实现在98下隐藏文件,参考了FileMon
我的想法是这样,当hook到IFSFN_SEARCH、IFSFN_FINDOPEN或IFSFN_FINDNEXT操作时,比较被操作的文件名和被隐藏的文件名,如果是同一个文件,则hook函数不返回本次操作结果,而是返回再次调用FindNext的结果。
但我在具体实现时碰到一些问题,就是IFSFN_FINDNEXT返回的那个_WIN32_FIND_DATA结构中没有路径信息,我没法在这里判断搜索到的文件是不是被隐藏的文件。用FileMon的方法,在FindOpen时将路径和句柄关联起来,放到哈希表里,FindNext是去查询哈希表,也只能解决一部分问题,如果钩子函数是在文件搜索期间被挂接的,那么哈希表里就不会有Find句柄的信息。我看FileMon的FilemonGetFullPath在哈希表里查不到时,调用了下一层驱动来获取完整路径信息,我照猫画虎,想使用同样的方法,但我的PrevHook总给我返回8号错误,说内存不足,这是怎么搞的?我的98是在虚拟机下执行的,开了128M内存,不可能真的内存不足的。代码基本和FileMon的一样,但总是返回8号错误,郁闷!我虽然怀疑是不是哪个地方的参数没有初始化(比如我提供的缓冲区大小),但FileMon也没作任何初始化啊,奇怪~
还有,我发现.ifs_hndl->hf_misc->hm_func那八个回调函数地址在IFSFN_FINDOPEN 时是无效的,这是怎么回事?我感觉不太应该啊。

我第一次接触驱动编程,很菜,大家一定要帮忙啊!谢谢了!

最新喜欢:

lsq77lsq77
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-27 00:34
你的vxd应该用static。
IFSFN_SEARCH好像不用做。
ifs_hndl->hf_misc->hm_func是由fsd填写的,只有在调用previous hook或fsd routine以后才会有内容,DDK里面写的很清楚。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
sxbyl
驱动牛犊
驱动牛犊
  • 注册日期2001-04-29
  • 最后登录2003-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-27 09:36
我现在是已经决定用静态加载了,隐藏文件的功能也实现了,不过用的方法有点不太好。

隐藏文件最麻烦的是在FINDOPEN的返回结果中第一个就是要隐藏的文件,这种情况下就需要在OPEN中调用FINDNEXT函数,但这个函数指针我不知道该怎么获取。我现在的方法是用一个变量保存IFSFN_FINDNEXT函数指针和IFSFN_FINDOPEN函数指针之间的偏移量,然后在IFSFN_FINDOPEN中如果要隐藏某个文件的时候用OPEN的指针加上那个偏移量,就是FINDNEXT指针了,运行是没什么问题,但我想应该有更正规的方法,请指教!

至于那个SEARCH,我在写代码的时候查了文档,没发现在应用态有什么对应的操作函数(也可能是看漏了),所以我也实现这部分代码。
游客

返回顶部