2011-03-25 103 views
2

我知道這樣的工具 http://portableapps.com/development/projects/registry_rapper捕捉註冊請求C++

RegRap.exe可通過PARAM其他.exe文件和捕捉的請求得到註冊表,並保存到的.ini

這樣很好,但我需要snippt代碼來設置這樣hundler我的C++程序中,並對於給定的註冊鍵返回自己的價值......

RegRap.exe與NSIS腳本編寫的,這就是爲什麼不妄作:(

但可能是有人已知的其他親只有用C++?

Thx,對不起我的英語不好。

回答

1

如果你想跟蹤程序中的註冊表訪問,你可以#定義註冊表API函數,提供你的鉤子,並在你的鉤子中跟蹤它。

//in your stdafx.h, or some other universally included file 
#define RegCreateKeyEx MyRegCreateKeyEx 


//somewhere else 
#undef RegCreateKeyEx 

LONG WINAPI MyRegCreateKeyEx(stuff...) 
{ 
    //Track 
    //Call the real RegCreateKeyEx 
} 

這可能是掛鉤API的最簡單方法。如果您想通過程序跟蹤註冊表的使用情況,但不在代碼之外(即在庫或DLL中),則不起作用。然後更先進的技術是爲了。

此外,由Mark Russinovich編寫考慮的Process Monitor:http://technet.microsoft.com/en-us/sysinternals/bb896645

這不是一個綱領性掛鉤,但一個真棒工具各地,因此值得堵塞。它通過您的進程監控註冊表訪問,然後進行監控。

0

如果要使用純C++,請查看庫EasyHookDetours。兩者都用於這種功能級別的掛鉤。 EasyHook支持C++和C#,32位和64位,而Detours有些過時,只適用於32位C++(即使在64位操作系統上運行它也會導致程序崩潰)。

您需要在目標進程中安裝鉤子,可以通過將代碼加載爲DLL或創建進程(掛起),安裝鉤子然後運行它。

在EasyHook是去是這樣的:

LhInstallHook(&RegCreateKeyEx, &MyRegCreateKeyEx, &hookstruct); 

您也可以掛接函數庫中是連接到使用Windows API來獲取地址。