c++ - 是否可以从外部进程注入(inject)和执行应用程序?

标签 c++ resources execute inject

我喜欢将 DLL 注入(inject)进程,因为我可以更改程序的某些值。

dll 的唯一缺点是它们的可移植性不是很好,并且使它们可移植会消耗大量代码。

我只是想知道是否可以注入(inject)存储在资源中的应用程序(到进程),然后再执行它?

如果是这样,哪些代码部分可能与 dll 的注入(inject)不同?

最佳答案

你的问题没有被标记为“Windows”,但从措辞来看我仍然假设你指的是 Windows。

给定必要的访问权限,可以将可执行文件注入(inject)另一个进程,cygwin 中的fork 实现是一个概念证明。 Windows 不支持任何类似 fork 的东西,至少不在公共(public) API 中公开。 Cygwin通过创建一个新进程并将自己的进程注入(inject)另一个进程(包括所有数据)来实现它。相反,从资源中读取和注入(inject)几乎是一回事。

差异(和困难)之一可能是图像基础,它在 Win32 下(通常)总是相同的。对于 DLL, rebase 是很常见的事情,对于可执行文件则不是。另一方面,如果您想将代码另外注入(inject)到一个已经存在的进程代码中,那么您想要的地址可能不是免费的。

关于c++ - 是否可以从外部进程注入(inject)和执行应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11283936/

相关文章:

php - 在 PHP 中执行的持续时间

Java运行bash命令,同时为其提供输入并获取输出

C++ 类型参数与父类和子类的类型参数不兼容

c# - 作为可重用 XAML 片段的矢量图像

java - 我无法在我的 OSGI 包中加载 HelpGUI

java - 使用java执行批处理文件后无法关闭命令提示符

c++ - 了解 C++ 中的动态对象 ("new")

c++ - 为什么我必须在覆盖 [C++] 时重新声明一个虚函数

c++ - 什么是 void (*op)(T &) 和 void (*op)(T &, void *)?

c# - namespace 错误中不存在类型资源