青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

PE文件(2)

Posted on 2009-09-13 17:05 S.l.e!ep.¢% 閱讀(660) 評論(0)  編輯 收藏 引用 所屬分類: PE
?
3. PE文件頭?
??? 由 'PE' 00 00 4 bytes + PE文件頭 20 bytes 組成
???
??? typedef struct _IMAGE_NT_HEADERS
??? {
? ????? DWORD Signature;? //這個必需為50 45 00 (PE 00 00 )4字節? PE\0\0??
???????????????????????????????????????? //這是PE文件頭的標記, 我們可以此識別給定文件是否為有效PE文件。
??????? // ?如果IMAGE_NT_HEADERS的signature域值等于"PE\0\0",那么就是有效的PE文件
??????? // 實際上,為了比較方便,Microsoft已定義了常量IMAGE_NT_SIGNATURE供我們使用。

??????? // IMAGE_DOS_SIGNATURE????? equ 5A4Dh????? MZ
??????? // IMAGE_OS2_SIGNATURE?????? equ 454Eh
??????? // IMAGE_OS2_SIGNATURE_LE equ 454Ch
??????? // IMAGE_VXD_SIGNATURE????? equ 454Ch
??????? // IMAGE_NT_SIGNATURE equ 4550h
????????
??????? // 該結構域包含了關于PE文件邏輯分布的信息,雖然域名有"可選"字樣,但實際上本結構總是存在的。

?

??????? IMAGE_FILE_HEADER FileHeader;? // 該結構包含了PE文件物理分布的信息,如節數目,PE文件的執行機器等
????????????????
??????? IMAGE_OPTIONAL_HEADER32 OptionalHeader; 可選頭結構

??? } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
?
??? typedef struct _IMAGE_FILE_HEADER
??? {
? ????? WORD? ? Machine;?????????????????????? ?//
INTEL 80386以上處理器必需為 4C 01 二字節
? ???? ?WORD? ? NumberOfSections;
?????? // 段的個數 // P: 1. 是指哪里的 Sections ?? 2. 最多可以有多少個 Sections?
??????? DWORD? TimeDateStamp;??????????? // 文件的創建日期和時間
??????? DWORD? PointerToSymbolTable;? // 用于調試
? ????? DWORD? NumberOfSymbols;??????? // 用于調試
? ????? WORD? ? SizeOfOptionalHeader;?? //
_IMAGE_OPTIONAL_HEADER有224字節所以為 E0 00
? ????? WORD? ? Characteristics;?????????? ?? // 關于文件信息的標記,比如文件是EXE還是DLL?? EXE可執行文件為02 00?
?
??? } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;?
?
??? 注:
???(1). Machine 字段表示這個PE文件被Build的目錄機器種類,eg DEC(R) Alpha、MIPS R4000、Inter(R) x86
????? 已知的合法值:?
??????IMAGE_FILE_MACHINE_I386 (0x14c)
??????????? Intel 80386 處理器或更高
?
???? 0x014d
??????????? Intel 80386 處理器或更高
?
???? 0x014e
??????????? Intel 80386 處理器或更高
?
???? 0x0160?????????
???????????? R3000 (MIPS⑧)處理器,大尾⑨
?
???? IMAGE_FILE_MACHINE_R3000 (0x162)
???????????? R3000 (MIPS)處理器,小尾
?
???? IMAGE_FILE_MACHINE_R4000 (0x166)
???????????? R4000 (MIPS)處理器,小尾
?
???? IMAGE_FILE_MACHINE_R10000 (0x168)
???????????? R10000 (MIPS)處理器,小尾
?
???? IMAGE_FILE_MACHINE_ALPHA (0x184)
???????????? DEC Alpha AXP⑩處理器
?
???? IMAGE_FILE_MACHINE_POWERPC (0x1F0)
???????????? IBM Power PC,小尾

