正確安裝 x64 minispy minifilter 驅動程式

正確安裝 x64 minispy minifilter 驅動程式

我正在嘗試讓 Microsoft 的 minispy minifilter 安裝並正常運作。我在VS2013中啟動了一個新的空內核驅動程式項目,並編譯了驅動程式並對其進行了測試簽名。

我可以使用 wdreg.exe 實用程式成功安裝驅動程序,並且我在 DriverEntry() 函數的開頭放置了 DbgPrint 測試,我可以使用 DbgView 讀取它,因此驅動程式似乎安裝正常。另外,使用 wdreg.exe 安裝驅動程式會建立 Wdf01000 命名服務,並使用 sc 查詢 Wdf01000 我可以查看它正在運行。使用 fltmc.exe 載入或查看實例會產生奇怪的結果。

微軟說要安裝它,我應該右鍵單擊 .inf 文件,然後單擊安裝,當我這樣做時,Windows 告訴我「您選擇的 .inf 文件不支援這種安裝方法」。貼上的是我的 VS2013 產生的 .inf 檔案的副本。

有人可以告訴我安裝 minispy 驅動程式、啟動 minispy 驅動程式並將其附加到 x64 Win7/Win8 上的檔案系統的正確方法嗎?謝謝

[Version]
Signature="$WINDOWS NT$"
Class=Sample ; TODO: edit Class
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid
Provider=%ManufacturerName%
CatalogFile=MiniSpyDev.cat  
DriverVer= ; TODO: set DriverVer in stampinf property pages

[DestinationDirs]
DefaultDestDir = 12

; ================= Class section =====================

[ClassInstall32]
Addreg=SampleClassReg

[SampleClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-5

[SourceDisksNames]
1 = %DiskName%,,,""

[SourceDisksFiles]
MiniSpyDev.sys  = 1,,

;*****************************************
; Install Section
;*****************************************

[Manufacturer]
%ManufacturerName%=Standard,NT$ARCH$

[Standard.NT$ARCH$]
%MiniSpyDev.DeviceDesc%=MiniSpyDev_Device, Root\MiniSpyDev ; TODO: edit hw-id

[MiniSpyDev_Device.NT]
CopyFiles=Drivers_Dir

[Drivers_Dir]
MiniSpyDev.sys

;-------------- Service installation
[MiniSpyDev_Device.NT.Services]
AddService = MiniSpyDev,%SPSVCINST_ASSOCSERVICE%, MiniSpyDev_Service_Inst

; -------------- MiniSpyDev driver install sections
[MiniSpyDev_Service_Inst]
DisplayName    = %MiniSpyDev.SVCDESC%
ServiceType    = 2               ; SERVICE_KERNEL_DRIVER
StartType      = 0               ; 
ErrorControl   = 1               ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\MiniSpyDev.sys
LoadOrderGroup = Extended Base

;
;--- MiniSpyDev_Device Coinstaller installation ------
;

[DestinationDirs]
MiniSpyDev_Device_CoInstaller_CopyFiles = 11

[MiniSpyDev_Device.NT.CoInstallers]
AddReg=MiniSpyDev_Device_CoInstaller_AddReg 
CopyFiles=MiniSpyDev_Device_CoInstaller_CopyFiles

[MiniSpyDev_Device_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000,     "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"

[MiniSpyDev_Device_CoInstaller_CopyFiles]
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll

[SourceDisksFiles]
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with               SourceDisksNames

[MiniSpyDev_Device.NT.Wdf]
KmdfService =  MiniSpyDev, MiniSpyDev_wdfsect
[MiniSpyDev_wdfsect]
KmdfLibraryVersion = $KMDFVERSION$

[Strings]
SPSVCINST_ASSOCSERVICE= 0x00000002
ManufacturerName="" ; TODO: add ManufacturerName
ClassName="Samples" ; TODO: edit ClassName
DiskName = "MiniSpyDev Installation Disk"
MiniSpyDev.DeviceDesc = "MiniSpyDev Device"
MiniSpyDev.SVCDESC = "MiniSpyDev Service"

答案1

您需要根據inf建立一個.cat文件,然後對該.cat進行簽署。有一個名為 inf2cat 的工具可以建立cat,然後使用signtool對其進行簽署。完成後,安裝應該沒問題。

答案2

這樣你的驅動程式就可以運作了,太好了。這Minispy FSFD 樣本不過,它由兩個部分組成。

但讓我們回溯一下。 Theat INF 不包含DefaultInstallDefaultInstall.Services部分 - 這是使用您嘗試的方法(右鍵單擊+“安裝”)的先決條件。

您可以透過查看HKCR\inffile\shell\Install\command%SystemRoot%\System32\InfDefaultInstall.exe "%1"在我的例子中)來查看執行的命令。這有效地使用setupapi.dll( InstallHinfSection) 來嘗試安裝。使用rundll32.exe根據相同的方法可以實現到這篇文章

透過猜測範例來自何處(WDK),我可能會嘗試透過Windows 7 SP1 WDK 資料夾dpinst.exe中的範例進行安裝。redist\DIFx\dpinst但由於您已經成功安裝了驅動程序,因此這似乎不是問題。司機顯然正在奔跑。

無論如何,您需要了解,僅僅因為您看到偵錯輸出DriverEntry()並不意味著過濾器驅動程式已附加到任何磁碟區。事實上,Minispy 的文檔明確指出您需要一個使用者模式實用程式(但沒有說明任何有關 Windows 服務的資訊)。當我查看範例程式碼時,我希望獲得命名的迷你 FSFD以及從建置中minispy.sys命名的控制台應用程式。minispy.exe後者應該控制前者,包括控製附加到磁碟區(詳細資訊請參閱InterpretCommand()內部)。mspyUser.c例如a用於附加、d分離和l列出設備(卷)的命令。


我不知道你為什麼使用wdreg.exe,但結果看起來好像它安裝了一些用戶模式驅動程式(WDF/WUDF)?不過,這是一個內核模式驅動程序,因此它自然地不起作用。

相關內容