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