(2). NumberOfSections 字段表示 這個PE文件有多少個段(多少個段頭部和多少個段實體,每個段頭部和段實體都在文件中連續排列,?所以要決定段頭部和段實體在哪里結束的話,段的數目是必需的)
???
(3). 判斷一個文件是否是合法的PE文件
????????? a. 比較 MZ 頭的 e_magic 值是否為 IMAGE_DOS_SIGNATURE以驗證是否是有效的DOS header
????????? b. 通過 MZ 頭的 e_lfanew 所指向的偏移獲取 PE 頭
????????? c. 比較 PE 頭的 Signature 值是否為 IMAGE_NT_SIGNATURE
????????? 如果滿足以上條件,則可以認為是一個合法的PE文件
?
(4). TimeDateStamp(32位),用來給出文件建立的時間。
???????? 同一個文件的不同版本必須唯一,時間戳的格式沒有明文規定,但似乎是按照UTC?
???????? (
時間“從1970年1月1日00:00:00算起的秒數值”----也就是大多數C語言編譯器給time_t標志使用的格式。)
?????????P: 這個時間戳是用來綁定各個輸入目錄的?
???????? 警告:有一些鏈接器往往將時間戳設為荒唐的值,而不是如前所述的time_t格式的鏈接時間。
?
(5). PointerToSymbolTable? 符號表指針
?????? NumberOfSymbols??????? 符號數
??????用于調試,
P: 總是為 0x00, 即使在 VC IDE 的 Project Setting 中設置了生成調試信息,也是為 0x00 , 為什么???????????
P: 1. NumberOfSections 表示 段的個數,那么 WIN32.PE 最多有多少段?
?
?(6). SizeOfOptionalHeader (16位)只是“IMAGE_OPTIONAL_HEADER(可選頭)”項的大小,?
P: 只是用于驗證PE文件結構的正確性?? 除了 E0 00 外是否有其它值?

(7). Characteristics (16位) 由許多標志集合組成
位1? IMAGE_FILE_EXECUTABLE_IMAGE(可執行映象文件) 表示如果文件是一個可執行文件,
也即不是目標文件或者庫文件時,置1。
?如果鏈接器嘗試創建一個可執行文件,卻因為一些原因失敗了,并保存映像以便下次例如增量鏈接時使用,此時此標志位也可能置1。?

位2? IMAGE_FILE_LINE_NUMS_STRIPPED(行數被剝離文件) 表示如果行數信息被剝除,此位置1;此位也不用于可執行文件。P:可執行文件不也有行數信息(假如PE編譯時加上調試信息的話)?

位3 IMAGE_FILE_LOCAL_SYMS_STRIPPED(本地符號被剝離文件) 表示如果文件中沒有關于本地符號的信息時,此位置1(此位也不用于可執行文件)。P: 同問

位4 IMAGE_FILE_AGGRESIVE_WS_TRIM(強行工作集修剪文件) 表示如果操作系統被假定為:通過將正在運行的進程(它所使用的內存數量)強行的頁清除來修剪它的工作集時,此位置1。如果一進程是大部分時間處于等待,且一天中僅被喚醒一次的演示性的應用程序之類時,此位也應該被置1。P: 沒看懂這句的意思。

P: 第 5,6 位跑哪去了??

位7 IMAGE_FILE_BYTES_REVERSED_LO(低字節變換文件)和 位15IMAGE_FILE_BYTES_REVERSED_HI(高字節變換文件) 表示如果一文件的字節序不是機器所預期的形式,因此它在讀入前必須調換字節時,此位置1。這樣做對可執行文件是不可靠的(操作系統期望可執行文件都已經被正確地按字節排整齊了)。

位8 IMAGE_FILE_32BIT_MACHINE(32位機器文件) 表示如果使用的機器被期望為32位的機器時,此位置1。現在的應用程序總將此位置1;NT5系統可能工作不同。

