Windows系統架構圖

(1)Native API
Native API函數一般都是在Win32 API上加前Nt如Win32 API下的CreateFile對應的Native API的函數爲NtCreateFile。
所有的Native API都在Ntdll.dll中實現,而Win32子系統的三個核心dll文件都依賴於Ntdll.dll。
Win32 API從Windows NT到Windows 2000,再到Windows XP基本保持不變,變化的是隻是Native API。
(2)系統調用
Native API從用戶模式穿越進入內核模式,調用系統服務。從用戶模式進入到內核模式,是通過軟件中斷進入的。
軟中斷會將Native API中的參數和系統服務號的參數一同傳進內核模式,不同的Native API會對應不同的系統服務號。在系統服務組件中,有一個系統服務描述符表(System Service Descriptor Table)。根據這個系統服務號爲索引,從表中可以查出對應系統服務函數的函數地址。
某些黑客軟件或計算機病毒,往往更改系統描述符表,將標準的系統服務函數的地址,替換成有惡意代碼的地址。
在系統調用中,會檢驗參數的合法性,這也是操作系統最後一道屏障。以後的任何操作,操作系統都不會做任何檢查,任何錯誤都會導致系統的崩潰。
(3)硬件抽象層
Windows的設計者用硬件抽象層隔絕了操作系統與硬件的直接連接,而在中間插入了硬件抽象層。它使OS和具體硬件進行通信,其中硬件抽象層對各種硬件操作進行了抽象。
各個平臺的硬件操作不盡相同,不同平臺提供不同的硬件抽象層,並對上層提供統一的硬件操作接口。對硬件操作的不光是操作系統的內核,還有驅動程序。
在驅動程序中,應儘量避免使用針對平臺的彙編指令,而應該使用與平臺無關的HAL函數或宏。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章