我需要在我的 C 程序中使用简单的 ELF 文件。我不能使用任何外部库,但我可以使用elf.h
.
让我们以 hello.o 文件为源:
int Hello() { return 3; }
我如何才能Hello
在只有hello.o
文件的其他 C 程序中访问?
我可能应该使用这样的方法将它加载到内存中mmap
。最后我需要处理很多复杂的 ELF 文件,但我现在不知道如何开始。
更新:我需要按照我描述的方式执行此操作,因为它是出于学习目的。整个问题比我描述的更复杂。
对于这个问题,假设我需要编写方法:
int HelloFromElfO(const char* helloFile);
这将执行Hello
中实现的功能helloFile
。
我不想要完整的答案。我不需要任何代码。我需要一些东西来开始。
我对 ELF 文件结构有基本的了解,但我不知道如何在没有任何解析器或类似这样的东西的情况下使用二进制文件在 C 中工作。
UPDATE2:好的,像 readelf 这样的应用程序非常复杂。所以也许我尝试这种方式:让我们再说一遍我已经hello.o
映射到内存ptr
。如何获得指向Hello
函数的指针?
如何从中获取任何结构化数据hello.o
?我的意思是,不是纯字节,而是我可以使用的东西。