readelf命令读取elf文件的详细信息

  • readelf命令读取elf文件的详细信息已关闭评论
  • 96 次浏览
  • A+
所属分类:linux技术
摘要

readelf用于查看elf文件的文件信息,关于elf文件及其格式的介绍在【ctf权威竞赛指南笔记】(2)二进制文件中有比较详细的介绍。


概述

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("%dn",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 

readelf命令读取elf文件的详细信息

-h 文件头

查看elf文件的文件头。

readelf -a elfDemo.rel 

readelf命令读取elf文件的详细信息

-l 程序头

显示elf文件的程序头信息。需要注意,参数为小写L而不是大写的i。

等同于--program-headers--segments

readelf -l elfDemo.rel 

readelf命令读取elf文件的详细信息

rel文件需要链接而不可以直接执行,所以没有程序头。

-S section头

显示段头内容。

等同于--section-headers--sections

readelf -S elfDemo.rel 

readelf命令读取elf文件的详细信息

-e 全部头

等同于-h -l -S,显示三个头部信息。

readelf -e elfDemo.rel 

readelf命令读取elf文件的详细信息

-s 符号表

等同于--symbols。显示符号表。

readelf -e elfDemo.rel 

readelf命令读取elf文件的详细信息

-n 内核注释

显示内核注释信息。

-r 重定位

显示重定位信息。

readelf -r elfDemo.rel 

readelf命令读取elf文件的详细信息

-d 动态段

显示动态段信息。

这个文件没有.dynamic段。
readelf命令读取elf文件的详细信息

-V 版本

显示elf文件的版本信息。
readelf命令读取elf文件的详细信息

-A CPU架构

显示CPU架构信息。

-x 16进制展示段

以16进制形式显示指定段的内容,可以用段的索引或者段名来指定。

如在section头中可以看到,.text段索引为1,所以可以使用。、

readelf -x 1 elfDemo.rel readelf -x .text elfDemo.rel 

两种形式之一来查看.text段内的内容。
readelf命令读取elf文件的详细信息

readelf命令读取elf文件的详细信息