正确安装 x64 minispy 微过滤器驱动程序

正确安装 x64 minispy 微过滤器驱动程序

我正在尝试让 Microsoft 的 minispy 微过滤器正确安装和运行。我在 VS2013 中启动了一个新的空内核驱动程序项目,并编译了该驱动程序并对其进行了测试签名。

我可以使用 wdreg.exe 实用程序成功安装驱动程序,并且我在 DriverEntry() 函数的开头放置了一个 DbgPrint 测试,我可以使用 DbgView 读取它,因此驱动程序似乎安装成功。此外,使用 wdreg.exe 安装驱动程序会创建一个名为 Wdf01000 的服务,使用 sc query 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 示例它由两部分组成。

但是让我们回溯一下。该 INF 不包含DefaultInstallDefaultInstall.Services部分 - 这是使用您尝试的方法(右键单击 +“安装”)的先决条件。

您可以通过查看HKCR\inffile\shell\Install\command%SystemRoot%\System32\InfDefaultInstall.exe "%1"在我的情况下)来查看执行了哪些命令。这实际上使用setupapi.dllInstallHinfSection)来尝试安装。使用rundll32.exe以下方法也可以实现相同的效果到这篇文章

根据示例的来源(WDK)进行猜测,我可能会尝试通过Windows 7 SP1 WDK 文件夹dpinst.exe中的程序进行安装redist\DIFx\dpinst。但由于您已经成功安装了驱动程序,因此这似乎不是问题。驱动程序显然正在运行。

无论如何,您需要了解,仅仅因为您看到了调试输出DriverEntry()并不意味着过滤器驱动程序已连接到任何卷。事实上,Minispy 的文档明确指出您需要一个用户模式实用程序(但没有说明任何有关 Windows 服务的内容)。当我查看示例代码时,我希望从构建中获得命名的 mini-FSFDminispy.sys和命名的控制台应用程序minispy.exe。后者应该控制前者,包括控制连接到卷(有关详细信息,请参阅InterpretCommand()内部)。例如,用于连接、分离和列出设备(卷)的mspyUser.c命令。adl


我不知道你为什么使用wdreg.exe,但结果看起来好像安装了一些用户模式驱动程序(WDF / WUDF)?!然而,这是一个内核模式驱动程序,因此它不起作用是很自然的。

相关内容