当前位置: 首页 > news >正文

ELF文件格式

Day 18: ELF文件格式

本章介绍Linux可执行文件的ELF(Executable and Linkable Format)格式结构。


1. ELF结构

ELF文件结构: ELF Header | +-- Program Headers (段表) | - LOAD segment | - DYNAMIC segment | - ... | +-- Section Headers (节表) | - .text | - .data | - .symtab | - ... | +-- 数据内容

2. ELF Header

typedefstruct{unsignedchare_ident[16];// 魔数 "\x7fELF"Elf64_Half e_type;// 类型Elf64_Half e_machine;// 架构Elf64_Word e_version;Elf64_Addr e_entry;// 入口地址Elf64_Off e_phoff;// 程序头偏移Elf64_Off e_shoff;// 节头偏移Elf64_Word e_flags;Elf64_Half e_ehsize;// ELF头大小Elf64_Half e_phentsize;Elf64_Half e_phnum;// 程序头数量Elf64_Half e_shentsize;Elf64_Half e_shnum;// 节头数量Elf64_Half e_shstrndx;}Elf64_Ehdr;

3. 常用命令

# 查看ELF信息readelf -h program# ELF头readelf -l program# 程序头readelf -S program# 节头readelf -s program# 符号表readelf -d program# 动态段# objdumpobjdump -d program# 反汇编objdump -x program# 所有头信息

4. 段与节

段(Segment):加载视图 - 告诉加载器如何映射到内存 节(Section):链接视图 - 告诉链接器各部分用途 常见节: .text - 代码 .data - 已初始化数据 .bss - 未初始化数据 .rodata - 只读数据 .symtab - 符号表 .strtab - 字符串表 .rel.text - 重定位信息 .dynamic - 动态链接信息 .got - 全局偏移表 .plt - 过程链接表

5. 动态链接

.plt (Procedure Linkage Table) .got (Global Offset Table) 首次调用流程: 1. call printf@plt 2. PLT跳转到GOT 3. GOT初始为解析器地址 4. 解析器找到真实地址 5. 更新GOT 6. 后续直接跳转

6. 小结

[ELF结构] 1. ELF Header 2. Program Headers (段) 3. Section Headers (节) [关键节] 4. .text代码 5. .plt/.got动态链接 [工具] 6. readelf 7. objdump

下一篇预告:Day 19 - ARM汇编基础


http://www.jsqmd.com/news/377679/

相关文章:

  • 【python毕设源码分享】基于Python的采用人脸识别技术的课堂考勤管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 逆向工程入门
  • 【python毕设源码分享】基于Python的见花则喜线上花店管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 新组的电脑却无法开机,您可能漏了这个
  • 【大数据毕设源码分享】django基于机器学习的旅行产品推荐系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • GCC内联汇编
  • 【python毕设源码分享】基于Web的酒店住宿管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 干货合集:10个降AIGC平台测评,专科生降AI率必备神器
  • 【python毕设源码分享】基于python的租房管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 调试技术和技巧
  • 浮点数运算
  • 【python毕设源码分享】基于Python的协同过滤算法的天气穿搭推荐系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 赶deadline必备! 10个AI论文网站深度测评,继续教育毕业论文写作全攻略
  • YOLOv8眼睛状态检测:基于AFPNet-P345的睡意监测系统_1
  • 【python毕设源码分享】基于Flask和Vue的电商管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 打家劫舍问题的动态规划解法与性能优化笔记
  • 基于SpringBoot+协同过滤推荐算法+智能AI问答的水果线上交易平台开题报告
  • go mapstructure使用例子
  • 硬币找零问题的动态规划解法与实现思考笔记
  • TPJ系列机械式螺旋圆弹簧疲劳试验机
  • 2026年市场评价好的包装袋定制厂家选哪家,四边封包装袋/自立袋/聚酯尼龙袋/三边封拉链袋,包装袋制造厂家推荐排行 - 品牌推荐师
  • 【Python毕设全套源码+文档】基于python的媒体资源管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 『NAS』设置内网固定 IP
  • 教你如何识别台式电脑电源的好坏
  • 【Python毕设全套源码+文档】基于python的采用人脸识别技术的课堂考勤管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 面试必看:打家劫舍
  • 2026年工业研学公司综合评测:聚焦科创实践与产教融合的新趋势​ - 品牌2025
  • 【Python毕设全套源码+文档】基于python的租房管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 56周作业
  • 2026年工业焊接协作机器人知名品牌商选择指南,推荐上海广为 - 品牌2025