ELF文件格式

本文介绍了如何生成和分析ELF(Executable and Linkable Format)文件。通过使用`gcc`编译C代码生成可重定位目标文件`main.o`,然后使用`readelf`工具揭示ELF头文件包含的信息,如大小、类型、机器类型等。接着,详细讨论了ELF的Section Headers,包括`.text`、`.rodata`、`.data`、`.bss`等节的作用。此外,还提到了`.rel.text`和`.rel.data`用于重定位,以及`.debug`、`.line`、`.strtab`等辅助调试的信息。最后,使用`objdump`和`nm`命令展示了如何查看只读数据和符号表。
摘要由CSDN通过智能技术生成

生成 ELF 文件

准备用来生成可重定位目标文件的 C 语言代码

#include <stdio.h>

int global = 0;

int sum(int a, int b);

int main() {
   
	int x = sum(1,2);
	printf("%d\n", x);
	printf("Hello World");
	return 0;
}

int sum(int a, int b) {
   
	return a + b;
}

生成可重定位目标文件
gcc -c main.c -o main.o
使用 readelf 指令阅读
readelf -a main.o

ELF 格式

ELF 头文件包含帮助连接器语法分析和解释目标文件的信息, 包括大小, 类型, 机器类型, 文件便宜, 节头部表的文件偏移, 条目大小和数量.

ELF Header:
  Magic:   7f 45 4c 46 02 01</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值