系統資料庫寫入,使用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