flyboy2008
驱动牛犊
驱动牛犊
  • 注册日期2004-01-03
  • 最后登录2009-12-22
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1749回复:7

谁有完整的隐藏目录的原代码

楼主#
更多 发布于:2005-02-22 11:14
我按照网络上的文档写的文件隐藏,老是死机,重启计算机,请问谁有现成的可以使用的原代码。
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-22 12:26
不支持这样做,你可以贴出代码,大家帮你看看
技术交流:aasa2@21cn.com QQ群:10863699
paladinii
驱动中牛
驱动中牛
  • 注册日期2003-10-28
  • 最后登录2012-03-09
  • 粉丝0
  • 关注0
  • 积分282分
  • 威望74点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-22 13:21
事啊, 不要照搬人家的东西,把代码贴出来大家帮你看
Ideas for life!
flyboy2008
驱动牛犊
驱动牛犊
  • 注册日期2004-01-03
  • 最后登录2009-12-22
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-23 13:49

我在DriverEntry中添加如下代码
RealZwQueryDirectoryFile =(REALZWQUERYDIRECTORYFILE)(SYSTEMSERVICE(ZwQueryDirectoryFile));
   // (REALZWQUERYDIRECTORYFILE)(SYSTEMSERVICE(ZwQueryDirectoryFile)) = HookZwQueryDirectoryFile;

下面是HookZwQueryDirectoryFile函数

NTSTATUS HookZwQueryDirectoryFile(
    IN HANDLE hFile,
    IN HANDLE hEvent OPTIONAL,
    IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL,
    IN PVOID IoApcContext OPTIONAL,
    OUT PIO_STATUS_BLOCK pIoStatusBlock,
    OUT PVOID FileInformationBuffer,
    IN ULONG FileInformationBufferLength,
    IN FILE_INFORMATION_CLASS FileInfoClass,
    IN BOOLEAN bReturnOnlyOneEntry,
    IN PUNICODE_STRING PathMask OPTIONAL,
    IN BOOLEAN bRestartQuery)
{

NTSTATUS rc;
//ULONG CR0VALUE;

ANSI_STRING ansiFileName,ansiDirName,HideDirFile;
UNICODE_STRING uniFileName;

//初始化要过虑的文件名这里是debug.exe
RtlInitAnsiString(&HideDirFile,\"DBGVIEW.EXE\");

 // 执行真正的ZwQueryDirectoryFile函数
rc = ((REALZWQUERYDIRECTORYFILE)(RealZwQueryDirectoryFile))(
  hFile,
  hEvent,
  IoApcRoutine,
  IoApcContext,
  pIoStatusBlock,
  FileInformationBuffer,
  FileInformationBufferLength,
  FileInfoClass,
  bReturnOnlyOneEntry,
  PathMask,
  bRestartQuery);
   /*如果执行成功(而且FILE_INFORMATION_CLASS的值为FileBothDirectoryInformation,我们就进行处理,过滤*/
  if(NT_SUCCESS(rc)&& (FileInfoClass == FileBothDirectoryInformation))
  {
       PFILE_BOTH_DIR_INFORMATION pFileInfo;
       PFILE_BOTH_DIR_INFORMATION pLastFileInfo;
       BOOLEAN  bLastOne;
       //把执行结果赋给pFileInfo
       pFileInfo = (PFILE_BOTH_DIR_INFORMATION)FileInformationBuffer;
       pLastFileInfo = NULL;
       //循环检查
      do
     {
        bLastOne = !( pFileInfo->NextEntryOffset );
        RtlInitUnicodeString(&uniFileName,pFileInfo->FileName);
        RtlUnicodeStringToAnsiString(&ansiFileName,&uniFileName,TRUE);
        RtlUnicodeStringToAnsiString(&ansiDirName,&uniFileName,TRUE);
        RtlUpperString(&ansiFileName,&ansiDirName);

//打印结果,用debugview可以查看打印结果
        DbgPrint(\"ansiFileName :%s\\n\",ansiFileName.Buffer);
        DbgPrint(\"HideDirFile :%s\\n\",HideDirFile.Buffer);
  
        // 开始进行比较,如果找到了就隐藏这个文件或者目录
        if( RtlCompareMemory(ansiFileName.Buffer,HideDirFile.Buffer,HideDirFile.Length ) == HideDirFile.Length)
        {
             DbgPrint(\"This is HideDirFile!\\n\");
             if(bLastOne)
            {
                if(pFileInfo == (PFILE_BOTH_DIR_INFORMATION)FileInformationBuffer )
               {
                   rc = 0x80000006;  //隐藏文件或者目录;
               }
               else
              {
                 pLastFileInfo->NextEntryOffset = 0;
               }
               break;
            }
            else //指针往后移动
           {
              int iPos = ((ULONG)pFileInfo) - (ULONG)FileInformationBuffer;
              int iLeft = (ULONG)FileInformationBufferLength - iPos - pFileInfo->NextEntryOffset;
              RtlCopyMemory( (PVOID)pFileInfo, (PVOID)( (char *)pFileInfo + pFileInfo->NextEntryOffset ), (ULONG)iLeft );//原来这里是DWORD
              continue;
            }  

          }
  
         pLastFileInfo = pFileInfo;
         pFileInfo = (PFILE_BOTH_DIR_INFORMATION)((char *)pFileInfo + pFileInfo->NextEntryOffset);
  
       }while(!bLastOne);
  
  RtlFreeAnsiString(&ansiDirName);
  RtlFreeAnsiString(&ansiFileName);
  
}

return(rc);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
}
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-23 15:21
从文件驱动做比较简单
技术交流:aasa2@21cn.com QQ群:10863699
tanli
驱动牛犊
驱动牛犊
  • 注册日期2002-10-05
  • 最后登录2005-03-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-25 16:22
下面这一段有问题。

RtlCopyMemory( (PVOID)pFileInfo, (PVOID)( (char *)pFileInfo + pFileInfo->NextEntryOffset ), (ULONG)iLeft );//原来这里是DWORD
abcd0106
驱动牛犊
驱动牛犊
  • 注册日期2007-02-21
  • 最后登录2009-01-05
  • 粉丝0
  • 关注0
  • 积分211分
  • 威望32点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-02-27 16:28
有例子了,学习中
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
7楼#
发布于:2008-02-27 19:56
古代时期的事情了~
没有战争就没有进步 X3工作组 为您提供最好的军火
游客

返回顶部