日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

认识PE文件

發(fā)布時(shí)間:2024/4/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 认识PE文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

?Windows下的EXE可執(zhí)行文件都是屬于PE格式。PE是英文Portable Executable的縮寫,它是一種針對于微軟Windows NT、Windows 95和Win32系統(tǒng),由微軟公司設(shè)計(jì)的可執(zhí)行的二進(jìn)制文件格式,EXE、DLL都是屬于PE格式的文件。

?

下面是一個(gè)PE文件結(jié)構(gòu)的圖

?

?

?

DOS MZ Header

??? 所有 PE文件(甚至32位的DLLs)必須以簡單的DOS MZ header開始,它是一個(gè)IMAGE_DOS_HEADER結(jié)構(gòu)。有了它,一旦程序在DOS下執(zhí)行,DOS就能識別出這是有效的執(zhí)行體,然后運(yùn)行緊隨MZ Header之后的DOS Stub。

?

??? DOS Stub?

DOS Stub實(shí)際上是個(gè)有效的EXE,在不支持PE文件格式的操作系統(tǒng)中,它將簡單顯示一個(gè)錯(cuò)誤提示,類似于字符串“This program requires Windows”或者程序員可根據(jù)自己的意圖實(shí)現(xiàn)完整的DOS代碼。大多數(shù)情況下DOS Stub由匯編器/編譯器自動(dòng)生成。

?

PE Header

???? 緊接著DOS Stub的是PE Header。它是一個(gè)IMAGE_NT_HEADERS結(jié)構(gòu)。其中包含了很多PE文件被載入內(nèi)存時(shí)需要用到的重要域。執(zhí)行體在支持PE文件結(jié)構(gòu)的操作系統(tǒng)中執(zhí)行時(shí),PE裝載器將從DOS MZ header中找到PE header的起始偏移量。因而跳過DOS Stub直接定位到真正的文件頭 PE header。

?

Section Table

??? PE Header之后是數(shù)組結(jié)構(gòu)Section Table(節(jié)表)。如果PE文件里有5個(gè)節(jié),那么此Section Table結(jié)構(gòu)數(shù)組內(nèi)就有5個(gè)(IMAGE_SECTION_HEADER)成員,每個(gè)成員包含對應(yīng)節(jié)的屬性、文件偏移量、虛擬偏移量等。排在節(jié)表中的最前面的第一個(gè)默認(rèn)成員是text,即代碼節(jié)頭。通過遍歷查找方法可以找到其他節(jié)表成員(節(jié)表頭)。

?

Sections

??? PE文件的真正內(nèi)容劃分成塊,稱為Sections(節(jié))。每個(gè)標(biāo)準(zhǔn)節(jié)的名字均以圓點(diǎn)開頭,但也可以不以圓點(diǎn)開頭,節(jié)名的最大長度為8個(gè)字節(jié)。Sections是以其起始位址來排列,而不是以其字母次序來排列。通過節(jié)表提供的信息,可以找到這些節(jié)。程序的代碼,資源等就放在這些節(jié)中。

??? 節(jié)的劃分是基于各組數(shù)據(jù)的共同屬性,而不是邏輯概念。每節(jié)是一塊擁有共同屬性的數(shù)據(jù),比如代碼/數(shù)據(jù)、讀/寫等。如果PE文件中的數(shù)據(jù)/代碼擁有相同屬性,它們就能被歸入同一節(jié)中。節(jié)名稱僅僅是個(gè)區(qū)別不同節(jié)的符號而已,類似“data”,“code”的命名只為了便于識別,唯有節(jié)的屬性設(shè)置決定了節(jié)的特性和功能。

總結(jié)

以上是生活随笔為你收集整理的认识PE文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。