主要观点:创建了Carve Exe工具用于从其他文件中提取可执行文件,重点讨论了如何通过计算文件头来确定 ELF 可执行文件的大小及结尾。
关键信息:
- ELF 可执行文件由四部分组成:文件头、程序头表、节头表、数据节。
- 通常 ELF 文件布局为:文件头、程序头表、节、节头表,可通过特定公式计算各部分大小及文件总大小。
- 示例计算了/bin/ls 的各部分信息,得出节头表结尾处即为文件大小。
重要细节: - ELF 文件头结构在elf.h中定义,包含多种信息及字段。
- 程序头表告知操作系统如何加载可执行文件到内存,节头表描述可执行文件数据的存储方式。
- 计算各部分结束位置的公式:ELF 文件头结束为
0x0 + e_ehsize
;程序头表结束为e_phoff + e_phnum * e_phentsize
;各节结束为sh_offset + sh_size
;节头表结束为e_shoff + e_shnum * e_shentsize
;各段结束为p_offset + p_filesz
,取最大结果为文件大小。 - 注意 ELF 文件头中的值不一定准确,如节头表在加载和执行时会被忽略,若其值有误会影响分析结果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。