freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計算機]linux系統(tǒng)下的elf文件分析(編輯修改稿)

2025-09-14 19:21 本頁面
 

【文章內(nèi)容簡介】 te elf64 note;endiflinux系統(tǒng)加載ELF可執(zhí)行文件時,必須首先做一些簡單的致性檢查.其代碼如下if(memcmp(elf_ex.e—ident,ELFMAG,SELFMAG)!=0)goto out; //檢查文件頭開始四個字符是否為ELF魔數(shù)、0177ELFif(elf ex.e—type!:ET_EXEC&&elf ex.e—type!:ET_DYN)goto out;//檢查文件類型是否為可執(zhí)行文件或共享目標文件if(!elf ) _check arch(amp。elf_ex)goto out;//檢查硬件平臺是否一致其中的elf_check—arch(x)在不同的硬件平臺上有不同的定義,其由系統(tǒng)的硬件平臺決定。這樣,在硬件平臺相同的系統(tǒng)上,ELF可以不作修改的執(zhí)行。因此,它可以支持不同平臺上的交叉(cross_pilation)和交叉鏈接(cross_linking)。3.2 PICELF可以生成一種特殊的代碼— — 與位置無關(guān)的代碼(posi.tion—independent code。PIC)。用戶對gcc使用fPIC指示GNU編譯系統(tǒng)生成PIC代碼。它是實現(xiàn)共享庫或共享可執(zhí)行代碼的基礎(chǔ).這種代碼的特殊性在于它可以加載到內(nèi)存地址空間的任何地址執(zhí)行.這也是加載器可以很方便的在進程中動態(tài)鏈接共享庫。PIC的實現(xiàn)運用了一個事實,就是代碼段中任何指令和數(shù)據(jù)段中的任何變量之間的距離都是一個與代碼段和數(shù)據(jù)段的絕對存儲器位置無關(guān)的常量。因此,編譯器在數(shù)據(jù)段開始的地方創(chuàng)建了一個表.叫做全局偏移量表(global offset table.GOT)。GOT包含每個被這個目標模塊引用的全局數(shù)據(jù)目標的表目。編譯器還為GOT中每個表目生成一個重定位記錄。在加載時,動態(tài)鏈接器會重定位GOT中的每個表目,使得它包含正確的絕對地址。PIC代碼在代碼中實現(xiàn)通過GOT間接的引用每個全局變量,這樣,代碼中本來簡單的數(shù)據(jù)引用就變得復雜,必須加入得到GOT適當表目內(nèi)容的指令。對只讀數(shù)據(jù)的引用也根據(jù)同樣的道理,所以,加上IC編譯成的代碼比一般的代碼開銷大。如果一個elf可執(zhí)行文件需要調(diào)用定義在共享庫中的任何函數(shù),那么它就有自己的GOT和PLT(procedure linkage table,過程鏈接表).這兩個節(jié)之間的交互可以實現(xiàn)延遲綁定(1azy binging),這種方法將過程地址的綁定推遲到第一次調(diào)用該函數(shù)。為了實現(xiàn)延遲綁定.GOT的頭三條表目是特殊的:GOT[01包含.dynamic段的地址..dynamic段包含了動態(tài)鏈接器用來綁定過程地址的信息,比如符號的位置和重定位信息GOT[1]包含動態(tài)鏈接器的標識;GOT[2]包含動態(tài)鏈接器的延遲綁定代碼的入口點。G0T的他表目為本模塊要引用的一個全局變量或函數(shù)的地址。PLT是一個以l6字節(jié)(32位平臺中)表目的數(shù)組形式出現(xiàn)的代碼序列。其中PLT[0]是一個特殊的表目,它跳轉(zhuǎn)到動態(tài)鏈接器中執(zhí)行;每個定義在共享庫中并被本模塊調(diào)用的函數(shù)在PLT中都有一個表目,從PLT[I]開始.模塊對函數(shù)的調(diào)用會轉(zhuǎn)到相應(yīng)PLT表目中執(zhí)行,這些表目由三條指令構(gòu)成。第一條指令是跳轉(zhuǎn)到相應(yīng)的GOT存儲的地址值中.第二條指令把函數(shù)相應(yīng)的ID壓入棧中,第三條指令跳轉(zhuǎn)到PLT[O]q~調(diào)用動態(tài)鏈接器解析函數(shù)地址,并把函數(shù)真正地址存入相應(yīng)的GOT表目中。被調(diào)用函數(shù)GOT相應(yīng)表目中存儲的最初地址為相應(yīng)PLT表目中第二條指令的地址值,函數(shù)第一次被調(diào)用后.GOT表目中的值就為函數(shù)的真正地址。因此,第一次調(diào)用函數(shù)時開銷比較大.但是其后的每次調(diào)用都只會花費一條指令和一個間接的存儲器引用。3.3強大的工具支持由于gnu由大量的工具支持elf文件個時. 隨著gnu工具的功能的擴展.程序員對ELF文件的運用也越來
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1