【发布时间】:2011-06-30 12:48:14
【问题描述】:
我正在寻找一种直接从内存加载生成的目标代码的方法。
我知道如果我将它写入文件,我可以调用 dlopen 来动态加载其符号并链接它们。但是,考虑到它从内存中开始,写入磁盘,然后由 dlopen 重新加载到内存中,这似乎有点绕道。我想知道是否有某种方法可以动态链接内存中存在的目标代码。据我所知,可能有几种不同的方法可以做到这一点:
诱使 dlopen 认为您的内存位置是一个文件,即使它永远不会离开内存。
找到其他一些系统调用来做我正在寻找的事情(我认为这不存在)。
找到一些可以直接链接内存中代码的动态链接库。显然,这有点难用谷歌搜索,因为“动态链接库”提供了有关如何动态链接库的信息,而不是执行动态链接任务的库。
从链接器中提取一些 API,并在其代码库中创建一个新库。 (显然这对我来说是最不理想的选择)。
那么其中哪些是可能的?可行的?你能指出我假设存在的任何事情吗?还有其他我没想到的方法吗?
【问题讨论】:
标签: c dynamic-linking ld dlopen