PE檔案格式學習(七):安全表
阿新 • • 發佈:2018-11-11
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:包含一個或多個證書,一般來說這個證書的內容一直到安全表的末尾。