我喜欢将 DLL 注入进程,因为我可以更改程序的某些值。
dll 的唯一缺点是它们对便携性不太友好,并且使它们具有便携性会消耗大量代码。
我只是想知道是否可以注入存储在资源中的应用程序(到进程),然后再执行它?
如果是这样,哪些代码部分可能与 dll 的注入不同?
您的问题未标记为“Windows”,但从措辞来看,我仍然假设您指的是 Windows。
给定必要的访问权限,可以将可执行文件注入另一个进程,fork
cygwin 中的实现是概念验证。Windows 不支持任何类似的东西fork
,至少不公开在公共 API 中。Cygwin 通过创建一个新进程并将自己的进程注入另一个进程(包括所有数据)来实现它。而是从资源中读取并注入它几乎是同一件事。
差异(和困难)之一可能是图像库,它(通常)在 Win32 下总是相同的。对于 DLL,重新定位是很常见的事情,而对于可执行文件则不是。另一方面,如果您想在已经存在的进程代码之外注入代码,那么您想要的地址可能不是免费的。