久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

幾個(gè)重要的基本概念-創(chuàng)新互聯(lián)

幾個(gè)重要的基本概念:幾個(gè)重要的基本概念

1)節(jié):PE文件的真正內(nèi)容劃分成塊,稱之為sections(節(jié))。每節(jié)是一塊擁有共同屬性的數(shù)據(jù),比如代碼/數(shù)據(jù)、讀/寫等。我們可以把PE文件想象成一邏輯磁盤,PE header 是磁盤的boot扇區(qū),而sections就是各種文件,每種文件自然就有不同屬性如只讀、系統(tǒng)、隱藏、文檔等等。值得我們注意的是 ---- 節(jié)的劃分是基于各組數(shù)據(jù)的共同屬性: 而不是邏輯概念。重要的不是數(shù)據(jù)/代碼是如何使用的,如果PE文件中的數(shù)據(jù)/代碼擁有相同屬性,它們就能被歸入同一節(jié)中。不必關(guān)心節(jié)中類似于"data", "code"或其他的邏輯概念: 如果數(shù)據(jù)和代碼擁有相同屬性,它們就可以被歸入同一個(gè)節(jié)中。(節(jié)名稱僅僅是個(gè)區(qū)別不同節(jié)的符號(hào)而已,類似"data", "code"的命名只為了便于識(shí)別,惟有節(jié)的屬性設(shè)置決定了節(jié)的特性和功能)如果某塊數(shù)據(jù)想付為只讀屬性,就可以將該塊數(shù)據(jù)放入置為只讀的節(jié)中,當(dāng)PE裝載器映射節(jié)內(nèi)容時(shí),它會(huì)檢查相關(guān)節(jié)屬性并置對(duì)應(yīng)內(nèi)存塊為指定屬性。下面是常見(jiàn)的節(jié)名及作用:

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),虎丘網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:虎丘等地區(qū)?;⑶鹱鼍W(wǎng)站價(jià)格咨詢:18982081108

節(jié)名

作用

.arch

最初的構(gòu)建信息(Alpha Architecture Information)

.bss

未經(jīng)初始化的數(shù)據(jù)

.CRT

C運(yùn)行期只讀數(shù)據(jù)

.data

已經(jīng)初始化的數(shù)據(jù)

.debug

調(diào)試信息

.didata

延遲輸入文件名表

.edata

導(dǎo)出文件名表

.idata

導(dǎo)入文件名表

.pdata

異常信息(Exception Information)

.rdata

只讀的初始化數(shù)據(jù)

.reloc

重定位表信息

.rsrc

資源

.text

.exe或.dll文件的可執(zhí)行代碼

.tls

線程的本地存儲(chǔ)器

.xdata

異常處理表

注意:上面已經(jīng)說(shuō)過(guò)了“節(jié)的劃分是基于各組數(shù)據(jù)的共同屬性: 而不是邏輯概念。重要的不是數(shù)據(jù)/代碼是如何使用的,如果PE文件中的數(shù)據(jù)/代碼擁有相同屬性,它們就能被歸入同一節(jié)中” 所以上面表中列出的節(jié)并不一定單獨(dú)成節(jié),也就是說(shuō)即使存在上面表中的某一節(jié),在節(jié)表(section table)(后面會(huì)講到)中也不一定就有于之對(duì)應(yīng)的項(xiàng),因?yàn)樗赡芎蛣e的具有共同屬性的節(jié)共同組成了一節(jié)。比如 .idata 可以和 .text 合成一節(jié)而命名為 .text,而在節(jié)表中只有和 .text 對(duì)應(yīng)的項(xiàng)。這也就是后面的optional header中數(shù)據(jù)目錄(DataDirectory)存在的作用,因?yàn)楹芏嘤杏玫墓?jié)被合并了,因此加載器無(wú)法通過(guò)節(jié)表來(lái)定位它們,所以這就是數(shù)據(jù)目錄(DataDirectory)發(fā)揮作用的時(shí)候了(具體作用后面會(huì)講到)。

2)虛擬地址:虛擬地址即程序中使用的地址,也就是從程序員的角度看到的地址,有時(shí)也叫邏輯地址;通常使用段地址:偏移量的形式表示,不過(guò)在32位系統(tǒng)中使用的是平坦(Flat)內(nèi)存模式,所以我們可以不用管段地址,只考慮32位的偏移量即可,認(rèn)為32位的偏移量就是虛擬地址,這樣一來(lái)程序員就可以認(rèn)為他是在一個(gè)段中寫程序,這個(gè)段的大小是232 = 4G的容量,當(dāng)然這部分地址空間是程序和OS共享的,程序員可以利用的大約有2G(具體可以參考Win98和WinNT的內(nèi)存布局);所以我們平時(shí)在寫程序申請(qǐng)內(nèi)存的時(shí)候?qū)嶋H上申請(qǐng)的就是這2G的線性地基空間,由于所有的4G線性地址空間都被OS作為資源來(lái)管理(這4G的線性地址空間是通過(guò)頁(yè)表來(lái)表現(xiàn)出來(lái)的,OS分配線性地址空間給進(jìn)程也就是分配相應(yīng)的頁(yè)表給進(jìn)程),所以我們無(wú)論用什么方式使用內(nèi)存最終都是轉(zhuǎn)換為OS為我們分配線性地址空間,至于分配的線性地址空間又如何被映射為真正的物理內(nèi)存完全是有OS負(fù)責(zé)的(更詳細(xì)資料參見(jiàn)“Windows 內(nèi)存管理”),程序員不必操心。

