
Microsoft에서 제공하는 minispy 미니필터를 설치하고 제대로 작동시키려고 합니다. VS2013에서 새로운 빈 커널 드라이버 프로젝트를 시작하고 드라이버를 컴파일하고 테스트 서명했습니다.
wdreg.exe 유틸리티를 사용하여 드라이버를 성공적으로 설치할 수 있으며 DriverEntry() 함수 시작 부분에 DbgPrint 테스트를 넣고 DbgView를 사용하여 읽을 수 있으므로 드라이버가 제대로 설치된 것처럼 보입니다. 또한 wdreg.exe를 사용하여 드라이버를 설치하면 Wdf01000이라는 서비스가 생성되고 sc 쿼리 Wdf01000을 사용하면 실행 중인 것을 볼 수 있습니다. fltmc.exe를 사용하여 인스턴스를 로드하거나 확인하면 이상한 결과가 나타납니다.
Microsoft에서는 설치하려면 .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에 서명해야 합니다. 고양이를 생성하고 signtool을 사용하여 서명하는 inf2cat라는 도구가 있습니다. 완료되면 문제 없이 설치됩니다.
답변2
그래서 당신은 당신의 드라이버를 실행하고 있습니다. 그만큼Minispy FSFD 샘플하지만 두 부분으로 구성되어 있습니다.
하지만 조금 뒤로 돌아가 보겠습니다. Theat INF에는 시도한 방법(마우스 오른쪽 버튼 클릭 + "설치")을 사용하기 위한 전제 조건인 DefaultInstall
또는 섹션이 포함되어 있지 않습니다 .DefaultInstall.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)를 설치한 것처럼 보입니까?! 하지만 이것은 커널 모드 드라이버이므로 작동하지 않는 것이 당연합니다.