以下參考自水滴教程及
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下,我們對乙個...