程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 令Win32應用程序跳入系統零層

令Win32應用程序跳入系統零層

編輯:vc教程

眾 所 周 知, 在Windows95/98 的Win32 on Intel x86 體 系 中 利 用 了 處 理 器 的 三 環 保 護 模 型 中 的 零 環(Ring0, 最 高 權 限 級 別) 和 三 環(Ring3, 最 低 權 限 級 別)。 一 般 應 用 程 序 都 運 行 在Ring3 下, 受 到 嚴 格 的" 保 護", 只 能 規 矩 地 使 用Win32API。 如 果 我 們 想 進 行 一 些 系 統 級 的 操 作, 例 如 在 嵌 入 匯 編 中 使 用 諸 如"Mov EAX,CR0", 或 像 在DOS 下 那 樣 調 用 一 些 必 不 可 少 的 系 統 服 務( 如BIOS,DPMI 服 務) 而 用"Int xx", 都 會 導 致" 非 法 操 作"。 但 這 種 能 力 有 時 是 必 不 可 少 的, 一 到 這 種 時 候Microsoft 就 " 建 議 編 寫 一 個VxD"。VxD 大 家 早 有 所 聞 了, 在VxD 裡, 不 但 可 以 執 行CPU 的 所 有 指 令, 而 且 可 以 調 用VMM( 虛 擬 機 管 理 器) 和 其 他VxD 提 供 的 上 千 個 系 統 級 服 務。 獲 得 這 一 能 力 的 最 本 質 原 因 在 於 它 運 行 在Ring0, 與 系 統 內 核 同 一 級 別。 但 是 它 體 系 的 復 雜 性、 開 發 工 具 的 不 易 獲 得、 幫 助 文 檔 的 不 完 備, 使Microsoft 排 除 了 一 大 批 程 序 員 和 競 爭 對 手。 而 將 在Windows2000(Windows98 也 開 始 支 持) 中 取 代VxD 的WDM 對Win95 程 序 員 也 是 個 噩 夢, 它 需 要 了 解Windows NT 核 心 驅 動 模 型。

----有 沒 有 簡 單 一 些 的 辦 法 呢 ? 我 們 可 以 令 一 個 普 通Win32 應 用 程 序 運 行 在Ring0 下, 從 而 獲 得VxD 的 能 力 嗎 ? 答 案 是 肯 定 的。 下 面 我 們 就 簡 述 一 下 這 一 技 巧, 有 關Intel x86 保 護 模 式 的 基 礎 知 識 請 大 家 看 有 關 書 籍。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved