第 3 章:ELF 文件解析
学习目标
- 理解 ELF 格式
- 实现 ELF 加载器
3.1 ELF 结构
ELF Header
Program Headers
Sections
3.2 加载器实现
void load_elf(const char *filename) {
FILE *fp = fopen(filename, "rb");
// 读取 ELF Header
Elf32_Ehdr ehdr;
fread(&ehdr, sizeof(ehdr), 1, fp);
// 读取 Program Headers
for (int i = 0; i < ehdr.e_phnum; i++) {
Elf32_Phdr phdr;
// 加载到内存
}
// 设置入口点
cpu.pc = ehdr.e_entry;
}