国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號

UNIX/Linux平臺上可執(zhí)行文件格式分析 四
2007-04-25   中國IT實驗室

對一個ELF可執(zhí)行程序而言,一個基本的段是標(biāo)記p_type為PT_INTERP的段,它表明了運行此程序所需要的程序解釋器(/lib/ld- linux.so.2),實際上也就是動態(tài)連接器(dynamic linker)。最重要的段是標(biāo)記p_type為PT_LOAD的段,它表明了為運行程序而需要加載到內(nèi)存的數(shù)據(jù)。查看上面實際輸入,可以看見有兩個可 LOAD段,第一個為只讀可執(zhí)行(FLg為R E),第二個為可讀可寫(Flg為RW)。段1包含了文本節(jié).text,注意到ELF文件頭部中程序進入點的值為0x80483cc,正好是指向節(jié). text在內(nèi)存中的地址。段二包含了數(shù)據(jù)節(jié).data,此數(shù)據(jù)節(jié)中數(shù)據(jù)是可讀可寫的,相對的只讀數(shù)據(jù)節(jié).rodata包含在段1中。ELF格式可以比 COFF格式包含更多的調(diào)試信息,如上面所列出的形式為.debug_xxx的節(jié)。在I386平臺LINUX系統(tǒng)下,用命令file查看一個ELF可執(zhí)行程序的可能輸出是:a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped。

  ELF文件中包含了動態(tài)連接器的全路徑,內(nèi)核定位"正確"的動態(tài)連接器在內(nèi)存中的地址是"正確"運行可執(zhí)行文件的保證,參考資料 13討論了如何通過查找動態(tài)連接器在內(nèi)存中的地址以達到顛覆(Subversiver)動態(tài)連接機制的方法。

  最后我們討論ELF文件的動態(tài)連接機制。每一個外部定義的符號在全局偏移表(Global Offset Table GOT)中有相應(yīng)的條目,如果符號是函數(shù)則在過程連接表(Procedure Linkage Table PLT)中也有相應(yīng)的條目,且一個PLT條目對應(yīng)一個GOT條目。對外部定義函數(shù)解析可能是整個ELF文件規(guī)范中最復(fù)雜的,下面是函數(shù)符號解析過程的一個描述。

  1:代碼中調(diào)用外部函數(shù)func,語句形式為call 0xaabbccdd,地址0xaabbccdd實際上就是符號func在PLT表中對應(yīng)的條目地址(假設(shè)地址為標(biāo)號.PLT2)。

  2:PLT表的形式如下

.PLT0: pushl 4(%ebx) /* GOT表的地址保存在寄存器ebx中 */

jmp *8(%ebx)

nop; nop

nop; nop

.PLT1: jmp *name1@GOT(%ebx)

pushl $offset

jmp .PLT0@PC

.PLT2: jmp *func@GOT(%ebx)

pushl $offset

