Windows核心 系統描述符表與SSDT

2021-10-01 08:08:05 字數 1568 閱讀 9860

以下參考自水滴教程及

system services descriptor table

system services descriptor table,即系統服務描述符表,核心中實際存在兩個系統服務描述符表,乙個時keservicedescriptortable(由ntoskrnl.exe匯出),乙個是keserviedescriptortableshadow(沒有匯出)。

使用windbg檢視上述兩個結構

ssdt

typedef

struct _servicedescriptorentry ssdt,

*pssdt;

ssdtshadow

typedef

struct _service_descriptor_table

system_descriptor_table,

*psystem_descriptor_table,

**ppsystem_descriptor_table;

可以看出ssdtshadow不僅指出ntoskrnl.exe,也指除了win32k.sys;

使用windbg檢視ssdtshadow如下,可以看到ssdtshadow有4項,但最後2項均為0,只有前兩項,分別指向ntoskrnl.exe的systemservicetable和win32k.sys的systemservicetable

systemservicetable,即系統服務表,在xp系統下有兩個 systemservicetable,分別是ntoskrl.exe(常用的系統服務)和win32k.sys(與圖形顯示及使用者介面相關的系統服務)的 systemservicetable, systemservicetable結構如下:

typedef

struct _ksystem_service_table

ksystem_service_table,

*pksystem_service_table;

servicetablebase:指向系統服務函式位址表,該錶儲存了ntoskrl.exe與win32k.sys函式

servicecountertablebase:計數

numberofservice:指出 servicetablebase中函式的個數,利用系統呼叫號呼叫函式時,需要將系統呼叫號後12位代表的index與該項作比較,超過則越界

paramtablebase:每一項乙個位元組,指出servicetablebase中對應的函式的引數個數,以b為單位

中斷描述符表

中斷描述表是乙個系統表,它與每乙個中斷或異常向量相聯絡,每乙個向量在表中有相應的中斷或異常處理程式的入口位址。核心在允許中斷發生前,必須適當地初始化idt。在第二章中,我們介紹了gdt和ldt,idt的格式與這兩種表的格式非常相似,表中的每一項對應乙個中斷或異常微量,每個向量由8個位元組組成。因此,...

全域性描述符表

局描述符表 gdt global descriptor table 在protected mode下,乙個重要的必不可少的資料結構就是gdt global descriptor table 中文名全域性描述符表 外文名global descriptor table 類 型 資料結構 領 域 科學技術...

全域性描述符表

全域性描述符表 gdt global descriptor table 在protected mode下,乙個重要的必不可少的資料結構就是gdt global descriptor table 為什麼要有gdt?我們首先考慮一下在real mode下的程式設計模型 在real mode下,我們對乙個...