3)相對(duì)虛擬地址:「相對(duì)虛擬地址(Relative VirtualAddress,RVA)」即相對(duì)于上面的基地址的偏移量。PE 文件中的許多字段內(nèi)容都是以RVA 表示,一個(gè)RVA 是某一資料項(xiàng)的offset(偏移)值-- 從文件被映像進(jìn)來(lái)的起點(diǎn)(即基地址)算起。舉個(gè)例子,我們說(shuō)Windows加載器把一個(gè)PE 文件映像到虛擬地址空間的0x400000 處,如果此image 有一個(gè)表格開始于0x401464,那么這個(gè)表格的RVA 就是0x1464:虛擬地址0x401464 - 基地址0x400000 = RVA 0x1464只要把RVA 加上基地址,RVA 就可以被轉(zhuǎn)換為一個(gè)有用的指針。在PE文件中大多數(shù)地址多是RVA 而 RVA只有當(dāng)PE文件被PE裝載器裝入內(nèi)存后才有意義。如果我們直接將文件映射到內(nèi)存而不是通過(guò)PE裝載器載入,那么我們就不能直接使用那些RVA。必須先將那些RVA轉(zhuǎn)換成文件偏移量,RVAToOffset函數(shù)就起到這個(gè)作用。

4)基地址:「基地址(base address)」是一個(gè)重要概念,用來(lái)描述被映像到內(nèi)存中的EXE 或DLL 的起始地址。為了方便,Windows NT 和Windows 95 都以模塊的基地址做為模塊的instance handle(HINSTANCE,實(shí)例句柄)。Windows95加載器把一個(gè)PE 文件映像到虛擬地址空間的0x400000 處;而WindowNT加載器把一個(gè)PE 文件映像到虛擬地址空間的0x10000 處 。

5)文件偏移量:文件中的地址與內(nèi)存中表示不同,它是用偏移量(File offset)來(lái)表示的,文件中的第一個(gè)字節(jié)的偏移量是0,后面的字節(jié)依次遞增。在SoftICE和W32Dasm下顯示的地址值是內(nèi)存線性地址,或稱之為虛擬地址(Virual Address,VA)。而十六進(jìn)制工具里,如:Hiew、Hex Workshop等顯示的地址就是文件地址,稱之為偏移量(File offset) 或物理地址(RAW offset,注意這個(gè)物理地址不是內(nèi)存尋址中說(shuō)到的物理地址 )。

6)模塊:「模塊(module)」一詞表示一個(gè)EXE 或DLL 被加載內(nèi)存后的程序代碼、數(shù)據(jù)和資源(就是被加載到內(nèi)存后的EXE或DLL整體,包括代碼、數(shù)據(jù)和資源,而不是說(shuō)代碼、數(shù)據(jù)、資源分別都是模塊)。除了程序代碼和數(shù)據(jù)是你的程序直接使用的之外,模塊還內(nèi)含一些支持性數(shù)據(jù),Windows 用它來(lái)決定程序代碼和數(shù)據(jù)放在內(nèi)存的什么地方,在Win32,這些信息保留在PE頭部(即圖1中的PE header,實(shí)際上它是一個(gè)IMAGE_NT_HEADERS 結(jié)構(gòu))中。

7)邏輯地址:見(jiàn)“虛擬地址”

8)線性地址:線性地址是由虛擬地址(邏輯地址)轉(zhuǎn)換來(lái)的,轉(zhuǎn)換需要CPU和OS共同合作來(lái)完成;里面涉及到全局描述符表GDT和局部描述符表LDT;不過(guò)由于32位的Window系統(tǒng)采用flat內(nèi)存模式,所以我們可以認(rèn)為虛擬地址就是線性地址,即我們可以認(rèn)為邏輯地址中的32位偏移量就是線性地址。

9)物理地址:即最終發(fā)往地址總線上的地址,它對(duì)應(yīng)著實(shí)際的物理內(nèi)存,在32位的Window存儲(chǔ)管理中它是通過(guò)頁(yè)表由線性地址轉(zhuǎn)換出來(lái)的。

10)實(shí)際地址:即“物理地址”。

其中前面的6個(gè)概念是學(xué)習(xí)PE文件格式需要知道的

不登高山,怎知天高;不臨深溪,焉知地厚!站在堅(jiān)實(shí)的土地上,做著生命中最真實(shí)的事情;像一棵挺拔的大樹,認(rèn)可自己的命運(yùn)并敢于迎接屬于這一方天空的風(fēng)風(fēng)雨雨。

本文題目:幾個(gè)重要的基本概念-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://sd-ha.com/article4/jjpie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站策劃、服務(wù)器托管、建站公司、電子商務(wù)、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)