jmp .PLT0@PC

  3:查看標(biāo)號.PLT2的語句,實際上是跳轉(zhuǎn)到符號func在GOT表中對應(yīng)的條目。

  4:在符號沒有重定位前,GOT表中此符號對應(yīng)的地址為標(biāo)號.PLT2的下一條語句,即是pushl $offset,其中$offset是符號func的重定位偏移量。注意到這是一個二次跳轉(zhuǎn)。

  5:在符號func的重定位偏移量壓棧后,控制跳到PLT表的第一條目,把GOT[1]的內(nèi)容壓棧,并跳轉(zhuǎn)到GOT[2]對應(yīng)的地址。

  6:GOT[2]對應(yīng)的實際上是動態(tài)符號解析函數(shù)的代碼,在對符號func的地址解析后,會把func在內(nèi)存中的地址設(shè)置到GOT表中此符號對應(yīng)的條目中。

  7:當(dāng)?shù)诙握{(diào)用此符號時,GOT表中對應(yīng)的條目已經(jīng)包含了此符號的地址,就可直接調(diào)用而不需要利用PLT表進行跳轉(zhuǎn)。

  動態(tài)連接是比較復(fù)雜的,但為了獲得靈活性的代價通常就是復(fù)雜性。其最終目的是把GOT表中條目的值修改為符號的真實地址,這也可解釋節(jié).got包含在可讀可寫段中。

  動態(tài)連接是一個非常重要的進步,這意味著庫文件可以被升級、移動到其他目錄等等而不需要重新編譯程序(當(dāng)然,這不意味庫可以任意修改,如函數(shù)入?yún)⒌膫€數(shù)、數(shù)據(jù)類型應(yīng)保持兼容性)。從很大程度上說,動態(tài)連接機制是ELF格式代替a.out格式的決定性原因。如果說面對對象的編程本質(zhì)是面對接口(interface)的編程,那么動態(tài)連接機制則是這種思想的地一個非常典型的應(yīng)用,具體的講,動態(tài)連接機制與設(shè)計模式中的橋接(BRIDGE)方法比較類似,而它的LAZY特性則與代理(PROXY)方法非常相似。動態(tài)連接操作的細節(jié)描述請參閱參考資料 8,9,10,11。通過閱讀命令readelf、objdump 的源代碼以及參考資料 14中所提及的相關(guān)軟件源代碼,可以對ELF文件的格式有更徹底的了解。

  總結(jié)

  不同時期的可執(zhí)行文件格式深刻的反映了技術(shù)進步的過程,技術(shù)進步通常是針對解決存在的問題和適應(yīng)新的環(huán)境。早期的UNIX系統(tǒng)使用a.out格式,隨著操作系統(tǒng)和硬件系統(tǒng)的進步,a.out格式的局限性越來越明顯。新的可執(zhí)行文件格式COFF在UNIX System VR3中出現(xiàn),COFF格式相對a.out格式最大變化是多了一個節(jié)頭表(section head table),能夠在包含基礎(chǔ)的文本段、數(shù)據(jù)段、BSS段之外包含更多的段,但是COFF對動態(tài)連接和C++程序的支持仍然比較困難。為了解決上述問題, UNIX系統(tǒng)實驗室(UNIX SYSTEM Laboratories USL) 開發(fā)出ELF文件格式,它被作為應(yīng)用程序二進制接口(Application binary Interface ABI)的一部分,其目的是替代傳統(tǒng)的a.out格式。例如,ELF文件格式中引入初始化段.init和結(jié)束段.fini(分別對應(yīng)構(gòu)造函數(shù)和析構(gòu)函數(shù))則主要是為了支持C++程序。1994年6月ELF格式出現(xiàn)在LINUX系統(tǒng)上,現(xiàn)在ELF格式作為UNIX/LINUX最主要的可執(zhí)行文件格式。當(dāng)然我們完全有理由相信,在將來還會有新的可執(zhí)行文件格式出現(xiàn)。

  上述三種可執(zhí)行文件格式都很好的體現(xiàn)了設(shè)計思想中分層的概念,由一個總的頭部刻畫了文件的基本要素,再由若干子頭部/條目刻畫了文件的若干細節(jié)。比較一下可執(zhí)行文件格式和以太數(shù)據(jù)包中以太頭、IP頭、TCP頭的設(shè)計,我想我們能很好的感受分層這一重要的設(shè)計思想。參考資料 21從全局的角度討論了各種文件的格式,并提出一個比較夸張的結(jié)論:Everything Is Byte!

  最后的題外話:大多數(shù)資料中對a.out格式的評價較低,常見的詞語有黑暗年代(dark ages)、丑陋(ugly)等等,當(dāng)然,從現(xiàn)代的觀點來看,的確是比較簡單,但是如果沒有曾經(jīng)的簡單何來今天的精巧?正如我們今天可以評價石器時代的技術(shù)是ugly,那么將來的人們也可以嘲諷今天的技術(shù)是非常ugly。我想我們也許應(yīng)該用更平和的心態(tài)來對曾經(jīng)的技術(shù)有一個公正的評價。

熱詞搜索:

