从注入的DLL控制Win32进程(VC++.NET 2010)

从注入的DLL控制Win32进程(VC++.NET 2010),c++,dll,controls,exe,C++,Dll,Controls,Exe,我已经将一个DLL文件注入另一个进程,我希望通过一个外部EXE与之通信。如何与注入的DLL通信/ 您需要在EXE和DLL注入的应用程序之间进行通信 因此,在DLL中,您将需要等待来自EXE的某种通信。您不能等待DllMain中的事件,因为这将使应用程序死锁 一个简单的方法是创建一个and。然后在您的外部EXE中,当您的按钮被单击时,您。如果我正确理解了您的问题,您已经向进程注入了一个DLL,并希望通过一些外部EXE与它通信。您可以在此处使用进程间通信的标准方法。我知道链接不应该自己发布,但Win

我已经将一个DLL文件注入另一个进程,我希望通过一个外部EXE与之通信。如何与注入的DLL通信/

您需要在EXE和DLL注入的应用程序之间进行通信

因此,在DLL中,您将需要等待来自EXE的某种通信。您不能等待DllMain中的事件,因为这将使应用程序死锁


一个简单的方法是创建一个and。然后在您的外部EXE中,当您的按钮被单击时,您。

如果我正确理解了您的问题,您已经向进程注入了一个DLL,并希望通过一些外部EXE与它通信。您可以在此处使用进程间通信的标准方法。我知道链接不应该自己发布,但Windows上的IPC是一个太广泛的主题,如果不复制和粘贴链接文章,就无法全面涵盖

我已经做了与您在这里尝试的相同的事情,并使用和通过IPC。然而,我使用每种形式的IPC都有一个特殊的原因,所以在推荐一种IPC之前,我们确实需要从您的问题域中了解更多

您正在做的一些无关的事情是,您正在对已转换到LPTHREAD_START_例程的函数调用CreateThread,这意味着它应该指向回调。您当前的void WINAPI签名与所需的DWORD WINAPI LPVOID不匹配

如果DLL需要做的只是转发消息,那么可以让它充当消息的代理

让DLL创建一个不可见的窗口 将窗口句柄传递给源进程 将源进程调度消息发送到此窗口 DLL将接收这些消息,然后可以将它们转发到目标窗口

但是,如果这是你需要做的所有事情,那么根本就不需要中间有一个DLL。这就是为什么我说我们需要更多关于你的问题领域的信息


如果您试图以插入DLL的可执行文件的形式创建某些内容,然后与DLL进行通信,而DLL又进行通信,那么您可能想看看我不久前开发的一个。这正是原因。

为什么自述的初学者要从DLL注入开始?这不适合有经验的程序员吗?你的描述不清楚。到目前为止你取得了什么成就?您是否设法将代码注入正在运行的进程?你能给我们看一下密码吗?到目前为止,你是如何判断它是否正常工作的?我是否正确地假设你试图在不修改EXE的情况下对点击该按钮做出反应?当然不是这样。我试图在一个DLL中点击一个按钮来执行一个函数。DLL被注入到另一个进程中。我只是问,因为通常DLL注入是在目标进程不知道的情况下完成的,例如破解目标进程。我想知道为什么你会使用DLL注入你可以修改EXE来加载带有LoadLibrary的DLL。线程和事件肯定不是处理注入DLL的最常用方法。弯钩/绕道通常与此同时进行。如果您知道DLL将提前运行,并且可以正确设置事件,那么您根本不需要进行注入。@peachykeen:正是我的想法。我没有说这是最常见的,我说这是一种简单的方法。显然,在这一点上,他不会理解迂回。我们中的一个人可能误解了他的问题,但据我所知,他希望另一个应用程序中的按钮(他创建了该应用程序并拥有其源代码)在注入的应用程序中触发GUI事件。因此,除了被注入的DLL获取事件句柄并等待它之外,在目标应用程序中没有正确设置要执行的事件。@peachykeen您还没有理解。他没有注射回自己的用户界面。他的UI是一个带有按钮的简单应用程序,完全独立于游戏。没有向该应用程序中注入任何内容。DLL被注入到游戏中,他想通过点击他简单的外部应用程序中的按钮来触发DLL在游戏中执行一些代码。我以前曾入侵过MapleStory,如果你真的是出于教育目的,我会建议你不要这样做。如果你的目标是学习逆向工程,那么反作弊系统会阻止你。有一些措施可以防止插入诸如CRC之类的仪器,也有一些方法可以防止加载DLL。与编写作弊代码相比,您将花费更多的时间来破坏保护系统。出于教育目的,你最好欺骗一个单人游戏。是的,我已经向进程中注入了一个DLL,并希望通过EXE与之通信我正在考虑这样做P