iT邦幫忙

1

231解剖室:PE File Format - Part 0 辨識

  • 分享至 

  • xImage
  •  

PE檔是什麼

PE(Portable Executable)是Windows的執行檔、物件檔格式,是根據COFF檔案格式修改而成的。Windows的OS loader可以根據檔案內部的資訊把資料丟進記憶體裡面,再交由CPU執行。

常見的PE檔案格式有:

  • *.exe - 執行檔
  • *.dll - 動態連結函式庫
  • *.cpl - 控制台相關檔案

PE檔案架構

PE檔案可大致分為五個部分,前兩個(DOS Header / DOS Stub)是用於向下相容
後三個(NT Headers / Section Table / Sections)才是PE的本體

https://ithelp.ithome.com.tw/upload/images/20230120/20156936Wi8wIAZdpu.jpg

看圖片可能沒什麼感覺,不如實際拆一個檔案來看看

拆檔案的工具

PE Bear是一個常用來分析PE的軟體,只要把執行檔拖進去就可以得到分析結果了
這邊以notepad(C:\Windows\System32\notepad.exe)做示範,操作方式如下

https://ithelp.ithome.com.tw/upload/images/20230120/2015693632y01fVXkL.png

右側顯示的就是PE的file structure

https://ithelp.ithome.com.tw/upload/images/20230120/20156936ZgEhAo5hV3.png

DOS Header

  • 每個PE檔案的開頭
  • 長度 64 bytes

DOS Stub

  • DOS Header後面的一段MS-DOS執行檔
  • 長度 64 bytes

NT Headers

  • Offset可以透過DOS Header提供的資訊(e_lfanew)找到
  • 包含三個重要資訊
    • PE signature (4 bytes) : 用來辨識此檔案是否為PE檔
    • File Header : 繼承自COFF file header,用來放PE檔的基本訊息
    • Optional Header : 只有映像檔才有,用來放給OS loader看的資訊

Section Table

  • Section Headers的資訊欄
  • 可以透過Section Header得知Section放了什麼類型的內容

Sections

  • 檔案實際資訊存放的位置
  • 大致上包含
    • 程式碼
    • 唯讀資訊
    • 圖片資源

總結

我們初步了解了PE檔案的架構,並且介紹了用於分析檔案的PE Bear
後續的貼文將會深入了解PE的各個部位,從頭到腳拆透透🔪🔪


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言