C ++钩子进程和显示状态

时间:2010-05-24 19:36:32

标签: c++ dll hook

好的,我正在慢慢学习C ++。我熟悉所有的控制台语法和一切,但现在我正在进行Windows编程。现在我想要做的是创建一个DLL,我注入一个进程,所以它被挂钩。我只想要C ++应用程序,它有文本,如果成功注入了“Hooked”,并且如果发生错误则会出错。或者即使我可以在没有DLL的情况下执行此操作,只需打开一个可执行文件,当我尝试挂钩的某个进程打开时,状态将更改为“Hooked”。我还有一个safaribooksonline.com帐户,所以如果有任何好读,你会推荐,只需写下来。感谢

3 个答案:

答案 0 :(得分:3)

我想你可能会向后看这个。在C / C ++中,应用程序“拉”一个DLL而不是将DLL“注入”到应用程序中。通常对于插件/钩子,有一些机制可以通知应用程序DLL的可用性(通常只是它存在于特定目录中),并且配置文件或其他一些逻辑用于指示应用程序显式加载库,提取函数或两个,并调用它们。

对于Windows编程,我建议搜索LoadLibrary()API调用的示例。你可能会发现a tutorial或者两个如何做到这一点。

答案 1 :(得分:1)

如果用“挂钩”表示“让我的DLL在该进程的地址空间中运行”,则需要CreateRemoteThread()。这是相当先进的,难以调试,因为您的错误会导致其他程序崩溃。顺便说一下,这就是很多恶意软件的工作原理。

如果您的意思是“让我的DLL收到其他进程中的活动通知”,您需要SetWindowsHookEx()

答案 2 :(得分:0)

听起来你想在应用程序启动后立即注入?你可以用微软的Detours DetourCreateProcessWithDll()做到这一点。示例here