這篇文章給大家分享的是有關(guān)用php讀取elf結(jié)構(gòu)的方法的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)與策劃設(shè)計,點軍網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:點軍等地區(qū)。點軍做網(wǎng)站價格咨詢:18982081108
UNIX系統(tǒng)的可執(zhí)行文件都采用ELF格式,類型分為目標文件、可執(zhí)行文件和共享庫
ELF格式探析之三:sections
本例基于64位的小端序linux機器
#includevoid say_hello(char *who) { printf("hello, %s!\n", who); } char *my_name = "wb"; int man() { say_hello(my_name); return 0; } // 執(zhí)行g(shù)cc -c hello.c生成hello.o
ELF header,位于文件的0~64字節(jié),存儲文件的描述信息,Section header table的起始位置
N個Section
Section header table,每個條目64字節(jié),對應一個Section的信息
Program header table,可執(zhí)行文件需要,本例的hello.o沒有
首先用readelf命令讀取elf信息:readelf -h hello.o。總結(jié)如下:
ELF header占用64字節(jié)
N個Section占用6488-64-1472=4952字節(jié)
Section header table占用23*64=1472字節(jié)
readelf -h hello.o ELF Header: Class: ELF64 Data: 2's complement, little endian OS/ABI: UNIX - System V Type: REL (Relocatable file) Machine: Advanced Micro Devices X86-64 Start of program headers: 0 (bytes into file) Start of section headers: 5016 (bytes into file) //Section header table的起始位置 Size of this header: 64 (bytes) //ELF header的占用大小 Size of program headers: 0 (bytes) //hello.o沒有program header table Number of program headers: 0 //hello.o沒有program header table Size of section headers: 64 (bytes) //Section header table每個條目占用大小 Number of section headers: 23 //Section header table條目個數(shù) Section header string table index: 22 //.shstrtab Section位于Section header table第22個條目
.shstrtab Section其實是存儲的所有Section的名字
感謝各位的閱讀!關(guān)于用php讀取elf結(jié)構(gòu)的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
當前標題:用php讀取elf結(jié)構(gòu)的方法
本文來源:http://weahome.cn/article/gdohhi.html