【发布时间】:2012-08-01 07:23:05
【问题描述】:
有人知道在 OSX 中从内存中运行可执行文件吗? 像这样的:
char *exeFile[size];
loadFromFile(exeFile, "/path/to/data");
execute(exeFile);
出于安全原因,我想这样做。例如,可以在启动前对 exe 进行加密和解密。
【问题讨论】:
-
这是不可能的 AFAIK;您可以使用
exec()系列调用(当然是在fork()之后),但您不能加密可执行文件。 -
有可能,UPX exe压缩器做到了,解压二进制数据并执行。
-
这是可执行文件本身的代码;不是父进程在加载可执行文件时所做的事情。
-
那么,如何在可执行文件本身内部执行内存呢? (我将目标可执行文件加载到内存中)。
-
加载可执行文件不仅仅是将其加载到内存中,就像使用纯数据一样;可执行文件需要重新定位和许多其他事情才能工作。除了将文件解密为临时文件,
execing 该文件然后将其删除之外,您无法做任何您想做的事情。
标签: macos cocoa macos-carbon core-foundation