首页
社区
课程
招聘
[旧帖] [求助]菜鸟请教一个minifilter隐藏文件的问题 0.00雪花
发表于: 2014-2-8 11:10 3190

[旧帖] [求助]菜鸟请教一个minifilter隐藏文件的问题 0.00雪花

2014-2-8 11:10
3190
看了网上用minifilter隐藏文件的代码,自己照着做了一下,结果测试的时候发现问题,如果文件数目少了可以正确隐藏和显示,但是如果文件数目多了之后,部分该隐藏的文件却没有被隐藏掉,但是部分该显示的文件却被隐藏掉,不知道怎么回事,求大神指教,如果能给一段隐藏部分的代码参考最好,隐藏部分的代码如下

                do
                {

                        //Byte offset of the next FILE_ID_BOTH_DIR_INFORMATION entry
                        DbgPrint("file name buffer length is %d,filename length is %d\n",wcslen(currentFileIdInfo->FileName),currentFileIdInfo->FileNameLength);
                        nextOffset = currentFileIdInfo->NextEntryOffset;     

                        nextFileIdInfo = (PFILE_ID_BOTH_DIR_INFORMATION)((PCHAR)(currentFileIdInfo) + nextOffset);            
                        if (currentFileIdInfo->FileAttributes == FILE_ATTRIBUTE_DIRECTORY)//Îļþ¼Ð
                        {
                                FunctionPionter = ChkDir;
                        }
                        else
                        {
                                FunctionPionter = IsFileInUpLoadAnlyData;
                        }
                        if(/*FunctionPionter(currentFileIdInfo->FileName) == FALSE*/wcsstr(currentFileIdInfo->FileName,L"xls") != NULL)
                        {
                                if (previousFileIdInfo == currentFileIdInfo)
                                {
                                        //RtlCopyMemory(currentFileIdInfo->FileName,L"..",4);

                                        RtlZeroMemory(currentFileIdInfo->FileName,currentFileIdInfo->FileNameLength);
                                //        ExFreePool(currentFileIdInfo->FileName);
                                       
                               

                                        FltSetCallbackDataDirty( Data );
                                }
                                if( nextOffset == 0 )
                                {
                                        previousFileIdInfo->NextEntryOffset = 0;
                                }
                                else
                                {
                                        previousFileIdInfo->NextEntryOffset = (ULONG)((PCHAR)currentFileIdInfo - (PCHAR)previousFileIdInfo) + nextOffset;

                                }
                                modified = 1;
                        }
                        else
                        {
                                removedAllEntries = 0;               
                                previousFileIdInfo = currentFileIdInfo;               
                        }
                        currentFileIdInfo = nextFileIdInfo;

                } while( nextOffset != 0 );
        }

        if( modified )
        {
                if( removedAllEntries )
                {

                        Data->IoStatus.Status = STATUS_NO_MORE_FILES;
                }
                else
                {
                        FltSetCallbackDataDirty( Data );
                       
        }
        }  

测试用了640个txt文件,640个xls文件,隐藏xls文件,结果显示了639个文件,但是其中有两个xls文件,txt只显示了637个,请教大神这是为什么

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持了。。。
2014-2-11 19:41
0
雪    币: 261
活跃值: (547)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
do while 摘链  会跳过链表最末尾那个文件。。
2019-5-12 00:58
0
游客
登录 | 注册 方可回帖
返回
//