任何人都知道在OSX中从内存运行可执行文件的任何事情? 这样的事情:
char *exeFile[size];
loadFromFile(exeFile, "/path/to/data");
execute(exeFile);
出于安全原因,我想这样做。例如,可以在启动之前加密exe并解密它。
答案 0 :(得分:4)
嗯,是的,你可以做到,但它的复杂性。我现在无权访问工作代码,但我确实知道其他人已经使用过它。关键是“NSCreateObjectFileImageFromMemory()”,这是不推荐使用的,但是据说像Skype这样的一些大型应用程序使用它,因此很可能不会很快消失(YMMV)。
您必须使用vm_allocate分配一个内存缓冲区,该内存缓冲区是pagesize的倍数。将与当前进程相同的体系结构的mach-o可执行文件复制到那里。调用返回对象图像的NSCreateObjectFileImageFromMemory()。然后连续调用NSLinkModule,NSLookupSymbolInModule和NSAddressOfSymbol。最后一个为您提供一个实际的函数指针来调用。
这应该可以提供您需要知道的大部分内容,如果您搜索,您可能会找到代码也可以执行此操作。祝你好运!