位9 IMAGE_FILE_DEBUG_STRIPPED(調試信息被剝離文件) 表示如果文件中沒有調試信息,此位置1。此位可執行文件不用。P: (PE文件不是可以包含調試信息?)

按照其它信息([6])(這里指的是參考書目中的第[6]種----譯者注),此位被稱作“恒定”,并且當一個映象文件只有在被裝入優先的裝入地址才能運行(亦即:此文件不可重定位)時,此位置1。

位10 IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP(移動介質文件從交換文件運行) 表示如果一個應用程序不可以從可移動的介質,如軟盤或CD-ROM上運行時,此位置1。在這種情況下,建議操作系統將文件復制到交換文件并從那里執行。P: 不是很懂這里的意思,'軟盤或CD-ROM上運行時,此位置1。'

位11 IMAGE_FILE_NET_RUN_FROM_SWAP(網絡文件從交換文件運行) 表示如果一個應用程序不可以從網絡上運行時,此位置1。在這種情況下,建議操作系統將文件復制到交換文件并從那里執行。

位12 IMAGE_FILE_SYSTEM(系統文件) 表示如果文件是一個象驅動程序那樣的系統文件,此位置1。此位可執行文件不用;我所見過的所有NT系統的驅動程序也不用。

位13 IMAGE_FILE_DLL(DLL文件) 表示如果文件是一個DLL文件時,此位置1。

位14 IMAGE_FILE_UP_SYSTEM_ONLY(僅但處理器系統的文件) 表示如果文件不設計運行在多處理器系統上(也就是說,因為此文件嚴格地依賴單一處理器的一些方式工作,所以它會發生沖突)時,此位置1。

#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES???? 16

