Win32子系统(csrss.exe,win32k.sys相关知识总结)
Win32子系統
Win32子系統是Windows操作系統必須的一部分,伴隨這Windows啟動時運行,它包含:
Windows的啟動過程
windows操作系統在啟動時會進行一系列的初始化操作:
smss.exe運行后,會加載和初始化win32k.sys,然后緊接著調用win32k.sys的DriverEntry,然后啟動Win32子系統進程csrss.exe和登錄進程WinLogon.exe。
csrss.exe
csrss.exe(Client/Server Runtime Server Subsystem,即客戶端/服務器運行時子系統),負責維護Windows子系統的日常事務,為子系統的各個進程提供服務。例如維護進程和線程、管理控制臺窗口、管理DOS程序虛擬機(VDM)進程等。
win32k.sys
win32k.sys是內核模塊但是不用于處理I/O請求,主要是為應用層提供服務。實現窗口管理(收集、分發消息,控制窗口顯示)和圖形設備接口(各種圖形繪制、文本輸出)。
win32k.sys主要是user32.dll和gdi32.dll的內核實現。
ntoskrnl.exe主要是kernel32.dll的內核實現。
user32.dll、gdi32.dll和kernel32.dll中的API通過ntdll.dll實現過渡,最終調用的都是win32k.sys(Shadow SSDT)和ntoskrnl.exe(SSDT)中的系統服務。
SSDT(System Service Descriptor Table,系統服務描述表),由ntoskrnl.exe導出(x64下不導出),在內核中的名稱是KeServiceDescriptorTable。在代碼中聲明一下即可使用。
extern PSYSTEM_SERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; typedef struct _SYSTEM_SERVICE_DESCRIPTOR_TABLE {PVOID ServiceTableBase; //SSDT表的基地址PVOID ServiceCounterTableBase;ULONG_PTR NumberOfServices; //SSDT表中服務函數的個數PVOID ParameterTableBase; }SYSTEM_SERVICE_DESCRIPTOR_TABLE, *PSYSTEM_SERVICE_DESCRIPTOR_TABLE;Shadow SSDT,在內核中的名稱是KeServiceDescriptorTableShadow,不過它是未導出的,不能在自己的模塊中導入和引用。
kernel32.dll
kernel32.dll包含如下的API:
- 進程/線程管理
- 文件操作(創建、打開、讀寫、搜索等)
- 內存管理(Local開頭、Global開頭、Heap開頭)
- 調試(Debug開頭)等
user32.dll
user32.dll是用戶界面相關的,包含窗口管理、消息處理、用戶輸入的API,如EndDialog()、BeginPaint()、SetWindowPos()、MessageBox()、EnumWindows()等。
gdi32.dll
gdi32.dll是GDI圖形用戶界面相關的,包含各種圖形文字繪制的API,如BltBlt()、CreateDC()、CreateCompatibleDC()、SetBitmapBits()、SetTextColor()、TextOut()等。
advapi32.dll
advapi32.dll包含如下的API:
- 數據加密(Crypt開頭)
- 用戶和賬號管理(Lsa開頭)
- 注冊表操作(Reg開頭)
- WMI(Wmi開頭)
- 終端服務(Wts開頭)等
其他用戶進程
其他環境子系統
Windows操作系統的環境子系統有三個:
總結
以上是生活随笔為你收集整理的Win32子系统(csrss.exe,win32k.sys相关知识总结)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Finance_finacial_eng
- 下一篇: java信息管理系统总结_java实现科