程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> PE文件學習筆記(1)

PE文件學習筆記(1)

編輯:ASP技巧

Portable Executable 文件格式= PE;

1.可移植性(portable )是因
  為任何機器(Intel 386 、MipS 、Alpha 、Power PC 等等)上的 NT 都可以使用相同的可
  執行檔格式。當然啦,CPU 指令的二進制編碼是完全不同的,你不可能把一個在 MIPS 機
  器編譯好的 PE 文件拿到 Intel 系統來跑。重要的是,程序加載器以及程序開發工具不需
  要針對每一個新的操作系統重寫。

2. 磁盤中的可執行文件格式非常類似內存中的模塊。因此 Windows 加載器無須非常辛苦地工作就能根據磁盤文件產生一個
  行程。加載器使用 Win32 內存映像檔,把適當的 PE 文件加載程序的地址空間中。
  以建築學的方式來說,PE 檔就像是一棟預先制造組合配件的房屋:配件不多,每一個配
  件可以啪答一聲就定位 -- 只要經過一些些努力。並且,就像組合屋很容易接上電路和水
  管一樣,PE 檔也很容易與外界產生關系
3.win32用來放置模塊的碼、資料、資源、import tables 、export tables 、以
  及其它東西的內存,是位於一塊連續的線性地址空間中。所有你需要知道的,就是這
  個地址在哪裡。然後你就可以輕輕松松根據儲存在這個 "image"中的指針,找
  到模塊的每一樣資料。
4.相對虛擬地址(Relative Virtual
   Address ,RVA )。PE 文件中的許多字段內容都是以 RVA 表示。一個 RVA 是某一資
  料項的 offset (偏移)值 -- 從文件被映像進來的起點算起。

  由此想到從前看過的許多相關PE文件解析數據提取資料,總是對其中的減來減去莫名其妙,

  如今豁然開朗

5.PE文件格式如下,和以往看過資料相比,這個是倒著的,只不過都是後人整理的習慣都,將

結構倒置,不過文件的頭還確實放在了下面然後向上線性排列

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved