C++ 在DLL'之前创建RemoteThread;已加载多个文件
我试图使用CreateRemoteThread将我的代码注入到另一个进程,但如果在进程加载DLL时注入我的代码,则在加载DLL之前,线程将被冻结(根据MSDN,这是正常的)。我曾尝试通过注入代码并等待结果并检查EAX来检测进程是否已加载,但速度非常慢 所以,我正在寻找一种方法来检查进程是否仍在加载DLL,或者它是否已加载所有DLL,我可以调用CreateRemoteThread来等待立即执行我的代码。使用,将目标进程作为被调试者运行,并将注入进程作为“调试器”,然后,您将获得所有DLL加载/卸载事件的通知,以及进程加载并准备运行的时间(您点击“加载程序断点”)。对于x64,它会变得更复杂,如果您试图将其注入托管代码,它会变得更复杂,但效果非常好 我有几个工具使用这种方法(并且)没有可用的源代码,对不起C++ 在DLL'之前创建RemoteThread;已加载多个文件,c++,windows,multithreading,winapi,C++,Windows,Multithreading,Winapi,我试图使用CreateRemoteThread将我的代码注入到另一个进程,但如果在进程加载DLL时注入我的代码,则在加载DLL之前,线程将被冻结(根据MSDN,这是正常的)。我曾尝试通过注入代码并等待结果并检查EAX来检测进程是否已加载,但速度非常慢 所以,我正在寻找一种方法来检查进程是否仍在加载DLL,或者它是否已加载所有DLL,我可以调用CreateRemoteThread来等待立即执行我的代码。使用,将目标进程作为被调试者运行,并将注入进程作为“调试器”,然后,您将获得所有DLL加载/卸载
如果您正试图钩住各种API,那么实现这一点的标准方法就是始终钩住
LoadLibrary()
,这样您就可以钩住进程运行时加载的任何新DLL。但是,我仍然觉得使用调试api控制目标进程很有用,因为它可以让您尽快(在加载程序断点处,在恢复进程之前)更容易地进行挂钩。由于您已经有了目标进程的句柄,请在调用CreateRemoteThread()之前尝试使用WaitForInputdle()
“已加载所有DLL”对于任意进程是未定义的。想想LoadLibrary
调用。为什么加载DLL时线程等待会出现问题?这是一个问题,因为我的应用程序在进程之间循环,所以在我的进程检查DLL是否加载时,其他进程可能会启动。嗯,为每个进程使用不同的线程。我不能在每个20毫秒内创建不同的线程。谢谢,这是一个很好的解决方案,但是否有一个异步API(立即返回)可用于检查进程是否已初始化?据我所知还没有。听起来像是一个非常专业的功能,用途有限-你到底想做什么?也许你应该用另一种方式来做?