阅读:1517回复:2
关于98下隐藏文件的一个问题,请大家指点一下
我要实现在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 时是无效的,这是怎么回事?我感觉不太应该啊。 我第一次接触驱动编程,很菜,大家一定要帮忙啊!谢谢了! |
|
最新喜欢:lsq77 |
沙发#
发布于:2002-12-27 00:34
你的vxd应该用static。
IFSFN_SEARCH好像不用做。 ifs_hndl->hf_misc->hm_func是由fsd填写的,只有在调用previous hook或fsd routine以后才会有内容,DDK里面写的很清楚。 |
|
|
板凳#
发布于:2002-12-27 09:36
我现在是已经决定用静态加载了,隐藏文件的功能也实现了,不过用的方法有点不太好。
隐藏文件最麻烦的是在FINDOPEN的返回结果中第一个就是要隐藏的文件,这种情况下就需要在OPEN中调用FINDNEXT函数,但这个函数指针我不知道该怎么获取。我现在的方法是用一个变量保存IFSFN_FINDNEXT函数指针和IFSFN_FINDOPEN函数指针之间的偏移量,然后在IFSFN_FINDOPEN中如果要隐藏某个文件的时候用OPEN的指针加上那个偏移量,就是FINDNEXT指针了,运行是没什么问题,但我想应该有更正规的方法,请指教! 至于那个SEARCH,我在写代码的时候查了文档,没发现在应用态有什么对应的操作函数(也可能是看漏了),所以我也实现这部分代码。 |
|