注册表写入,使用WIN32 api 只能写入字符串,若以 '\0' 为起始字符,WIN32 API便不能使用了。
最近看见一篇文章,此文阐述了有关于以 '\0' 为起始字符的字符串作位注册表键名的, 此功能可对注册表键名进行隐藏。
HINSTANCE hinstStub = GetModuleHandle(_T("ntdll.dll"));
// 获取ntdll.dll模块句柄
NtOpenKey = (LPNTOPENKEY)GetProcAddress(hinstStub, "NtOpenKey");
// 获取NtOpenKey函数地址其中结构体
NTOPENKEY结构细节如下:
typedef NTSTATUS (STDAPICALLTYPE NTOPENKEY)
{
IN HANDLE KeyHandle,
IN ULONG DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes
};
typedef NTOPENKEY FAR * LPNTOPENKEY;具体使用方法可学习:
1、微软MSDN : https://msdn.microsoft.com/en-us/library/windows/hardware/ff567122(v=vs.85).aspx 2、Dan Madden 代码 : https://www.codeproject.com/Articles/14508/Registry-Manipulation-Using-NT-Native-APIs