PE文件結構

PE文件結構
  
   a, DOS Header(TImageDosHeader)  其中
 -- _lfanew 指向 【c】
 -- e_magic 爲 MZ
   b, Dos stub  用於不支持PE的操作系統,顯示錯誤提示如“This program requires Windows”,不定長
   c, PE Header(TImageNtHeaders)
       -- PE 標誌 (TImageNtHeaders.Signature) 必須等於 IMAGE_NT_SIGNATURE,即 PE/0/0
 -- PE 基本信息 (TImageFileHeader)
    其中 NumberOfSections 決定了【d】中元素的數目
                TimeDateStamp 爲文件創建的時間
 -- PE 可選頭 (TImageOptionalHeader)
           其中 SizeOfHeaders 是 【a】+【b】+【c】+【d】的總空間
                DataDirectory 是IMAGE_DATA_DIRECTORY結構的數組,每個結構給出了一個重要數據結    構的 

  RVA,如引入地址表、導出地址表等。例如 
   TImageImportDescriptor = packed record
       OriginalFirstThunk: DWord;
       TimeDateStamp  : DWord;
       ForwarderChain : DWord;
       DLLName        : DWord;
       FirstThunk     : DWord;
   end;                      

  end;
   d, 節表 (array of TImageSectionHeader)
 --
   e ....
      各個節
  
   =========== 關於節===================
   ★  PE文件的真正內容劃分成塊,稱之爲sections(節)。每節是一塊擁有共同屬性的數據,比如代碼/數據、讀/寫、導入/導出等。我們

可以把PE文件想像成一邏輯磁盤,PE header 是磁盤的boot扇區,而sections就是各種文件,每種文件自然就有不同屬性,如只讀、系統、隱

藏、文檔等。節的劃分是基於各組數據的共同屬性,而不是邏輯概念。重要的不是數據/代碼是如何使用的,如果PE文件中的數據/代碼擁有相

同屬性,它們就能被歸入同一節中。
   =========== 關於節===================

 

參考書目:
1, Delphi下深入Windows核心編程
2, 編程高手箴言  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章