1

我在这个博客上读到 sysinernals 用来CreateRemoteThread()注入ExitProcess另一个进程来终止它。这是真的吗?而且,如果是的话,有人可以告诉我如何在我的 Delphi 应用程序中执行此操作吗?我想终止启动我的应用程序的进程。

4

1 回答 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 回答