456成人影院在线观看_亚洲a毛片_日韩9999_伊人网老司机_一本免费视频_最近高清日本免费

IT之道-艾銻知道

您當前位置: 主頁 > 資訊動態 > IT知識庫 >

IT系統運維-PE文件結構


2020-05-01 17:37 作者:艾銻無限 瀏覽量:
在Windows系統運維中,對各種文件結構必須有個清晰的了解。其中PE文件結構是我們系統運維必須要了解的結構體。PE(Portable Executable:可移植的執行體)是Win32環境自身所帶的可執行文件格式。它的一些特性繼承自Unix的Coff(Common Object File Format)文件格式。可移植的執行體意味著此文件格式是跨win32平臺的,即使Windows運行在非Intel的CPU上,任何win32平臺的PE裝載器都能識別和使用該文件格式。當然,移植到不同的CPU上PE執行體必然得有一些改變。除VxD和16位的Dll外,所有 win32執行文件都使用PE文件格式。因此,研究PE文件格式是我們洞悉Windows結構的良機。

文件結構

圖表結構:


 

 
DOS頭是用來兼容MS-DOS操作系統的

NT頭包含windows PE文件的主要信息

節表:是PE文件后續節的描述

節:每個節實際上是一個容器,可以包含代碼、數據等等,每個節可以有獨立的內存權限,比如代碼節默認有讀/執行權限,節的名字和數量可以自己定義

文件地址

1、PE文件在硬盤上和在內存里是不完全一樣的,被加載到內存以后其占用的虛擬地址空間要比在硬盤上占用的空間大一些,這是因為各個節在硬盤上是連續的,而在內存中是按頁對齊的。

2、PE結構內部,表示某個位置的地址采用了兩種方式,針對在硬盤上存儲文件中的地址,稱為原始存儲地址或物理地址表示距離文件頭的偏移;另外一種是針對加載到內存以后映象中的地址,稱為相對虛擬地址(RVA),表
示相對內存映象頭的偏移。

3、CPU的某些指令是需要使用絕對地址的,比如取全局變量的地址,傳遞函數的地址編譯以后的匯編指令中肯定需要用到絕對地址而不是相對映象頭的偏移,因此PE文件會建議操作系統將其加載到某個內存地址(這個叫基地
址),這種表示方式叫做虛擬地址(VA)

4、PE文件無法加載到預期的地址,那么系統會幫他重新選擇一個合適的基地址將他加載到此處,這時原有的VA就全部失效了,NT頭保存了PE文件加載所需的信息,在不知道PE會加載到哪個基地址之前,VA是無效的,所以在
PE文件頭中大部分是使用RVA來表示地址的

可執行文件頭

1、PE文件可以導出函數讓其他的PE文件使用,也可以從其他PE文件導入函數

2、PE文件通過導出表指明自己導出那些函數,通過導入表指明需要從哪些模塊導入哪些函數。

3、DOS頭和NT頭就是PE文件中兩個重要的文件頭

DOS頭

typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header

    WORD   e_magic;                     // Magic number

    WORD   e_cblp;                      // Bytes on last page of file

    WORD   e_cp;                        // Pages in file

    WORD   e_crlc;                      // Relocations

    WORD   e_cparhdr;                   // Size of header in paragraphs

    WORD   e_minalloc;                  // Minimum extra paragraphs needed

    WORD   e_maxalloc;                  // Maximum extra paragraphs needed

    WORD   e_ss;                        // Initial (relative) SS value

    WORD   e_sp;                        // Initial SP value

    WORD   e_csum;                      // Checksum

    WORD   e_ip;                        // Initial IP value

    WORD   e_cs;                        // Initial (relative) CS value

    WORD   e_lfarlc;                    // File address of relocation table

    WORD   e_ovno;                      // Overlay number

    WORD   e_res[4];                    // Reserved words

    WORD   e_oemid;                     // OEM identifier (for e_oeminfo)

    WORD   e_oeminfo;                   // OEM information; e_oemid specific

    WORD   e_res2[10];                  // Reserved words

    LONG   e_lfanew;                    // File address of new exe header

  } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;


 

 
重點關注字段

e_magic:一個WORD類型,值是一個常數0x4D5A,用文本編輯器查看該值位‘MZ’,可執行文件必須都是'MZ'開頭。

e_lfanew:為32位可執行文件擴展的域,用來表示DOS頭之后的NT頭相對文件起始地址的偏移。

