繁体   English   中英

如何从内存启动可执行文件?

[英]How to launch an executable from memory?

有谁知道从OSX的内存中运行可执行文件的知识吗? 像这样的东西:

char *exeFile[size];
loadFromFile(exeFile, "/path/to/data");
execute(exeFile);

出于安全原因,我想这样做。 例如,可以在启动前对exe进行加密和解密。

好吧,是的,您可以做到,但是它很复杂。 我现在无法访问工作代码,但是我知道其他正在使用它的人。 关键是“ NSCreateObjectFileImageFromMemory()”,它已被弃用,但是据说像Skype这样的一些大型应用程序都使用它,因此它可能不会很快消失(YMMV)。

您必须使用vm_allocate分配为pagesize倍数的内存缓冲区。 将与当前进程相同的体系结构的mach-o可执行文件复制到此处。 调用NSCreateObjectFileImageFromMemory()返回对象图像。 然后依次调用NSLinkModule,NSLookupSymbolInModule和NSAddressOfSymbol。 最后一个让您获得要调用的实际函数指针。

这应该为您提供了大多数您需要了解的知识,并且如果您进行搜索,您可能还会找到执行此操作的代码。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM