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

正文內(nèi)容

基于powerpclinux的elf格式分析(1)(編輯修改稿)

2025-02-12 14:07 本頁面
 

【文章內(nèi)容簡介】 方式類似于數(shù)組項(xiàng)(項(xiàng)的數(shù)據(jù)由ELF頭中的e_phnum指定),表項(xiàng)的數(shù)據(jù)類型定義為獨(dú)立的結(jié)構(gòu),在32的機(jī)器上其內(nèi)容如下:typedef struct elf32_phdr{ Elf32_Word p_type。 Elf32_Off p_offset。 Elf32_Addr p_vaddr。 Elf32_Addr p_paddr。 Elf32_Word p_filesz。 Elf32_Word p_memsz。 Elf32_Word p_flags。 Elf32_Word p_align。} Elf32_Phdr。解釋:p_type:表示當(dāng)前項(xiàng)描述的段的種類,為其定義了下列常數(shù):PT_NULL:表示沒有使用的段PT_LOAD:表示可裝載段,在程序執(zhí)行前從二進(jìn)制文件映射到內(nèi)存PT_DYNAMIC:表示段包含了用于動(dòng)態(tài)鏈接器的信息PT_INTERP:表示當(dāng)前段指定了用于動(dòng)態(tài)鏈接的解釋程序,PT_NOTE:指定一個(gè)段,其中可能含有專有的編譯器信息還有兩個(gè)常數(shù)PT_LOPROC和PT_HIGHPROC用于定義與處理器相關(guān)的用途,內(nèi)核并不使用p_offset:指出所描述段從ELF文件起始處的偏移量,以字節(jié)為單位p_vaddr:給出段的數(shù)據(jù)映射到虛擬地址空間中的位置(對(duì)應(yīng)PT_LOAD類型的段),只支持物理尋找,不支持虛擬尋址的系統(tǒng)將使用p_paddr保存的信息p_filesz:指定了段在ELF文件中的長度p_memsz:指定了段在虛擬地址空間中的長度,與文件中物理段的差值可以通過階段數(shù)據(jù)或者填充0字節(jié)來填充p_flags:保存了標(biāo)志信息,定義了段的訪問權(quán)限:PF_R讀權(quán)限,PF_W寫權(quán)限,PF_X執(zhí)行權(quán)限p_align:指定了段在內(nèi)存和二進(jìn)制文件中的對(duì)齊方式(即p_vaddr和p_offset地址必須是模p_align,即為p_align的倍數(shù))比如p_align的值為0x1000=4KB,這意味著段必須4KB對(duì)齊。對(duì)64為體系結(jié)構(gòu)定義的類似的數(shù)據(jù)結(jié)構(gòu),與32位相比,唯一的差別在于所使用的數(shù)據(jù)結(jié)構(gòu),各數(shù)據(jù)項(xiàng)的語義都是相同的。其具體內(nèi)容如下:typedef struct elf64_phdr { Elf64_Word p_type。 Elf64_Word p_flags。 Elf64_Off p_offset。 //Segment file offset Elf64_Addr p_vaddr。 //Segment virtual address Elf64_Addr p_paddr。 //Segment physical address Elf64_Xword p_filesz。 //Segment size in file Elf64_Xword p_memsz。 //Segment size in memory Elf64_Xword p_align。 //Segment alignment, file amp。 memory} Elf64_Phdr。 節(jié)頭表Section Header Table代碼實(shí)現(xiàn)節(jié)頭表通過數(shù)組實(shí)現(xiàn),每個(gè)數(shù)組項(xiàng)包含一節(jié)的信息,各個(gè)節(jié)構(gòu)成了程序頭表Program Header Table定義的各個(gè)段的內(nèi)容。下來數(shù)據(jù)結(jié)構(gòu)表示一個(gè)節(jié):typedef struct elf32_shdr { Elf32_Word sh_name。 Elf32_Word sh_type。 Elf32_Word sh_flags。 Elf32_Addr sh_addr。 Elf32_Off sh_offset。 Elf32_Word sh_size。 Elf32_Word sh_link。 Elf32_Word sh_info。 Elf32_Word sh_addralign。 Elf32_Word sh_entsize。} Elf32_Shdr。解釋:sh_name:指定了節(jié)的名稱,其值不是字符串本身,而是字符串表的一個(gè)索引。sh_type:指定了節(jié)的類型,有下列的類型可用: SH_NULL表示該節(jié)不使用,其數(shù)據(jù)將會(huì)被忽略 SH_PROGBITS保存程序的相關(guān)信息,其格式是不定義的,與這里的討論無關(guān) SH_SYMTAB保存一個(gè)符合表,SH_DYNSYM也保存一個(gè)符號(hào)表,二者的差別我們?cè)谏院笥懻? SH_STRTAB表示一個(gè)包含字符串表的節(jié) SH_RELA和SHT_RELA保存重定位信息,我們也將在后面討論 SH_HASH定義了一個(gè)節(jié)保存HASH表,用于快速的查找符號(hào)表中的項(xiàng) SH_DYNAMIC保存了動(dòng)態(tài)鏈接表的信息,我們也將在后面討論 還有類型值SHT_HIPROC、SHT_LOPROC、SHT_HIUSER、SHT_LOUSER,這些專項(xiàng)特定于CPU和應(yīng)用程序的用途,與這里討論的內(nèi)容無關(guān)sh_flags:表示節(jié)是否可重寫(SHF_WRITE),是否將其分配虛擬內(nèi)存(SHR_ALLOC),是否包含可執(zhí)行的機(jī)器代碼(SHF_EXECINSTR)sh_addr:指定節(jié)映射到虛擬地址空間中的位置sh_offset:指定了節(jié)在內(nèi)存中的位置sh_size:指定了節(jié)的長度sh_link:引用另一個(gè)節(jié)頭表項(xiàng),可以根據(jù)節(jié)類型進(jìn)行不同的解釋,其性能我們?cè)诤竺鎲为?dú)討論sh_info和sh_link聯(lián)用,其確切語義我們也會(huì)在下文中再討論。sh_addralign:指定了節(jié)數(shù)據(jù)在內(nèi)存中的對(duì)齊方式sh_entsize:指定了節(jié)中各個(gè)數(shù)據(jù)項(xiàng)的長度,前提是這些數(shù)據(jù)項(xiàng)的長度均相同。例如字符串表根據(jù)節(jié)類型不同,sh_link和sh_info的用法也不盡相同,具體情況如下:第一:SHT_DYNAMIC類型的節(jié)使用sh_link指向節(jié)數(shù)據(jù)指向的字符串表,這種情況下不使用sh_info,sh_info設(shè)置為0;第二:散列表(SHT_HASH類型的節(jié))使用sh_link指向所散列的符合表,sh_info不使用第三:類型為SHT_RELA和SHT_REL的重定位節(jié),使用sh_link指向相關(guān)的符號(hào)表,sh_info中保存的是節(jié)頭表中的索引,表示對(duì)哪個(gè)節(jié)進(jìn)行重定向;第四:sh_link指定了用作符號(hào)表的字符串表(SHT_SYMTAB和SHT_DYNSYM),而sh_info表示符號(hào)表中緊隨最后一個(gè)局部符號(hào)之后的索引位置(STB_LOCAL類型)而64位系統(tǒng)有一個(gè)單獨(dú)的數(shù)據(jù)結(jié)構(gòu),其內(nèi)容和32系統(tǒng)相同,除了使用64位的數(shù)據(jù)類型。內(nèi)容如下:typedef struct elf64_shdr { Elf64_Word sh_name。 // Section name, index in string tbl Elf64_Word sh_type。 // Type of section Elf64_Xword sh_flags。 // Miscellaneous section attributes Elf64_Addr sh_addr。 // Section virtual addr at execution Elf64_Off sh_offset。 // Section file offset Elf64_Xword sh_size。 // Size of section in bytes Elf64_Word sh_link。 // Index of another section Elf64_Word sh_info。 // Additional section information Elf64_Xword sh_addralign。 // Section alignment Elf64_Xword sh_entsize。 // Entry size if section holds table} Elf64_Shdr。ELF標(biāo)準(zhǔn)定義了若干固定名稱的節(jié),這些節(jié)用于執(zhí)行大多數(shù)目標(biāo)文件所需要的標(biāo)準(zhǔn)任務(wù),所有名稱都從點(diǎn)開始,以便與用戶定義的節(jié)或者非標(biāo)準(zhǔn)的節(jié)相區(qū)分。最重要的標(biāo)準(zhǔn)節(jié)如下所示:.bss:保存程序未初
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1