readelf命令读取elf文件的详细信息(推荐)(.readline())居然可以这样

随心笔谈9个月前更新 admin
238 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了`readelf`命令用于查看和分析elf文件的多种用途。文章通过一个名为`elfDemo.rel`的示例文件,详细说明了如何使用`readelf`的常用选项,包括查看文件头(-a、-h)、程序头(-l)、段头(-S、-e)、符号表(-n)、内核注释(-r)、动态段(-d)、版本信息(-V)以及以十六进制显示段内容(-x)。文章还解释了这些选项的具体作用和使用场景,并附带了示例命令和解释。通过阅读这篇文章,读者可以掌握`readelf`命令的核心功能及其在 elf 文件分析中的应用。



目录readelf命令概述常用参数-a 全部-h 文件头-l 程序头-S section头-e 全部头-s 符号表-n 内核注释-r 重定位-d 动态段-V 版本-A CPU架构-x 16进制展示段

readelf用于查看elf文件的文件信息,关于elf文件及其格式的介绍在中有比较详细的介绍。

在这里使用一个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);
}

显示全部信息,等同于附参数

readelf -a elfDemo.rel

查看elf文件的文件头。

readelf -a elfDemo.rel

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

等同于或

readelf -l elfDemo.rel

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

显示段头内容。

等同于或

readelf -l elfDemo.rel

等同于,显示三个头部信息。

readelf -e elfDemo.rel

等同于。显示符号表。

readelf -e elfDemo.rel

显示内核注释信息。

显示重定位信息。

readelf -r elfDemo.rel

显示动态段信息。

这个文件没有段。

显示elf文件的版本信息。

显示CPU架构信息。

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

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

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

两种形式之一来查看段内的内容。

到此这篇关于readelf命令读取elf文件的详细信息的文章就介绍到这了,更多相关readelf命令读取elf文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

© 版权声明

相关文章