32位和64位pe頭結構體有點差異,但是差異不是很大。
typedef struct _image_nt_headers image_nt_headers32, *pimage_nt_headers32;
typedef struct _image_nt_headers64 image_nt_headers64, *pimage_nt_headers64;
typedef struct _image_optional_header image_optional_header32, *pimage_optional_header32;
成員
大小(十進位制)
說明magic
2位元組pe32:10b、pe32+(64):20b,可以用來確認是32位還是64位程式
majorlinkerversion
1位元組鏈結器版本號
minorlinkerversion
1位元組鏈結器版本號
sizeofcode
4位元組所有**節的總和,檔案對齊後的大小,由編譯器填寫
sizeofinitializeddata
4位元組包含所有已經初始化資料的節的總大小,檔案對齊後的大小,由編譯器填寫
sizeofuninitializeddata
4位元組包含未初始化資料的節的總大小,檔案對齊後的大小,由編譯器填寫
addressofentrypoint
4位元組程式入口,當前pe檔案從哪個位置開始執行,配合imagebase(記憶體映象基址)來看
baseofcode
4位元組**開始的基址,由編譯器填寫
baseofdata
4位元組資料開始的基址,由編譯器填寫
imagebase
4位元組記憶體映象基址,當前pe檔案執行時從哪個記憶體位置展開
sectionalignment
4位元組記憶體對齊
filealignment
4位元組檔案對齊
majoroperatingsystemversion
2位元組標識作業系統版本號,主版本號
minoroperatingsystemversion
2位元組標識作業系統版本號,次版本號
majorimageversion
2位元組pe檔案自身的版本號
minorimageversion
2位元組pe檔案自身的版本號
majorsubsystemversion
2位元組執行所需子系統版本號
minorsubsystemversion
2位元組執行所需子系統版本號
win32versionvalue
4位元組子系統版本的值,必須為0
sizeofimage
4位元組記憶體中整個pe檔案的對映尺寸,可以比實際的值大,必須是sectionalignment(記憶體對齊)的整數倍
sizeofheaders
4位元組所有頭+節表按照檔案對齊後的大小,否則載入會出錯
checksum
4位元組校驗和,一些系統檔案由要求用來判斷檔案是否被修改,不是所有程式都有。
整個pe檔案以2個位元組相加,加完以後如果溢位不管,得到的結果+檔案長度=校驗和
subsystem
2位元組子系統,驅動程式:1、圖形介面:2、控制台或者dll:3
dllcharacteristics
2位元組檔案特徵,不是針對dll檔案的
sizeofstackreserve
4位元組初始化時保留的棧大小
sizeofstackcommit
4位元組初始化時實際提交的棧的大小(初始化時真正使用的棧的大小)
sizeofheapreserve
4位元組初始化時保留的堆大小
sizeofheapcommit
4位元組初始化時實踐提交的堆的大小(初始化時真正使用的堆的大小)
loaderflags
4位元組除錯相關
numberofrvaandsizes
4位元組目錄專案數量,當前程式會用到各種表,如匯入表匯出表等,描述有多少個這種表
datadirector
不確定結構體陣列,numberofrvaandsizes的長度是多少它的長度就是多少
注意:
addressofentrypoint(程式入口)是相對的位址,也就是imagebase(記憶體映象基址) + addressofentrypoint(程式入口)。
資料位常量符號
為1時的含義
0保留,必須為0
1保留,必須為0
2保留,必須為0
3保留,必須為0
6image_dllcharacteristics_dynamic_base
dll可以在載入時被重定位
7image_dllcharacteristics_force_integrity
強制**實施完整性驗證
8image_dllcharacteristics_nx_compat
該映像相容dep(intel的硬體層面修復漏洞的東西)
9image_dllcharacteristics_no_isolation
可以隔離,但並不隔離此映像
10image_dllcharacteristics_no_seh
映像不適用seh
11image_dllcharacteristics_no_bind
不繫結映像
12保留,必須為0
13image_dllcharacteristics_wdm_driver
該映像為乙個wdm driver
14保留,必須為0
15image_dllcharacteristics_terminal_server_awar
可用於終端伺服器
2021 01 12 標準PE頭屬性說明
typedef struct image nt headers image nt headers32,pimage nt headers32 成員 大小 十進位制 signature 4位元組image file header 20位元組 image optional header32 224位元組...
PE頭結構學習 PE頭移位
剛開始學pe結構的時候,是為了搞 xx的,那時瑞星和江民還有希望,那時卡飯論壇還常駐各個防毒軟體廠商的工程師,想想還有些懷念,初中基本啥也不懂,就上論壇看別人是怎麼搞的,有一次看到乙個免殺技術叫pe頭移位,後來這個技術也用了蠻久。剛好現在上了作業系統這門課,作業就是要研究下pe結構,所以就以pe頭移...
PE檔案結構(一) MS DOS頭 ,PE頭
ms dos頭 標準pe頭 擴充套件pe頭 資料目錄 節表各個欄位的含義 第乙個字段 mz標誌位 e magic 是乙個常量,一般都是0x4d5a 最後乙個字段 pe頭偏移 e ifanew 指向新的pe頭,偏移量為0x0138 位於0x0138 typedef struct image nt he...