是否有一种简单的方法来挂接我的代码执行的进程的注册表访问?我知道SetWindowsHookEx
和朋友,但它太复杂了......我仍然有希望,有作为LD_PRELOAD
上Unix
简单的方式...为特定进程挂接注册表访问的简单方法
回答
和SetWindowsHookEx不会在所有帮助 - 它提供了不同的功能。
检查https://web.archive.org/web/20080212040635/http://www.codeproject.com/KB/system/RegMon.aspx是否有帮助。 SysInternals的RegMon使用一个非常复杂的内核模式驱动程序。
更新:我们公司提供CallbackRegistry产品,让您可以无忧无虑地跟踪注册表操作。顺便提一下,我们可以根据要求提供免费的非商业许可证(需要根据具体情况进行审批)。
阅读上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的上钩!” - 然后他执行函数GetTickCount是它的意图。
对不起,信息如此分散,但我希望这有助于。 :) - 我意识到这是一个古老的问题。 -
大多数winapi调用为模块间调用生成符号表条目,这使得钩住它们非常简单,您只需要覆盖IAT地址即可。使用诸如MSDetours之类的东西,可以通过几行代码安全地完成。 MSDetours还提供了将自定义dll注入目标进程的工具,以便您可以执行挂接操作。
- 1. 从System.Diagnostics.Process.Start()方法启动的进程访问注册表项
- 2. Docker无法访问openshift的注册表
- 3. 注册表访问问题
- 4. 本地化InstallShield注册表项的最简单方法
- 5. 无法访问某些注册表项
- 6. 无法访问注册表HKLM键
- 7. 以编程方式访问注册表时出现问题
- 8. 访问Windows注册表Python
- 9. vb6:访问注册表值
- 10. 访问Windows注册表
- 11. 从ASP.Net注册表访问
- 12. 可访问Bluemix容器注册表进行访问控制?
- 13. 简单wordpress注册
- 14. 查找哪个进程访问注册表?
- 15. 简单的注册表单php-sql-flash连接?
- 16. 使用loadappinit_dlls注册表项将dll挂接到正在运行的进程
- 17. 注册多线程的Windows注册表的进程的副本
- 18. 从node.js访问memcached的简单方法
- 19. 自定义操作无法访问注册表项进行读取
- 20. Python:Windows注册表配置单元访问不使用注册表API
- 21. 以编程方式访问JMX控制台的简单方法
- 22. 注册表监控,包括内核模式注册表访问?
- 23. 的Windows 10的注册表访问
- 24. 注册表访问异常问题
- 25. 定制moodle注册表单
- 26. 注册插件,访问注册数据
- 27. Grails简单注册/登录表格
- 28. Java Bean简单注册表格
- 29. 在访问特定URL时绕过Drupal缓存的简单方法
- 30. 关于注册表的简单问题CreateSubKey