Windows核心原理系列01 - 基本概念

來源:互聯網
上載者:User

標籤:style   ext   com   get   使用   strong   

1.Windows API

   Windows 應用編程介面(API)是針對WIndwos作業系統使用者模式的系統編程介面,包含在WindwosSDK中。

2.關於.NET

   .NET由一個被稱為FCL的類庫和一個被稱為CLR的公用語言運行庫組成。FCL是建立在CLR之上的,而CLR是一組標準的COM伺服器,提供了記憶體回收,即時編譯類型檢驗等特性。由於CLR的這些特性,使得開發人員的生產效率得以提高。.NET架構與組建的關係如下:

                                            .NET應用程式

  使用者模式(Managed 程式碼)   ——————————

                                            類庫(FCL)

                                                                                    

                                           CLR(COM伺服器)

      使用者模式(Unmanaged 程式碼)     ——————————

                                            Windows API DLL

                                                                                  

 

     核心模式                         Windows核心

 

3.服務、函數和常式

   服務在Windows上有多種含義:

   1.Windwos API :特指Windows子系統中的API,包含在user32.dll,gdi.dll,advapi.dll,kerenalbase.dll中

   2.原生的系統服務 :工作在任何子系統之下,由操作體統提供的系統調用,包含在ntdll中,是核心的唯一進入點,      Windwos API是靠調用這些API實現的,是這些API在WIndwos子系統上的的封裝。

   3.核心支援函數 :只能在核心模式下調用的常式

   4.Window服務,由Windows服務管理員啟動的進程

   5. DLL:一組可調用的常式

 

4.進程

   進程是一個容器,包含了程式執行個體執行時包含的各種資源:

   1.私人虛擬位址空間

      可以採用共用記憶體或者ReadProcessMemory突破這一限制。

      進程使用VAD來管理虛擬位址空間,內部使用AVL樹。

   2.可執行程式以及相關的DLL

   3.已經開啟的控制代碼表:指向各種系統資源:檔案,訊號量等

   4.存取權杖:標識了與該進程關聯的使用者,安全性群組,特權,UAC虛擬化狀態,會話,有限的使用者狀態

   5.進程ID(與線程ID共用一個空間,不會重)

   6.至少一個可執行檔線程

   7.一個父進程(有可能已經不存在,這時在一般工具中可以顯示為無父進程)

     PS:判斷父進程的有效性可以用當前進程的啟動時間和父進程ID對應進程的啟動時間做比較。

 

5.線程

   線程是進程內部的實體,也是Windows執行此進程的調度實體。線程包括以下一些組件:

   1.一組處理器狀態和CPU寄存器(稱為線程上下文,在切換線程時需要切換這些資料),可以由GetThreadContext獲得。

   2.兩個棧,一個用於核心模式執行,另外一個用於使用者模式執行。由於核心模式和使用者模式是分離的,核心模式雖然可以訪問使用者模式的記憶體,但是為了充分隔離,需要把棧分開。另外一個分開的理由是以前系統調用是依賴int 2e非強制中斷的方式進行的,不是直接call過去的。現在的實現方式是sysenter,也會跳轉的一個指定地址,並把當前的使用者態棧指標用寄存器ax傳遞過去。

  3.TLS,線程局部存貯,由一個進程內的TLS表和每個線程各自維護的一個TLS表構成,每個表項目維護一個指標。線程中使用索引訪問這個表項目,進程的TLS表中儲存了索引的佔用情況,每個線程中儲存了該線程中特定索引對應的值。實現了同一個索引在不同線程中可以擷取到不同的值。

 4.線程ID

 5.令牌(可選),多線程伺服器用於模仿客戶的安全環境,或者類比SYSTEM許可權...

 

6.纖程

   一種使用者態的線程,為了避免核心模式線程切換帶來的開銷,採用使用者態模式調度(UMS),纖程不會自動放棄執行,直到調用SwitchToFiber或者退出。

 

7.虛擬記憶體

   Windows採用線性地址的虛擬記憶體系統,使得每個進程擁有一個很大的虛擬記憶體空間。採用分頁機制實現。並利用分頁檔或檔案對應的方式將不常用的資料寫入硬碟以騰出更多的實體記憶體。

   WIndwos採用3GB模式或者地址視窗擴充(AWE)擴充了32位程式的地址空間。AWE允許使用者將不同的實體記憶體映射到自己2G(3G)的使用者空間中。

 

8.核心模式和使用者模式

   為了保護作業系統本身,作業系統利用處理器的特權級的機制將系統分為使用者模式(Ring3)和核心模式(Ring0),Ring0下允許執行特權指令,Ring3到Ring0需要特定的方式進入,並且收到保護。核心模式下所有代碼共用一個虛擬位址空間,驅動運行在核心模式下,因此驅動的不穩定會影響到系統的穩定性。在64位的Windows中要求驅動程式強制籤名。

 

9.終端服務及多個會話

   終端服務是伺服器,用於接受多個會話請求,實現本地或者遠端會話。遠端工作階段可以使用遠端桌面建立。

 

10.對象和控制代碼

   藉助於一個對象管理器的核心組件,Windows對對象進行管理,並使用控制代碼對其進行引用。對象管理器提供以下幾種服務:

  1.為系統資源提供可讀的名稱

      2.在進程之間共用資源和資料

      3.保護資源,避免未授權的訪問

      4.引用跟蹤,不再使用時自動釋放對象。

 

11.安全性

   Windows的核心安全功能包括:

     1.針對可共用對象的自主包含和強制完整性保護

     2.安全審計(針對主體或者發起他們的使用者以及發起動作的記錄)

     3.登入時的認證

     4.禁止使用者採用訪問未初始化資源的方法訪問其他使用者已經釋放的資料

   Windows支援3種對象存取控制形式:

     1.自主存取控制:由對象的所有者授權或者拒絕他人訪問這些對象,當使用者登入是會獲得一組安全憑證(令牌),當他試圖訪問對象時,系統會用他的安全憑證(令牌)與對象的存取控制清單(ACL)進行比較。

     2.特權存取控制:即使所有者聯絡不到,也可以訪問被保護的對象。(管理員)

     3.強制完整性保護:用於同一個賬戶內部的對象訪問。UAC

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.