文件服务器映驱动,映射驱动程序文件 - Windows drivers | Microsoft Docs
映射驅(qū)動程序文件
05/13/2020
本文內(nèi)容
替換驅(qū)動程序文件可能會很困難。 通常,必須啟動到 Microsoft Windows 安全生成,替換驅(qū)動程序二進制文件,然后重新啟動。
使用映射文件存在替代方法。 您可以使用此映射方法替換任何內(nèi)核模式驅(qū)動程序 (包括顯示驅(qū)動程序) 、任何 Windows 子系統(tǒng)驅(qū)動程序或任何其他內(nèi)核模式模塊。 為簡單起見,在本主題中,這些文件稱為 " 驅(qū)動程序 ",即使您可以對任何內(nèi)核模式模塊使用此方法也是如此。
無論何時將 WinDbg 或 KD 附加為內(nèi)核調(diào)試器,都可以使用此方法。 你還可以在啟動驅(qū)動程序上使用此方法,但這會比較困難。 有關(guān)如何將此方法用于啟動驅(qū)動程序的詳細信息,請參閱替換啟動驅(qū)動程序。
若要使用驅(qū)動程序替換圖來替換驅(qū)動程序文件,請執(zhí)行以下操作:
創(chuàng)建 驅(qū)動程序替換映射文件。 此文件是一個文本文件,其中列出了目標(biāo)計算機上的驅(qū)動程序及其在主計算機上的替換驅(qū)動程序。 可以替換任意數(shù)量的驅(qū)動程序。 例如,你可能會在 \ 包含以下信息的主計算機的 d: Map Files 目錄中創(chuàng)建名為 Mymap.ini 的文件 _ 。
map
\Systemroot\system32\drivers\videoprt.sys
\\myserver\myshare\new_drivers\videoprt.sys
有關(guān)此文件的語法的詳細信息,請參閱驅(qū)動程序替換映射文件格式。
設(shè)置與目標(biāo)計算機的內(nèi)核調(diào)試連接,并在主計算機上 (KD 或 WinDbg) 啟動內(nèi)核調(diào)試器。 (不必實際中斷目標(biāo)計算機。 )
通過執(zhí)行以下操作之一加載驅(qū)動程序替換映射文件:
_ _ 啟動內(nèi)核調(diào)試器之前,請設(shè)置 NT KD _ FILES環(huán)境變量。
D:\Debugging Tools for Windows> set _NT_KD_FILES=d:\Map_Files\mymap.ini
D:\Debugging Tools for Windows> kd
D:\Debugging Tools for Windows> kd
kd> .kdfiles d:\Map_Files\mymap.ini
KD file associations loaded from 'd:\Map_Files\mymap.ini'
你還可以使用 kdfiles 命令來顯示當(dāng)前的驅(qū)動程序替換映射文件或刪除驅(qū)動程序替換圖。 如果不使用此命令,映射將一直存在,直到退出調(diào)試器。
完成此過程之后,驅(qū)動程序替換映射會生效。
只要目標(biāo)計算機要加載驅(qū)動程序,它就會查詢內(nèi)核調(diào)試器,以確定是否已映射此驅(qū)動程序。 如果已映射該驅(qū)動程序,則會通過內(nèi)核連接發(fā)送替換文件,并通過舊的驅(qū)動程序文件對其進行復(fù)制。 然后,將加載新的驅(qū)動程序。
驅(qū)動程序替換映射文件格式
驅(qū)動程序替換映射文件中的每個驅(qū)動程序文件替換均由三行表示。
第一行包含 "map" 一詞。
第二行指定目標(biāo)計算機上舊驅(qū)動程序的路徑和文件名。
第三行指定新驅(qū)動程序的完整路徑。 此驅(qū)動程序可以位于主計算機上,也可以位于其他某個服務(wù)器上。
您可以任意多次重復(fù)此信息模式。
路徑和文件名不區(qū)分大小寫,實際驅(qū)動程序文件名可能不同。 當(dāng)目標(biāo)計算機將要加載該驅(qū)動程序時,將在第三行中指定的文件復(fù)制到第二行中指定的文件。
Kdfiles 將嘗試將存儲在服務(wù)控制管理器 (SCM) 數(shù)據(jù)庫中的文件名匹配。 SCM 數(shù)據(jù)庫中的名稱與傳遞給 MmLoadSystemImage 的名稱相同。
在 Windows 10 和更高版本的調(diào)試工具中,驅(qū)動程序映射可用于動態(tài)匹配驅(qū)動程序名稱并確定正確的路徑。 無需指定完整路徑,并且文件擴展名是可選的。 您可以使用這些項中的任意項來匹配 NT 文件系統(tǒng)驅(qū)動程序。
ntfs
NTFS
ntfs.sys
windows \ system32 \ 驅(qū)動程序 \ntfs.sys
您可以使用這些項中的任意項來匹配 NT 內(nèi)核驅(qū)動程序。
ntoskrnl.exe
NTOSKRNL.EXE
ntoskrnl.sys
windows \ system32 \ 驅(qū)動程序 \ntoskrnl.sys
地圖文件可以包含空行,并可以包含以數(shù)字符號開頭的注釋行 (#) 。 但是,在文件中出現(xiàn) "map" 后,接下來的兩行必須是舊驅(qū)動程序和新驅(qū)動程序。 空行和注釋行不能分解三行地圖塊。
下面的示例演示了驅(qū)動程序替換映射文件。
# Use the # for comments like this one
map
\Systemroot\system32\drivers\videoprt.sys
e:\MyNewDriver\binaries\videoprt.sys
map
\Systemroot\system32\mydriver.sys
\\myserver\myshare\new_drivers\mydriver0031.sys
# This is replacing a beep driver
map
\??\c:\windows\system32\beep.sys
\\myserver\myshare\new_drivers\new_beep.sys
驅(qū)動程序替換映射文件必須是文本文件,但您可以使用任何文件名和文件擴展名 ( .ini、.txt、.map 等) 。
其他說明
出現(xiàn)驅(qū)動程序替換時,內(nèi)核調(diào)試器中會出現(xiàn)一條消息。
如果在 KD 中使用 ctrl + D () 或在 WinDbg) 中按 CTRL + ALT + d (,則會看到有關(guān)替換請求的詳細信息。 如果你不確定列出的名稱是否與 SCM 數(shù)據(jù)庫中的名稱匹配,則此信息會很有用。
可以啟用 bcdedit bootdebug 選項,以查看可用于替換內(nèi)核、hal 或啟動驅(qū)動程序的早期啟動信息。
bcdedit -bootdebug on
如果內(nèi)核調(diào)試器退出,則不會再進行驅(qū)動程序替換。 但是,已替換的任何驅(qū)動程序都不會還原為其舊的二進制文件,因為驅(qū)動程序文件實際上被覆蓋。
此驅(qū)動程序替換功能會自動繞過 Windows 文件保護 (WFP) 。
您無需重新啟動目標(biāo)計算機。 無論目標(biāo)計算機是否已重啟,都將在目標(biāo)計算機加載驅(qū)動程序時進行替換。 當(dāng)然,大多數(shù)驅(qū)動程序都是在啟動過程中加載的,因此,在此過程中,在加載映射文件后,應(yīng)該重啟目標(biāo)計算機。
如果 _ 定義了 NT _ KD _ FILES 變量,則啟動內(nèi)核調(diào)試器時,將讀取指定的驅(qū)動程序替換映射文件。 如果發(fā)出 kdfiles 命令,則會立即讀取指定的文件。 此時,調(diào)試器將驗證該文件是否具有基本的映射/行/行格式。 但在發(fā)生替換之前,不會驗證實際路徑和文件名。
讀取映射文件后,調(diào)試器將存儲其內(nèi)容。 如果在此之后更改此文件,則所做的更改不會 (,除非重新發(fā)出 kdfiles 命令) 。
總結(jié)
以上是生活随笔為你收集整理的文件服务器映驱动,映射驱动程序文件 - Windows drivers | Microsoft Docs的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 找不到方法,已经定义的方法找不
- 下一篇: nginx 如何调用php文件,ngin