使用CreateRemoteThread将代码注入Delphi中的另一个进程的正确方法是什么?

时间:2012-08-30 09:52:33

标签: multithreading delphi winapi ipc

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

1 个答案:

答案 0 :(得分:4)

您在此处提出的问题在此博文中得到了解答:http://private-storm.de/2009/08/11/case-terminateprocess/

这包括Delphi源代码。由于某种原因,代码启用了SE_DEBUG_NAME权限,这是不必要的。

这种方法的难点在于在目标应用中找到ExitProcess的地址。本文中的代码假定它与您自己的进程中的地址相同。这很可能是真的,但并非总是如此。例如,如果您的进程是64位进程而目标进程是32位进程,那么它将不是真的。或者,如果目标进程的基地址不允许kernel32加载到其首选地址。

另一个问题是,如果您的进程是32位且目标进程是64位。在那种情况下,我相信CreateRemoteProcess技巧就会失败。

总而言之,我会使用TerminateProcess