zoukankan      html  css  js  c++  java
  • Ring3下Hook NtQueryDirectoryFile隐藏文件

    NTSTATUS WINAPI Hook_NtQueryDirectoryFile(IN HANDLE FileHandle,IN HANDLE Event OPTIONAL,
    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,IN PVOID ApcContext OPTIONAL,
    OUT PIO_STATUS_BLOCK IoStatusBlock,OUT PVOID FileInformation,
    IN ULONG FileInformationLength,IN FILE_INFORMATION_CLASS FileInformationClass,
    IN BOOLEAN ReturnSingleEntry, IN PUNICODE_STRING FileName OPTIONAL,IN BOOLEAN RestartScan)
    {
    NTSTATUS Status=STATUS_SUCCESS;
    Status=OldNtQueryDirectoryFile(FileHandle,Event,ApcRoutine,ApcContext,
      IoStatusBlock,FileInformation,FileInformationLength,
      FileInformationClass,ReturnSingleEntry,FileName,RestartScan);

    if (!NT_SUCCESS(Status))
    {
      return Status;
    }

    //////////////////////////////////
    if (FileBothDirectoryInformation==FileInformationClass)
    {
      FILE_BOTH_DIRECTORY_INFORMATION* pFileInfo = (FILE_BOTH_DIRECTORY_INFORMATION*)FileInformation;
      FILE_BOTH_DIRECTORY_INFORMATION* pLastFileInfo = NULL;
      BOOL bLastFlag=FALSE;
      do
      {
       bLastFlag=!(pFileInfo->NextEntryOffset);
       if (NULL!=wcsstr(pFileInfo->FileName,L"1.hook"))
       {
        OutputDebugStringW(L"已发现目标");
        if (bLastFlag) //链表里最后一个文件
        {

         pLastFileInfo->NextEntryOffset=0;
         break;
        }
        else
        {
         int iPos = (ULONG)pFileInfo - (ULONG)FileInformation;
         int iLeft = (ULONG)FileInformationLength - iPos - pFileInfo->NextEntryOffset;

         RtlCopyMemory( (PVOID)pFileInfo, (PVOID)( (char *)pFileInfo + pFileInfo->NextEntryOffset ), iLeft );
                          continue;
        }
       }

       pLastFileInfo=pFileInfo;
       pFileInfo=(PFILE_BOTH_DIRECTORY_INFORMATION)((CHAR*)pFileInfo+pFileInfo->NextEntryOffset);

      }while(!bLastFlag);
    }
    return Status;
    }

    http://www.cnblogs.com/lzjsky/archive/2010/12/01/1892702.html

  • 相关阅读:
    iptables 常用命令解析
    iptables 常用处理动作
    centos7 中iptables、firewalld 和 netfilter 的关系
    iptables 的几个状态
    centos7 中没有service iptables save指令来保存防火墙规则
    iptables 数据走向流程
    数据库PDO简介
    php连接mySql,加密函数
    php数组,常量,遍历等
    php的会话控制
  • 原文地址:https://www.cnblogs.com/findumars/p/5625137.html
Copyright © 2011-2022 走看看