2010-05-24 70 views
3

好吧,我正在慢慢学习C++。我熟悉所有的控制台语法和所有内容,但现在我正在进行Windows编程。现在我试图做的是创建一个注入到一个进程中的DLL,所以它被吸引了。我希望C++应用程序做的所有事情都有一个文本,如果它被成功注入,就会说“挂钩”,还有一个发生错误时发生错误。或者,即使我可以在没有DLL的情况下执行此操作,只需打开一个可执行文件,并且当我试图挂钩的某个进程打开后,状态将更改为“挂钩”。此外,我有一个safaribooksonline.com帐户,所以如果您有任何建议,请将其写下。谢谢C++钩子进程和显示状态

回答

3

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

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

1

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

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

0

声音就像你希望一旦应用程序启动时注入?你可以通过微软的Detours DetourCreateProcessWithDll()来做到这一点。示例here