在PE(对于Windows)中,可以通过#include<windows.h>
读取该结构的标题/部分,并且可以使用结构PIMAGE_DOS_HEADER
来读取任何PE文件中的dos标头。
我如何在FreeBSD / Linux中为ELF标题做到这一点?需要在C / C ++代码的头部添加什么样的预处理器? 根据ELF的结构,FreeBSD和Linux有什么区别吗?
答案 0 :(得分:5)
您正在寻找libelf。
答案 1 :(得分:2)
看看readelf的来源。或者只是谷歌。例如,这个http://www.scribd.com/doc/7027807/ELF-Format看起来很有希望。
如果您只想要现有代码,请尝试http://www.linux.com/learn/docs/man/2838-elf5。
答案 2 :(得分:2)
以下是一些可以帮助你的指示:
答案 3 :(得分:1)
我无法为FreeBSD担保,但在Linux上elf(5)
联机帮助页中有很多细节:
NAME
elf - format of Executable and Linking Format (ELF) files
SYNOPSIS
#include <elf.h>
DESCRIPTION
The header file <elf.h> defines the format of ELF executable
binary files. Amongst these files are normal executable
files, relocatable object files, core files and shared
libraries.
...
当我需要了解ELF时,我发现没有比MuppetLabs Tiny Executable演练更有用了。我相信很多技术已经过时了(而且从来都不是一个好主意),但他们解释得非常好。