天天看點

native api 之 系統資料庫

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

繼續閱讀