简单的方法来挂接特定进程的registry访问

有一个简单的方法来挂我的代码执行的进程的registry访问? 我知道SetWindowsHookEx和朋友,但它太复杂了…我仍然有希望,有一种简单的Unix LD_PRELOAD

Solutions Collecting From Web of "简单的方法来挂接特定进程的registry访问"

阅读DLL注入的理论: http : //en.wikipedia.org/wiki/DLL_injection

不过,我会在这里为您提供一个DLL注入片段: http : //www.dreamincode.net/code/snippet407.htm

一旦你在外部应用程序的内存中进行注入,做这些类型的事情是相当容易的,你可能也是这个过程的一部分。

有一些叫做绕行的东西,我相信是你要找的东西,它只是挂钩一个函数,当这个进程调用它时,它会执行你自己的函数。 (为了确保它不会崩溃,请在函数结束时调用该函数)

所以如果你想通过CreateRegKeyEx编写自己的函数

http://msdn.microsoft.com/en-us/library/ms724844%28v=vs.85%29.aspx)

它可能看起来像这样:

  LONG WINAPI myRegCreateKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD Reserved, LPTSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition) { //check for suspicious keys being made via the parameters RegCreateKeyEx(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition); } 

您可以在这里得到一个名为DetourXS的非常好的绕道库: http ://www.gamedeception.net/threads/10649-DetourXS

这里是他如何建立一个绕道使用它的示例代码:

  #include <detourxs.h> typedef DWORD (WINAPI* tGetTickCount)(void); tGetTickCount oGetTickCount; DWORD WINAPI hGetTickCount(void) { printf("GetTickCount hooked!"); return oGetTickCount(); } // To create the detour oGetTickCount = (tGetTickCount) DetourCreate("kernel32.dll", "GetTickCount", hGetTickCount, DETOUR_TYPE_JMP); // ...Or an address oGetTickCount = (tGetTickCount) DetourCreate(0x00000000, hGetTickCount, DETOUR_TYPE_JMP); // ...You can also specify the detour len oGetTickCount = (tGetTickCount) DetourCreate(0x00000000, hGetTickCount, DETOUR_TYPE_JMP, 5); // To remove the detour DetourRemove(oGetTickCount); 

如果你不能说,那个代码片段挂钩了GetTickCount(),并且每当函数被调用时,他都会写入“GetTickCount hooked!”。 – 然后他执行函数GetTickCount是它的意图。

对不起,信息如此分散,但我希望这有助于。 🙂 – 我意识到这是一个老问题。 –

大多数winapi调用为模块间调用生成符号表条目,这使得钩住​​它们非常简单,只需要覆盖IAT地址即可。 使用诸如MSDetours之类的东西,可以在几行代码中安全地完成。 MSDetours还提供了一个工具来注入一个自定义的DLL进入目标进程,所以你可以做挂钩

SetWindowsHookEx根本无济于事 – 它提供了不同的功能。

检查是否https://web.archive.org/web/20080212040635/http://www.codeproject.com/KB/system/RegMon.aspx有帮助&#x3002; SysInternals的RegMon使用一个非常复杂的内核模式驱动程序。

更新:我们公司提供CallbackRegistry产品,让您无需追踪注册表操作。 顺便提一下,我们可以根据要求提供免费的非商业许可(需要逐个审批)。