我在这个博客上读到 sysinernals 用来CreateRemoteThread()
注入ExitProcess
另一个进程来终止它。这是真的吗?而且,如果是的话,有人可以告诉我如何在我的 Delphi 应用程序中执行此操作吗?我想终止启动我的应用程序的进程。
问问题
1365 次
1 回答
4
您在这里提出的问题已在此博客文章中得到解答:http: //private-storm.de/2009/08/11/case-terminateprocess/
这包括 Delphi 源代码。由于某种原因,该代码启用了SE_DEBUG_NAME
特权,这不是必需的。
这种方法的困难在于ExitProcess
在目标应用程序中定位地址。本文中的代码假定它与您自己的进程中的地址相同。这很可能是真的,但并非总是如此。例如,如果您的进程是 64 位进程而目标进程是 32 位进程,那么它就不是真的。或者,如果目标进程的基地址不允许 kernel32 在其首选地址加载。
另一个问题是如果您的进程是 32 位,而目标进程是 64 位。在那种情况下,我相信这个CreateRemoteProcess
把戏根本就失败了。
总而言之,我会使用TerminateProcess
.
于 2012-08-30T11:01:29.173 回答