概述 readelf用於查看elf文件的文件信息,關於elf文件及其格式的介紹在【ctf權威競賽指南筆記】(2)二進位文件中有比較詳細的介紹。 常用參數 在這裡使用一個elfDemo.rel作為示例,elfDemo.rel是elfDemo.c使用如下指令生成的。 gcc -c elfDemo.c - ...
概述
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 -S 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
段內的內容。