NT頭

typedef struct _IMAGE_NT_HEADERS {


    DWORD Signature;

    IMAGE_FILE_HEADER FileHeader;

    IMAGE_OPTIONAL_HEADER32 OptionalHeader;

} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;


 


 
Signature:類似于DOS頭中的e_magic,其高16位是0,低16是0x4550,用字符表示是'PE‘。
I
MAGE_FILE_HEADER是PE文件頭

typedef struct _IMAGE_FILE_HEADER {

    WORD    Machine;

    WORD    NumberOfSections;

    DWORD   TimeDateStamp;

    DWORD   PointerToSymbolTable;

    DWORD   NumberOfSymbols;

    WORD    SizeOfOptionalHeader;

    WORD    Characteristics;

} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

PE文件頭


 


 
Machine:該文件的運行平臺,是x86、x64還是I64

NumberOfSections:該PE文件中有多少個節,也就是節表中的項數。

TimeDateStamp:PE文件的創建時間,一般有連接器填寫。

PointerToSymbolTable:COFF文件符號表在文件中的偏移。

NumberOfSymbols:符號表的數量。

SizeOfOptionalHeader:緊隨其后的可選頭的大小。

Characteristics:可執行文件的屬性,可以是下面這些值按位相或。

PE導入表

IMAGE_DIRECTORY_ENTRY_IMPORT就是導入表,在PE文件加載時,會根據這個表里的內容加載依賴的DLL,并填充所需函數的地址IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT叫做綁定導入表,在第一種導入表導入
地址的修正是在PE加載時完成,如果一個PE文件導入的DLL或者函數多那么加載起來就會略顯的慢一些,所以出現了綁定導入,在加載以前就修正了導入表,這樣就會快一些。IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT
叫做延遲導入表,一個PE文件也許提供了很多功能,也導入了很多其他DLL,但是并非每次加載都會用到它提供的所有功能,也不一定會用到它需要導入的所有DLL,因此延遲導入就出現了,只有在一個PE文件真正用到需要的
DLL,這個DLL才會被加載,甚至于只有真正使用某個導入函數,這個函數地址才會被修正。

IMAGE_DIRECTORY_ENTRY_IAT是導入地址表,前面的三個表其實是導入函數的描述,真正的函數地址是被填充在導入地址表中的。

裝載PE文件的主要步驟 

第一:當PE文件被執行,PE裝載器檢查DOS MZ header里的PE header偏移量。如果找到,則跳轉到PE header。

第二:PE裝載器檢查PE header的有效性。如果有效,就跳轉到PE header的尾部。

第三:緊跟PE header的是節表。PE裝載器讀取其中的節索引信息,并采用文件映射方法將這些節映射到內存,同時附上節表里指定的節屬性。

第四:PE文件映射入內存后,PE裝載器將處理PE文件中類似import table(引入表)邏輯部分。
 
艾銻無限科技專業:IT外包、企業外包北京IT外包、桌面運維、弱電工程、網站開發、wifi覆蓋方案,網絡外包,網絡管理服務,網管外包,綜合布線,服務器運維服務,中小企業it外包服務,服務器維保公司,硬件運維,網站運維服務
 
以上文章由北京艾銻無限科技發展有限公司整理

相關文章

