Re: SFilter
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 06.03.07 15:55
Оценка:
Здравствуйте, Phess, Вы писали:

P>ругается с кодом 3: не находит нужного файла... Не подскажите, как это обойти?

Если Вы заглянете в код SFilter::DriverEntry, то увидите там, что фильтр не выставляет свой CDO наружу, для win32:

//
//  Create the Control Device Object (CDO).  This object represents this
//  driver.  Note that it does not have a device extension.
//
RtlInitUnicodeString( &nameString, L"\\FileSystem\\Filters\\SFilterCDO" );
status = IoCreateDevice( DriverObject,
                                                 0,                      //has no device extension
                                                 &nameString,
                                                 FILE_DEVICE_DISK_FILE_SYSTEM,
                                                 FILE_DEVICE_SECURE_OPEN,
                                                 FALSE,
                                                 &gSFilterControlDeviceObject );

if (status == STATUS_OBJECT_PATH_NOT_FOUND) {

        //
        //  This must be a version of the OS that doesn't have the Filters
        //  path in its namespace.  This was added in Windows XP.
        //
        //  We will try just putting our control device object in the
        //  \FileSystem portion of the object name space.
        //

        RtlInitUnicodeString( &nameString, L"\\FileSystem\\SFilterCDO" );

        status = IoCreateDevice( DriverObject,
                                                         0,                  //has no device extension
                                                         &nameString,
                                                         FILE_DEVICE_DISK_FILE_SYSTEM,
                                                         FILE_DEVICE_SECURE_OPEN,
                                                         FALSE,
                                                         &gSFilterControlDeviceObject );


соотв что Вам нужно сделать — это всего лишь после успешного создания CDO создать симлинк, по типу как делает FileSpy:
RtlInitUnicodeString( &linkString, L"\\DosDevices\\SFilter");
status = IoCreateSymbolicLink(&linkString, &nameString);


PS вопросы по Sfilter & драйверам следует задавать в форуме asm
... << RSDN@Home 1.2.0 alpha rev. 655>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.