typedef struct _IMAGE_OPTIONAL_HEADER
{?
???????? //
? ??? ?? // Standard fields.
? ???? ? //
? ????? ?WORD?? Magic;???????????????????
// 總是 0B 01??P: 可選頭的標志?意義是?
???????? BYTE? ? MajorLinkerVersion;?? // 0 鏈接器的主版本號? // P:不同的鏈接器設置不同,因此不可靠?
???????? BYTE? ? MinorLinkerVersion;?? // 0 鏈接器的小版本號
???????? DWORD? SizeOfCode;?????????? // 0??????????????????????? // 可執行的代碼的大小?
???????? P: 這里的可執行代碼是指整個PE文件的可執行代碼段?

???????? DWORD? SizeOfInitializedData;???? // 0????????????????? // 已初始化數據的大小 ,數據段
???????? DWORD? SizeOfUninitializedData;? // 0????????????????? // 未初始化數據的大小, BSS段?
???????? P: 已初始化的數據跟未初始化的數據有什么區別?它們都在數據段?

???????? DWORD? AddressOfEntryPoint;???? //??????????????????? //? 代碼的入口點地址(是一個偏移量,RVA), 如 LibMain, WinMain....
???????? DWORD? BaseOfCode;? // 0?????????????????????????????? //? 可執行代碼的偏移量, 代碼基址?
???????? P: 不是很懂這里的意思,跟 AddressOfEntryPoint 的區別是?

???????? DWORD? BaseOfData;? // 0?????????????????????????????? //? 已初始化數據偏稱量,數據基址? P: 同問
???????
???????? //
? ?????? // NT additional fields.
? ?????? //
? ?????? DWORD? ImageBase;????????? //載入程序的RVA地址,LOADER可以改變 00 00 40 00 == 0x400000
? ?????? DWORD? SectionAlignment; //段加載后在內存的對齊方式 00 10 00 00
? ?????? DWORD? FileAlignment;????? //段在文件中的對齊方式 00 20 00 00
? ????? ?WORD? ? MajorOperatingSystemVersion;? // 0
? ????? ?WORD? ? MinorOperatingSystemVersion;? // 0
? ????? ?WORD? ? MajorImageVersion;??????????????? //? 0
??????? ?WORD? ? MinorImageVersion;??????????????? //? 0
? ????? ?WORD? ? MajorSubsystemVersion; //子系統版本號如果不是4.0? 對話框不能顯示3D風格 04 00
? ????? ?WORD? ? MinorSubsystemVersion; // 0
? ????? ?DWORD? Win32VersionValue;?????? // 0
??????? ?DWORD? SizeOfImage;?????????????? // 映射到內存的代碼長度
??????? ?DWORD? SizeOfHeaders; //所有文件頭長度之和 00 04 00 00???? (對齊后的, 包所在節?)
? ????? ?DWORD? CheckSum;????? // 校驗和,用 0?
??????? ?WORD? ? Subsystem;???? // 子系統 02 00 或03 00 ?
? ????? ?WORD? ? DllCharacteristics;???? // 00
? ????? ?DWORD? SizeOfStackReserve;? // 00
??????? ?DWORD? SizeOfStackCommit;
? ????? ?DWORD? SizeOfHeapReserve;
? ????? ?DWORD? SizeOfHeapCommit;
? ????? ?DWORD? LoaderFlags;???????????? // 00
??????? ?DWORD? NumberOfRvaAndSizes;?
??????
????? ???IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
???????? // 16個結構,第二個結構(導入表)?
???? } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美国产毛片在线| 亚洲午夜免费视频| 一本色道久久加勒比88综合| 国产在线精品一区二区中文| 国产一区二区黄| 国精品一区二区三区| 国产午夜精品久久久久久免费视| 国产视频久久| 1024欧美极品| 亚洲精品一区在线观看| 亚洲一区免费视频| 久久综合一区二区| 亚洲精品一区二区三区蜜桃久| 亚洲乱码久久| 欧美亚洲一区二区在线观看| 久久婷婷综合激情| 欧美日韩一区在线| 国产亚洲精品福利| 亚洲片区在线| 西西人体一区二区| 蜜臀久久99精品久久久久久9 | 国产精品一区二区久久久| 国产一区二区在线观看免费播放| 亚洲国产精品成人精品| 亚洲午夜精品一区二区| 久久久欧美精品| 亚洲精品一区二区网址| 欧美一区二区女人| 欧美大尺度在线观看| 国产精品理论片在线观看| 悠悠资源网亚洲青| 亚洲影院一区| 亚洲人成在线播放| 亚洲一区三区视频在线观看| 麻豆av一区二区三区久久| 国产精品日韩精品欧美在线| 亚洲精品中文字幕有码专区| 欧美资源在线| 一区二区高清| 欧美日韩精品免费在线观看视频| 狠狠88综合久久久久综合网| 亚洲欧美激情一区| 亚洲黄网站在线观看| 久久久久久久久一区二区| 国产乱理伦片在线观看夜一区 | 在线中文字幕不卡| 久久综合给合久久狠狠色| 亚洲欧美视频| 国产精品久久久久久久久免费桃花| 亚洲国产美女精品久久久久∴| 久久精品国产99国产精品| 一区二区三区四区精品| 亚洲精品免费网站| 久久亚洲午夜电影| 在线成人小视频| 久久av一区二区三区亚洲| 一区二区欧美在线| 欧美色中文字幕| 亚洲一区国产视频| 亚洲免费激情| 欧美日韩国产一中文字不卡| 亚洲伦理久久| 99这里只有久久精品视频| 欧美日本簧片| 中文久久乱码一区二区| 亚洲精品久久久久久下一站| 欧美大色视频| 亚洲精选一区| 一区二区精品国产| 国产精品拍天天在线| 亚洲欧美日韩综合一区| 一级日韩一区在线观看| 欧美色精品在线视频| 亚洲午夜视频在线观看| 亚洲网址在线| 国产日韩精品视频一区| 久久久噜噜噜久久中文字幕色伊伊| 午夜一区二区三区不卡视频| 国产一区二区三区直播精品电影 | 久久久人成影片一区二区三区| 国产欧美日本| 欧美成人精品一区二区三区| 麻豆av一区二区三区| 99视频超级精品| 亚洲一区二区三区免费在线观看| 国产性天天综合网| 欧美成人a视频| 欧美日本高清一区| 亚洲欧美在线一区| 久久精品欧美日韩| 在线视频精品| 久久国产99| 一本色道久久精品| 欧美一级网站| 一本色道久久综合亚洲精品婷婷| 亚洲欧美国产一区二区三区| 亚洲第一区色| 亚洲视频第一页| 亚洲激精日韩激精欧美精品| 亚洲色诱最新| 91久久精品国产91性色| 一区电影在线观看| 1769国内精品视频在线播放| 亚洲视频自拍偷拍| 亚洲欧洲日本mm| 性欧美videos另类喷潮| 亚洲免费观看高清完整版在线观看熊 | 亚洲第一福利社区| 亚洲美女毛片| 有码中文亚洲精品| 亚洲欧美日韩中文播放| 久久国产福利| 久久午夜视频| 销魂美女一区二区三区视频在线| 久久亚洲一区二区三区四区| 午夜精品福利一区二区三区av| 久久国产精品色婷婷| 亚洲视频 欧洲视频| 久久夜色精品国产| 久久久久久久欧美精品| 国产欧美日韩一区二区三区在线| 亚洲人成小说网站色在线 | 一区二区三区视频在线看| 亚洲精选在线| 久久久精品免费视频| 性欧美超级视频| 欧美丝袜一区二区| 99视频精品免费观看| 日韩亚洲在线| 欧美精品在线播放| 亚洲国产成人91精品| 在线观看欧美成人| 久久精品电影| 可以看av的网站久久看| 国产自产精品| 久久国产精品一区二区三区| 久久国产精品久久国产精品| 国产精品视频yy9099| 亚洲视频一二区| 欧美一区二区三区免费观看视频| 国产精品久久久久77777| 一本色道久久综合精品竹菊 | 久久婷婷亚洲| 免费观看在线综合色| 在线免费观看成人网| 欧美波霸影院| 亚洲免费久久| 欧美在线日韩| 亚洲国产精品久久久久久女王| 久久综合久久综合九色| 亚洲大胆人体视频| 亚洲美女啪啪| 国产精品久久毛片a| 亚洲网站在线| 六月天综合网| 在线视频欧美精品| 国产精品日韩一区二区| 欧美一区免费视频| 麻豆国产精品va在线观看不卡| 亚洲第一网站| 欧美日韩一区二区三区在线看| 一区二区日韩| 久久在线播放| 亚洲无限av看| 国产亚洲欧美在线| 免费亚洲电影在线| 国产精品99久久久久久有的能看| 久久福利一区| 91久久精品国产91久久性色tv| 欧美视频一区二区在线观看 | 欧美一级在线播放| 狠狠综合久久av一区二区老牛| 久久蜜桃av一区精品变态类天堂| 亚洲精品国产系列| 国产精品高潮呻吟久久av无限| 午夜精品福利一区二区三区av| 欧美阿v一级看视频| 亚洲一区二区三区在线| 一区二区在线视频观看| 欧美私人啪啪vps| 久久激情综合网| 日韩午夜精品视频| 久久综合给合久久狠狠色 | 欧美日韩在线观看一区二区| 亚洲综合欧美| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美一区二区三区四区在线| 99pao成人国产永久免费视频| 国产一区二区看久久| 欧美日韩成人一区二区| 久久精品二区| 亚洲激情网站| 国产日韩综合一区二区性色av| 欧美区二区三区| 久久久久国产一区二区三区四区 | 欧美大片在线看免费观看| 亚洲专区一区二区三区| 亚洲日本电影| 欧美激情综合色| 久久久久久久91|