0

可以使用相同的 dll 多次注入目标应用程序。

这会导致同一个函数被钩住多次。

你知道是否有办法检测目标应用程序是否已经注入?或者有没有办法避免多次注射?

4

1 回答 1

0

在继续注入之前,您可以检查 DLL 是否已加载到目标应用程序中:

  • 在 .NET 中,您可以使用Process.Modules属性来迭代进程中加载​​的 DLL。

  • 对于本机 C/C++,您可以使用 Windows 进程状态 API 方法EnumProcessModules来实现相同的结果。可以在此处找到为流程迭代模块的示例。

或者,您可以在注入的 DLL 中使用命名系统互斥锁,以确保不会多次应用挂钩创建逻辑。请参阅.NET的Mutex 类或本机的CreateMutex。这将是更复杂的方法,并且需要您在移除挂钩时清理互斥锁。

于 2017-07-12T03:13:11.407 回答