IT外包服務
二維碼 關閉
主站蜘蛛池模板: 色综合a_日韩一区二区三区精品视频第3页_成人午夜片av在线看_国产华人av导航_欧美一区二区三区在线观看_欧美丰满熟妇XXXX_国产XXXX做受视频_91九色欧美 | 日本精品一区二区三区香蕉久久_亚洲人成网7777777国产_久草色视频在线观看_99久久国产综合精品女不卡_男女啪啪免费观看无遮挡_亚洲一区精品无码_手机在线免费av_色黄啪啪网18以下勿进 | 中文字幕无码日韩专区_久久艹逼_男人j进女人p免费视频_日本黄色免费在线_天堂综合网久久_亚洲欧美国产精品久久久久_中文字幕日韩高清2024_亚洲欧美激情精品一区二区 | www.com超碰_久久中文精品无码中文字幕_中文天堂在线资源www_gogogo欧洲免费视频_午在线亚洲男人午在线_精品亚洲永久免费_色综合久久久久综合体桃花网_免费一级做a爰片 | 亚洲精品国产a_国产麻豆乱子伦午夜视频观看_a级大片_久久精品国产91精品亚洲高清_日韩免费视频中文字幕_亚洲AV成人一区二区三区_芒果视频91_高潮一区二区 | 亚洲黄色性视频_www.亚洲一区二区_成人av午夜_精品久久ai_无码aⅴ免费中文字幕久久_5252aⅴhaose我爱久久_亚洲一区区_一级黄色带片 | 在线99_三年片免费观看影视大全满天星_国产网红主播精品av_日韩美女在线_一级在线播放_国产精品成人一区无码_精品久久久久一区二区_H无码精品动漫在线观看导航 | 美女视频三区_欧亚洲嫩模精品一区三区_91在线无码精品秘入口九色_成人精品动漫_男女真实毛片视频图片_日韩精品无码人妻一区二区三区_免费视频啪啪_亚洲高清揄拍自拍AV | 涩五月婷婷_国产精品多久久久久久情趣酒店_国产精品sm在线观看_free男子游泳部第三季_热久久性_天天弄夜夜操_人人干日日操_龙珠z免费观看国语版 | 亚洲天堂地址_美女免费视频一区二区三区_午夜视频在线免费播放_国产精品VA在线观看无码_少妇人妻偷人精品无码视频新浪_亚洲AV无码AV在线播放_成人在线视频一区_黄色二区 | 麻豆国产精品色欲av亚洲三区_午夜少妇在线观看视频_欧美亚洲第一页_久久小草_国产高清视频色欲_亚洲av无码成h人动漫无遮挡不卡_在线亚洲一区二区_美女被强遭的免费网站视频 | 国产精品999在线_黄视频网站在线看_玩麻豆国产?片对白日逼视频_天天干天天操天天玩_日韩天天_夜夜夜草视频_爱色av网站_日产一级毛片 | 顶级少妇做爰高潮_91久久夜色精品国产按摩_色综合精品无码一区二区三区_国产精选一级毛片_亚洲中文有码字幕日本第一页_九九热在线观看_变态孕交videosgratis孕妇_日本少妇久久久 | 午夜宅男在线观看_欧美aaaaaabbbbb_99视频久久_亚洲成年人网址_国产日韩二区_激情成人开心网_亚洲AV无码成人精品区一区_www.日日干 | 国产裸体视频网站_国产一区二区三区看片_久久激情网站_国产精品xxxx18a99_欧美xxxx喷水_亚洲国产精品无码一区二区三区_蜜桃成人在线_国产免费又硬又黄又爽的视频喷水 | www.黄色网址.com_九一在线啪_国产导航在线_亚洲国产日韩不卡一区二区_国内精品久久久久影院网站_最新国产视频_伊人欧美视频_日韩久草视频 | 天天做天天爱天天操_日日噜噜大屁股熟妇_久草免费手机视频_国产国产成人久久精品_国产主播精品_久久午夜无码人妻鲁丝片午夜精品_一性一交一伦一色一按—摩_中文字幕成人网 | 久久激情av_欧美日韩精品一区二区三区高清视频_国产精品久久久久久久久果冻传媒_www.av黄_四虎影视久久久免费观看_亚洲精品影院在线_深夜福利备好纸巾18禁止_亚洲va | 欧美成人免费全部观看天天性色_免费视频xxx_在线观看日韩中文字幕_自拍偷拍av_偷摄私密养生馆少妇推油_免费一级a毛片免费观看_羞羞答答xxdd在线网站_成人免费视频网站在线看 | 97亚洲色欲色欲综合网_操操影视_成人一区二区三区在线观看_久久久久国产一区二区三区不卡_黄色片aaaa_麻豆传媒免费网站_色第一页_久久久成人网 | 97视频在线看_亚洲国产成人私人影院tom_5060网免费午夜8050_欧美一二三四_日本高清在线一区二区三区_欧美久久一级片_精品一区二区三区四区蜜桃_00粉嫩高中生洗澡偷拍视频 | 九九久久精品国产_最新亚洲人成无码WWW_一级毛片中文字幕_一区二区三区午夜视频_精品偷拍自拍_不卡无码人妻一区三区音频_手机看片福利一区二区三区_国产精品美女久久久网av | 欧美2区_国产精品人妻一区二区三区四_暖暖免费高清日本社区在线观看_黄色av网站在线看_在线观看无码视频_久久亚洲中文字幕伊人久久大_蜜臀av免费一区二区三区水牛_免费啪视频观在线视频浴室 | 色欲AV无码一区二区三区_国产亚洲欧美一区二区三区四区_日本免费一区二区三区最新_日本一区二区三区在线不卡_天堂在线中文_四虎国产精品亚洲永久免费_国产a级久久久_成年美女黄网 | 国产亚洲第一区_www.69视频_免费看美女毛片_人妻无码不卡中文字幕在线视频_97超碰免费在线观看_日韩欧美国产综合_国内精品久久久久久久影院_亚洲中文字幕无码一区日日添 | 日韩亚洲区字幕_国产精品99久久久精品_99久久久无码国产精品6_挺进朋友人妻的身体里_美女精品久久久_国产精品夜夜嗨_欧美久久久久_高潮流白浆潮喷在线播放视频 | 精品自拍视频_性videos欧美熟妇hdx_国产精品美女久久久浪潮软件_欧美情侣性视频_午夜播放器在线观看_黄色一级片免费_欧美色精品vr_91久久久精品国产一区二区蜜臀 | 日本精品久久_四虎影视网址_国产强奷伦奷片_精品黑人一区二区三区久久_国产aⅴ夜夜欢一区二区三区_中文字幕第315页_亚洲AV无码成人网站在线观看_日韩欧美卡一卡二卡新区 | 成人小视频在线观看免费_麻豆精品久久久久久中文字幕无码_国产成人麻豆精品午夜福利在线_精品成av人一区二区三区_影视先锋男人无码在线_青青草青娱乐在线_天操夜夜操_精品一区毛片 | 97成人在线免费视频_草久视频_午夜视频在线看_精品自拍一区_午夜性大片_高清成人爽a毛片免费_午夜三区_成人午夜精品视频 | 黄色成年网站_亚洲午夜无码AV毛片久久_sss海量视频在线观看_日韩精品卡1卡二卡3卡四卡_se亚洲_日本添下边无码视频全过程_性爱在线免费视频_亚洲熟妇无码AV不卡在线 | 中文字幕在线国产_亚洲一本大道av久在线播放_男人进去女人爽免费视频_中文字幕无码日韩中文字幕_日日夜夜天天射_国内久久久_狠狠做深爱婷婷久久综合一区_国产高清福利无码视频 | omofun动漫在线观看_亚洲无码自拍偷拍视频_国产精品综合二区_中文字幕区一区二_拍真实国产伦偷精品_狠狠操婷婷_www.avtvtv.com新网址_7799国产精品久久99 | 91人人视频在线观看_国产69精品久久久久久久_午夜精品在线观看视频_免费国产小视频_亚洲精品久久久久58_婷婷午夜激情网_久草精品一区_亚洲精品国产精品国产 | 亚洲av国产国产久青草_波多野结衣中文字幕免费观看_国产三级黄色片_亚洲熟熟妇xxxx_久草在线免费福利资源_国产精品69精品一区二区三区_久久久成人毛片无码_天天爽夜夜操 | 欧美最猛黑人xxxx黑人表情_亚洲视频一区国产_黑人巨大精品欧美一区二区蜜桃_国产成年人小视频_99精品久久久国产一区二区三_青草青在线_91精品在线视频观看_成人黄色av网址 | 激情在线视频网站_日韩午夜在线观看_97精品伊人久久久大香线蕉_久久夜色精品亚洲噜噜国产mv_蜜桃嫩草_日本黄色天堂_国产69精品久久久久9999APGF_成人黄色视频免费观看 | 新91av_女人被做到高潮视频_韩国精品一区二区三区无码视频_亚洲国产亚洲_天天综合亚洲色在线精品_成人在线播放网站_午夜成年_黄色a在线 | 东凛mdyd950在线播放_亚洲中文无码卡通动漫3D_97国产精品人妻无码免费_欧美精品激情在线_国产精品久久久久77777丨_亚洲成在人线AV无码_日本免费看黄色_国产亚洲精品麻豆一区二区 | av天天av_欧美精品99_国产黄大片在线观看画质优化_国产资源免费观看_丝袜老师高潮呻吟高潮_日韩在线_亚洲kkk4444在线观看_亚洲大片69999 | 毛片无码免费无码播放_欧美福利片在线观看_沦为公交两奶头春药高潮迭起_亚洲精品无码一区二区三区污_九色porny91_办公室高h荡肉呻吟在线观看_亚洲精品一卡二卡三卡四卡2021_中文字幕第31页 |