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

标签 multithreading delphi winapi ipc

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

最佳答案

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

这包括 Delphi 源代码。出于某种原因,该代码启用了 SE_DEBUG_NAME特权,这不是必需的。

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

另一个问题是如果您的进程是 32 位,而目标进程是 64 位。在那种情况下,我相信 CreateRemoteProcess伎俩根本失败。

总而言之,我会使用 TerminateProcess .

关于multithreading - 在 Delphi 中使用 CreateRemoteThread 将代码注入(inject)另一个进程的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194216/

相关文章:

c - 使这个简单的代码线程安全

c++ - 将 WM_MOUSEWHEEL Delphi 代码转换为 C++ Builder

string - 从字符数组合并键值列表的有效方法

android - Delphi Android RESTRequest: channel 无法恢复,将被丢弃

c++ - 将消息注入(inject) WPF 应用程序消息泵

c++ - 如何在 WINAPI 中忽略 HttpPOST 请求中的证书

c++ - 可变线程与非常量方法

java - 为什么我的线程不起作用?

multithreading - TMultiReadExclusiveWriteSynchronizer死锁

c++ - 有没有办法让缓冲函数不浪费那么多内存?