1. 程式人生 > >PE檔案格式學習(七):安全表

PE檔案格式學習(七):安全表

1.介紹

如果一個應用程式有數字簽名,那麼它的安全表就不會為空。它位於異常表的後面。

2.安全表解析

通過資料目錄表裡提供的RVA,我們轉換成offset,找到了安全表的位置,如下:

安全表的結構體如下:

typedef struct _WIN_CERTIFICATE
{
    DWORD dwLength;
    WORD wRevision;
    WORD wCertificateType;
    BYTE bCertificate[ANYSIZE];
}

dwLength:此結構體的長度,對應上圖中的0x00003390

wRevision:在bCertificate裡面保護的證書的版本號,版本號有兩種,如下表,一般為0x0200,對應上圖中的0x0200

資訊 Win32 SDK中的巨集定義名
0x0100 Win_Certificate的老版本 WIN_CERT_REVISION_1_0
0x0200 Win_Certificate的當前版本 WIN_CERT_REVISION_2_0

wCertificateType:證書型別,有如下表格中的型別,對應上圖中的0x0002

資訊 Win32 SDK中的巨集定義名
0x0001 X.509證書 WIN_CERT_TYPE_X509
0x0002 包含PKCS#7的SignedData的結構 WIN_CERT_TYPE_PKCS_SIGNED_DATA
0x0003 保留 WIN_CERT_TYPE_RESERVED_1
0x0004 終端伺服器協議堆疊證書籤名 WIN_CERT_TYPE_TS_STACK_SIGNED

bCertificate:包含一個或多個證書,一般來說這個證書的內容一直到安全表的末尾。