我曾尝试使用 EasyHook 将 DLL 注入另一个进程,但是当主机进程关闭时,EasyHook 和其他注入的 DLL 仍在处理中。有谁知道如何从目标进程中卸载它们?
谢谢。
我曾尝试使用 EasyHook 将 DLL 注入另一个进程,但是当主机进程关闭时,EasyHook 和其他注入的 DLL 仍在处理中。有谁知道如何从目标进程中卸载它们?
谢谢。
当前版本的 Easyhook 在其执行应用程序域退出时会卸载注入的 dll。如果您想从注入程序中退出注入的 dll,请与注入的 dll 进行某种形式的通信,让它知道是时候退出其应用程序域了。
正如EasyHook 2.6 教程所说:
Run 方法可以被视为应用程序的入口点。如果您从它返回,您的库将被卸载。但这不是真的;-)。事实上,在 CLR 决定卸载它之前,您的库一直处于活动状态。通过使用 CLR Hosting API,这种行为可能会在未来的 EasyHook 版本中改变,但目前我们根本不知道!
因此,您所能做的就是确保您从 Run 方法正确返回,以便您注入的 DLL 不再被主动挂钩或操作。它将一直呆在那里,死了,直到进程最终终止。就目前的 EasyHook 版本(2.7)而言,您无法强制卸载它。