readelf命令读取elf文件的详细信息(推荐)
目录
- readelf命令
- 概述
- 常用参数
- -a 全部
- -h 文件头
- -l 程序头
- -S section头
- -e 全部头
- -s 符号表
- -n 内核注释
- -r 重定位
- -d 动态段
- -V 版本
- -A CPU架构
- -x 16进制展示段
readelf命令
概述
readelf用于查看elf文件的文件信息,关于elf文件及其格式的介绍在【ctf权威竞赛指南笔记】(2)二进制文件
中有比较详细的介绍。
常用参数
在这里使用一个elfDemo.rel作为示例,elfDemo.rel是elfDemo.c使用如下指令生成的。
gcc -c elfDemo.c -o elfDemo.rel
elfDemo.c内容如下:
#include<stdio.h>
int global_inited_var = 10;//global var inited
int global_uninited_var;//global var uninited
char* global_char_x = "saa";
void func(int sum)
{
printf("%d\n",sum);
}
void main(){
static int local_static_inited_var = 20;//local static inited
static int local_static_uninited_var;//local static uninited
int local_inited_var = 30;//local inited
int local_uninited_var;//local uninited
func(local_static_inited_var+local_static_inited_var+local_inited_var +local_uninited_var);
}
-a 全部
显示全部信息,等同于附参数-h -l -S -s -r -d -V -A -I
readelf -a elfDemo.rel
-h 文件头
查看elf文件的文件头。
readelf -a elfDemo.rel
-l 程序头
显示elf文件的程序头信息。需要注意,参数为小写L而不是大写的i。
等同于--program-headers
或--segments
readelf -l elfDemo.rel
rel文件需要链接而不可以直接执行,所以没有程序头。
-S section头
显示段头内容。
等同于--section-headers
或--sections
readelf -l elfDemo.rel
-e 全部头
等同于-h -l -S
,显示三个头部信息。
readelf -e elfDemo.rel
-s 符号表
等同于--symbols
。显示符号表。
readelf -e elfDemo.rel
-n 内核注释
显示内核注释信息。
-r 重定位
显示重定位信息。
readelf -r elfDemo.rel
-d 动态段
显示动态段信息。
这个文件没有.dynamic
段。
-V 版本
显示elf文件的版本信息。
-A CPU架构
显示CPU架构信息。
-x 16进制展示段
以16进制形式显示指定段的内容,可以用段的索引或者段名来指定。
如在section头中可以看到,.text
段索引为1,所以可以使用。、
readelf -x 1 elfDemo.rel
readelf -x .text elfDemo.rel
两种形式之一来查看.text
段内的内容。
到此这篇关
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341