上一篇:UNIX/Linux平臺上可執(zhí)行文件格式分析三
下一篇:Linux_Swap持續(xù)增長的問題 一

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
日韩一级大片在线观看| 成人av网站大全| 欧美一区二区美女| 奇米亚洲午夜久久精品| 日韩免费视频一区| 国产精品综合一区二区| 国产欧美日韩卡一| 91视频91自| 依依成人精品视频| 欧美午夜一区二区三区免费大片| 亚洲国产精品久久人人爱蜜臀| 欧美日韩中文国产| 日本va欧美va精品发布| 2020国产成人综合网| 成人app网站| 亚洲综合图片区| 91精品一区二区三区久久久久久 | 欧美xingq一区二区| 麻豆一区二区三| 国产午夜亚洲精品羞羞网站| aaa欧美色吧激情视频| 一区二区三区蜜桃网| 欧美一区二区三区视频免费播放| 久久99精品久久久| 18成人在线视频| 在线电影欧美成精品| 丰满放荡岳乱妇91ww| 亚洲曰韩产成在线| 久久九九影视网| 在线免费观看日韩欧美| 乱中年女人伦av一区二区| 国产精品视频一二三区| 欧美日韩小视频| 成人综合婷婷国产精品久久免费| 亚洲女同一区二区| 欧美一区二区在线免费观看| 国产露脸91国语对白| 亚洲影院在线观看| 久久久久99精品国产片| 欧美色窝79yyyycom| 国产精品99久久久久久宅男| 亚洲高清久久久| 国产精品久久久久一区二区三区 | 国产精一品亚洲二区在线视频| 中文字幕一区二区三区在线不卡 | 国产成人在线看| 亚洲午夜精品久久久久久久久| 久久精品视频在线免费观看| 欧美久久久一区| 成人av在线一区二区三区| 激情欧美日韩一区二区| 亚洲成人黄色影院| 综合电影一区二区三区 | ...中文天堂在线一区| 日韩女优制服丝袜电影| 91成人免费在线视频| 国产乱码字幕精品高清av| 亚洲成人三级小说| 精品国产伦一区二区三区免费 | 精品久久久久久久久久久久久久久 | 日韩视频在线永久播放| 91麻豆swag| 国产综合久久久久久久久久久久 | 中文字幕乱码日本亚洲一区二区| 在线一区二区三区四区五区 | 国产婷婷一区二区| 欧美日韩在线播放| 国产盗摄视频一区二区三区| 久久精品噜噜噜成人av农村| 亚洲欧美另类久久久精品2019| 欧美成人aa大片| 欧美自拍丝袜亚洲| 成人性色生活片| 狠狠色丁香久久婷婷综合_中| 亚洲黄色小说网站| 中文字幕一区二区在线观看| 久久蜜桃一区二区| 7777精品伊人久久久大香线蕉完整版| 在线观看亚洲精品| 91免费视频观看| 99视频精品全部免费在线| 国产一二精品视频| 亚洲精品国产高清久久伦理二区| 久久久久久免费毛片精品| 日韩视频永久免费| 91亚洲大成网污www| 国产尤物一区二区| 精品一区二区av| 久久精品久久精品| 蜜桃一区二区三区在线| 三级欧美韩日大片在线看| 亚洲精品高清在线观看| 自拍视频在线观看一区二区| 国产精品福利影院| 欧美国产欧美综合| 精品乱人伦小说| 欧美国产1区2区| 国产精品国产a级| 中文字幕一区二区三区不卡| 国产精品少妇自拍| 综合久久给合久久狠狠狠97色| 欧美极品xxx| 国产精品久久久久婷婷| 国产精品黄色在线观看| 中文字幕va一区二区三区| 亚洲精品高清在线观看| 亚洲一区二区欧美日韩| 亚洲电影视频在线| 日韩av一区二区三区四区| 日本色综合中文字幕| 精品亚洲porn| 国产成人精品免费一区二区| 国产成人啪免费观看软件| 国产99精品国产| 国产成人a级片| 成人午夜精品在线| www.欧美亚洲| 欧美日韩在线三级| 日韩免费高清av| 国产喂奶挤奶一区二区三区| 中文字幕在线视频一区| 一区二区三区在线观看动漫| 亚洲第一在线综合网站| 日日骚欧美日韩| 美女视频黄a大片欧美| 国产不卡视频一区二区三区| 91浏览器在线视频| 欧美放荡的少妇| 欧美成人a视频| 亚洲品质自拍视频| 亚洲成人一二三| 国产综合成人久久大片91| 国产一区二区91| 色94色欧美sute亚洲线路一ni| 91精品啪在线观看国产60岁| 久久精品欧美一区二区三区不卡| 亚洲天堂中文字幕| 日韩高清在线不卡| 成人精品鲁一区一区二区| 99免费精品视频| 9191久久久久久久久久久| 精品国产一区二区三区av性色| 国产精品成人一区二区三区夜夜夜| 亚洲成av人在线观看| 国产精选一区二区三区| 欧美网站大全在线观看| 国产亚洲美州欧州综合国| 亚洲精品久久久蜜桃| 久久国产免费看| 欧美一区二区三区成人| **性色生活片久久毛片| 极品少妇xxxx精品少妇| 欧美性猛交一区二区三区精品 | 成人性视频网站| 欧美日韩国产在线观看| 国产日产欧美一区二区三区| 偷窥少妇高潮呻吟av久久免费| 成人免费福利片| 欧美精品一区二区三区视频| 午夜精品免费在线观看| 97精品久久久久中文字幕| 日韩三级视频中文字幕| 亚洲国产日韩一级| 一本大道久久a久久综合婷婷| 国产亚洲一区二区在线观看| 日韩1区2区3区| 在线观看一区不卡| 亚洲欧洲三级电影| 久久国产福利国产秒拍| 在线成人免费观看| 亚洲一区在线视频| 色狠狠一区二区三区香蕉| 国产精品乱码一区二三区小蝌蚪| 午夜免费久久看| 欧美精品乱码久久久久久按摩| 亚洲欧美日韩人成在线播放| 福利电影一区二区| 久久综合网色—综合色88| 日韩精品色哟哟| 51久久夜色精品国产麻豆| 一区二区免费看| 欧美在线啊v一区| 亚洲一二三区在线观看| 色94色欧美sute亚洲线路一久| 亚洲欧美一区二区三区国产精品 | 欧美日本韩国一区二区三区视频| 亚洲天天做日日做天天谢日日欢 | 日韩精品成人一区二区在线| 色婷婷av一区| 亚洲最快最全在线视频| 欧美日韩在线播放一区| 午夜不卡av在线| 在线成人免费观看| 蜜桃视频一区二区三区| 日韩限制级电影在线观看| 日韩黄色免费电影| 国产日产欧美精品一区二区三区| 国产99久久久国产精品潘金| 国产精品久久夜| 色综合天天性综合|