Драйверът на мениджъра на филтъра на файловата система не работи. Драйвери за филтър на файловата система

Драйверът на мениджъра на филтъра на файловата система не работи.  Драйвери за филтър на файловата система
Драйверът на мениджъра на филтъра на файловата система не работи. Драйвери за филтър на файловата система

Филтърен драйвер, който заема по-високо ниво в йерархията от драйвера файлова система, е наречен Драйвер за филтър на файловата система(драйвер за филтър на файловата система). (Вижте Глава 9 за филтърни драйвери.) Способността му да вижда всички заявки към файловата система и да ги модифицира или изпълнява, ако е необходимо, прави възможни приложения като услуги за репликация. изтрити файлове, криптиране на файлове, Резервно копиеи лицензиране. B всякаква реклама скенер за вируси, който проверява файловете в движение, включва драйвер за файлова система, който прихваща IRP пакети с IRP_MJ_CREATE команди, издадени всеки път, когато приложение отвори файл. Преди да прехвърлите такъв IRP към адресирания драйвер на файловата система дадена команда, скенерът за вируси проверява отворения файл за вируси. Ако файлът е чист, скенерът за вируси предава IRP надолу по веригата, но ако файлът е заразен, скенерът извиква сервизния си процес, за да премахне или дезинфекцира файла. Ако файлът не може да бъде дезинфекциран, филтърният драйвер отхвърля IRP (обикновено с грешка „достъпът е отказан“), за да предотврати повторното активиране на вируса.

В този раздел ще опишем работата на два специфични драйвера за филтър на файловата система: Filemon и System Restore. Filemon - помощна програма за наблюдение на активността на файловата система (от сайта www.systntemals.com),използван в много от експериментите в тази книга е пример за драйвер за пасивен филтър, който не променя IRP потока между приложенията и драйверите на файловата система. Възстановяването на системата, функция, въведена в Windows XP, използва драйвера за филтър на файловата система, за да наблюдава промените в ключ системни файловеи създава техни резервни копия, така че тези файлове да могат да бъдат върнати в състоянията, които са имали по време на създаването на точките за възстановяване.


ЗАБЕЛЕЖКА Windows XP Service Pack 2 и Windows Server 2003 включват Filesystem Filter Manager (\Windows\System32\Drivers\Fltmgr.sys) като част от модела на порт-минипорт за драйвери за филтър на файлова система. Тази функция ще бъде налична и за Windows 2000. Filesystem Filter Manager драстично опростява разработката на драйвери за филтри, като предоставя интерфейс на драйвери за минипортове за филтри към I/O подсистемата на Windows, както и услуги за запитване към имена на файлове, свързване към томове и взаимодействие с други филтри. Разработчиците, включително Microsoft, ще напишат нови филтри за файлова система въз основа на инфраструктурата, предоставена от Filesystem Filter Manager и ще пренесат съществуващи филтри към него.


Понякога filtermanager.dll и други грешки системни грешки DLL може да е свързано с проблеми в системния регистър на Windows. Няколко програми може да използват файла filtermanager.dll, но когато тези програми бъдат премахнати или променени, понякога остават осиротели (невалидни) DLL записи в системния регистър.

По принцип това означава, че докато действителният път до файла може да е променен, неправилното му предишно местоположение все още се записва в системния регистър на Windows. Когато Windows се опитва да търси тези неправилни препратки към файлове (местоположения на файлове на вашия компютър), могат да възникнат грешки filtermanager.dll. В допълнение, заразяването със зловреден софтуер може да е повредило записите в регистъра, свързани с приложението на трета страна. По този начин тези повредени записи в регистъра на DLL трябва да бъдат поправени, за да се коригира коренът на проблема.

Ръчното редактиране на системния регистър на Windows за премахване на невалидни ключове filtermanager.dll не се препоръчва, освен ако не сте специалист по обслужване на компютри. Грешките, допуснати при редактирането на системния регистър, могат да направят вашия компютър неизползваем и да причинят непоправими щети на вашата операционна система. Всъщност дори една запетая на грешното място може да попречи на компютъра ви да се зареди!

Поради този риск силно препоръчваме да използвате доверен инструмент за почистване на регистър като WinThruster (разработен от Microsoft Gold Certified Partner), за да сканирате и поправите всякакви проблеми в регистъра, свързани с filtermanager.dll. Използването на инструмент за почистване на регистър автоматизира процеса на намиране на невалидни записи в регистъра, препратки към липсващи файлове (като този, причиняващ вашата грешка filtermanager.dll) и повредени връзки в регистъра. Преди всяко сканиране автоматично се създава резервно копие, което ви позволява да отмените всички промени с едно кликване и ви предпазва от евентуална повреда на вашия компютър. Най-добрата част е, че коригирането на грешки в системния регистър може драстично да подобри скоростта и производителността на системата.


Внимание:Ако не сте опитен потребител PC, НЕ препоръчваме да редактирате системния регистър на Windows ръчно. Неправилното използване на редактора на системния регистър може да доведе до сериозни проблеми и изисква преинсталиране на windows. Ние не гарантираме, че проблемите в резултат на злоупотреба с редактора на системния регистър могат да бъдат разрешени. Вие използвате редактора на системния регистър на свой собствен риск.

Преди ръчно възстановяване Регистър на Windows, трябва да създадете резервно копие, като експортирате част от системния регистър, свързана с filtermanager.dll (напр. приложение на трета страна):

  1. Кликнете върху бутона Започнете.
  2. Въведете " команда" В лента за търсене... ОЩЕ НЕ НАТИСКАЙТЕ ENTER!
  3. Задържане на ключове CTRL-Shiftна клавиатурата натиснете ENTER.
  4. Ще се покаже диалогов прозорец за достъп.
  5. Кликнете да.
  6. Черната кутия се отваря с мигащ курсор.
  7. Въведете " regedit" и натиснете ENTER.
  8. В редактора на системния регистър изберете ключа, свързан с filtermanager.dll (напр. Приложение на трета страна), който искате да архивирате.
  9. В менюто Файлизберете Експортиране.
  10. В списъка Запази визберете папката, в която искате да запазите резервното копие на ключа на приложението на трета страна.
  11. В полето Име на файлвъведете име за архивния файл, като например „Архивиране на приложение на трета страна“.
  12. Уверете се, че полето Експортна гамаизбрана стойност Избран клон.
  13. Кликнете Запазване.
  14. Файлът ще бъде записан с разширение .reg.
  15. Вече имате резервно копие на записа в системния регистър, свързан с filtermanager.dll.

Следващите стъпки за ръчно редактиране на системния регистър няма да бъдат обхванати в тази статия, тъй като има вероятност да повредят системата ви. Ако желаете повече информация относно ръчното редактиране на регистъра, моля, вижте връзките по-долу.

<= IRP_MJ_MAXIMUM_FUNCTION; ++i) { DriverObject->MajorFunction[i] = FsFilterDispatchPassThrough; ) DriverObject->

// // Глобални данни FAST_IO_DISPATCH g_fastIoDispatch = ( sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ...); // // DriverEntry - Входна точка на драйвера NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Задаване на таблица за изпращане на fast-io. // DriverObject->

Задаване на рутина за разтоварване на драйвери

// // DriverEntry - Входна точка на драйвера NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Задаване на рутина за разтоварване на драйвер (само с цел отстраняване на грешки). // DriverObject->

< numDevices; ++i) { FsFilterDetachFromDevice(devList[i]); ObDereferenceObject(devList[i]); } KeDelayExecutionThread(KernelMode, FALSE, &interval); } }

IrpDispatch.c

Диспечерско преминаване

// // PassThrough IRP Handler NTSTATUS FsFilterDispatchPassThrough(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION)DeviceObject->DeviceExtension; IoSkipCurrentIrpStackLocation( Irp); върне драйвера за IoCall (pDevExt->

Създаване на изпращане

// // IRP_MJ_CREATE IRP Handler NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->FileObject; DbgPrint("%wZ\n", &pFileObject->

FastIo.c

// Макрос за тестване дали рутинната обработка на FAST_IO_DISPATCH е валидна #define VALID_FAST_IO_DISPATCH_HANDLER(_FastIoDispatchPtr, _FieldName) \ (((_FastIoDispatchPtr) != NULL) && \ (((_FastIoDispatchPtr)->SizeOfFastIoDispatch) > = \ (FIELD_OFFSET (FAST_IO_DISPATCH, _FieldName) + sizeof(void *))) && \ ((_FastIoDispatchPtr)->_FieldName != NULL))

Бързо I/O преминаване

BOOLEAN FsFilterFastIoQueryBasicInfo(__in PFILE_OBJECT FileObject, __in BOOLEAN Wait, __out PFILE_BASIC_INFORMATION Buffer, __out PIO_STATUS_BLOCK IoStatus, __in PDEVICE_OBJECT DeviceObject) ( // // Преминаване през логика за този тип бърз I/O // PDEVICE_ OBJECT nextDeviceObject = (( PFSFILTER_DEVICE_EXTENSION) DeviceObject- >DeviceExtension)->AttachedToDeviceObject; PFAST_IO_DISPATCH fastIoDispatch = nextDeviceObject->DriverObject ->FastIoDispatch; if (VALID_FAST_IO_DISPATCH_HANDLER(fastIoDispatch, FastIoQueryBasicInfo)) ( return (fastIoDispatch->

Устройство за бързо I/O отделяне

Известие.c

AttachDetach.c

Прикачване

Откачане

void FsFilterDetachFromDevice(__in PDEVICE_OBJECT DeviceObject) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension; IoDetachDevice(pDevExt->

// // Разни BOOLEAN FsFilterIsMyDeviceObject(__in PDEVICE_OBJECT DeviceObject) (връщане DeviceObject->

Източници и makefile

Съдържание на файла с източници:

Makefile-ът е стандартен:

SC.EXE преглед

Sc стартирайте FsFilter

Спрете драйвера на файловата система

Sc спрете FsFilter

Sc изтрийте FsFilter

Резултатен скрипт

Все по-напреднал

Заключение

В нашия урок ви предоставихме лесни стъпки за създаване на драйвер за филтър на файлова система. Показахме как да инсталирате, стартирате, спрете и деинсталирате драйвер за филтър на файлова система с помощта на командния ред. Бяха обсъдени и други проблеми с драйверите за филтър на файловата система. Разгледахме стека на устройството на файловата система с прикачени филтри и обсъдихме как да наблюдаваме изхода за отстраняване на грешки от драйвера. Можете да използвате ресурсите в тази статия като скелет за разработване на ваш собствен драйвер за филтър на файлова система и да промените поведението му според вашите потребности.

Препратки

  1. Съдържание за разработчици на файлова система или филтър за файлова система
  2. sfilter DDK проба

Надяваме се, че сте харесали нашия урок за разработка на драйвери за Windows. Готови ли сте да наемете опитен екип, който да работи по вашия проект като разработка на драйвери за филтър на файловата система? Просто се свържете с нас и ние ще ви предоставим всички подробности!

Този урок ви предоставя лесни за разбиране стъпки за разработка на лесен драйвер за филтър на файловата система. Демонстрационният драйвер, който ви показваме как да създадете, отпечатва имената на отворените файлове за отстраняване на грешки в резултата.

Тази статия е написана за инженери с основен опит в разработката на драйвери за устройства с Windows, както и познания по C/C++. Освен това може да бъде полезно и за хора без задълбочено разбиране на разработката на драйвери за Windows.

Написано от:
Сергей Подобрий,
Ръководител на шофьорския екип

Какво представлява драйверът за филтър на файловата система на Windows?

Драйвер на филтър за файлова система на Windows се извиква по време на всяка I/O операция на файловата система (създаване, четене, запис, преименуване и т.н.). Следователно той може да променя поведението на файловата система. Драйверите за филтър на файловата система са сравними с наследените драйвери, въпреки че изискват няколко специални стъпки за разработка. Софтуерът за защита, архивиране, моментна снимка и антивирусен софтуер използва такива драйвери.

Разработване на прост драйвер за филтър на файловата система

Преди започване на разработката

Първо, за да разработите драйвер за филтър на файлова система, имате нужда от комплекта IFS или WDK от уебсайта на Microsoft. Също така трябва да зададете променливата на средата %WINDDK% на пътя, където сте инсталирали комплекта WDK/IFS.

Внимание:Дори и най-малката грешка в драйвера на файловата система може да причини BSOD или нестабилност на системата.

main.c

Въвеждане на драйвер за филтър на файловата система

Това е точка за достъп за всеки драйвер, включително за драйвер за филтър на файловата система. Първото нещо, което трябва да направим, е да съхраним DriverObject като глобална променлива (ще я използваме по-късно):

// // Глобални данни PDRIVER_OBJECT g_fsFilterDriverObject = NULL; // // DriverEntry - Входна точка на драйвера NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( NTSTATUS status = STATUS_SUCCESS; ULONG i = 0; //ASSERT(FALSE); // Това ще прекъсне отстраняването на грешки // / / Съхранявайте нашия обект на драйвер. // g_fsFilterDriverObject = DriverObject; ... )

Настройка на таблицата за изпращане на IRP

Следващата стъпка в разработването на драйвер за филтър на файловата система е попълването на таблицата за изпращане на IRP с функционални указатели към манипулатори на IRP. Ще имаме общ IRP манипулатор за преминаване в нашия драйвер за файлове, който изпраща заявки по-нататък. Ще ни трябва също манипулатор за IRP_MJ_CREATE, за да извличаме имената на отворените файлове. Ще разгледаме внедряването на IRP манипулатори по-късно.

// // DriverEntry - Входна точка на драйвера NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Инициализиране на таблицата за изпращане на обекта на драйвера. // for (i = 0; i<= IRP_MJ_MAXIMUM_FUNCTION; ++i) { DriverObject->MajorFunction[i] = FsFilterDispatchPassThrough; ) DriverObject->MajorFunction = FsFilterDispatchCreate; ... )

Задаване на бърза I/O диспечерска таблица

Драйверът за филтър на файловата система изисква бърза I/O таблица за изпращане. Ненастройването на тази таблица би довело до срив на системата. Бързият I/O е различен начин за иницииране на I/O операции, който е по-бърз от IRP. Бързите I/O операции винаги са синхронни. Ако манипулаторът за бърз I/O върне FALSE, тогава не можем да използваме бърз I/O. в този случай ще бъде създаден IRP.

// // Глобални данни FAST_IO_DISPATCH g_fastIoDispatch = ( sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ...); // // DriverEntry - Входна точка на драйвера NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Задаване на таблица за изпращане на fast-io. // DriverObject->FastIoDispatch = &g_fastIoDispatch; ... )

Регистриране на известия за промени в файловата система

Докато разработваме драйвер за филтър на файловата система, трябва да регистрираме известие за промени в файловата система. От решаващо значение е да проследите дали файловата система се активира или деактивира, за да извършите прикачване/откачане на нашия драйвер за филтър на файловата система. По-долу можете да видите как да проследявате промените във файловата система.

// // DriverEntry - Входна точка на драйвера NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Регистрирана процедура за обратно извикване за промени във файловата система. // status = IoRegisterFsRegistrationChange(DriverObject, FsFilterNotificationCallback); ако (!NT_SUCCESS(статус)) (статус на връщане;) ...)

Задаване на рутина за разтоварване на драйвери

Последната част от инициализацията на драйвера на файловата система е настройка на рутина за разтоварване. Тази процедура ще ви помогне да заредите и разтоварите драйвера за филтър на вашата файлова система, без да е необходимо да рестартирате. Независимо от това, този драйвер може наистина да се разтоварва само за целите на отстраняване на грешки, тъй като е невъзможно да се разтоварят безопасно филтрите на файловата система. Не се препоръчва да се извършва разтоварване в производствен код.

// // DriverEntry - Входна точка на драйвера NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Задаване на рутина за разтоварване на драйвер (само за отстраняване на грешки). // DriverObject->DriverUnload = FsFilterUnload; връщане STATUS_SUCCESS; )

Разтоварване на драйвера на файловата система

Рутината за разтоварване на драйвера почиства ресурсите и ги освобождава. Следващата стъпка в разработването на драйвери за файлова система е отписването на известието за промени в файловата система.

// // Рутина за разтоварване VOID FsFilterUnload(__in PDRIVER_OBJECT DriverObject) ( ... // // Нерегистрирана рутина за обратно извикване за промени във файловата система. // IoUnregisterFsRegistrationChange(DriverObject, FsFilterNotificationCallback); ... )

След като дерегистрирате известието, трябва да преминете през създадените устройства и да ги отделите и премахнете. След това изчакайте пет секунди, докато завършат всички неуредени IRP. Имайте предвид, че това е решение само за отстраняване на грешки. Работи в по-голям брой случаи, но няма гаранция, че ще работи във всички тях.

// // Рутинно разтоварване VOID FsFilterUnload(__in PDRIVER_OBJECT DriverObject) ( ... for (;;) ( IoEnumerateDeviceObjectList(DriverObject, devList, sizeof(devList), &numDevices); if (0 == numDevices) ( break; ) numDevices = min(numDevices, RTL_NUMBER_OF(devList)); for (i = 0; i< numDevices; ++i) { FsFilterDetachFromDevice(devList[i]); ObDereferenceObject(devList[i]); } KeDelayExecutionThread(KernelMode, FALSE, &interval); } }

IrpDispatch.c

Диспечерско преминаване

Единствената отговорност на този IRP манипулатор е да предава заявките към следващия драйвер. Следващият обект на драйвера се съхранява в разширението на нашето устройство.

// // PassThrough IRP Handler NTSTATUS FsFilterDispatchPassThrough(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION)DeviceObject->DeviceExtension; IoSkipCurrentIrpStackLocation( Irp); върне IoCall Driver(pDevExt->AttachedToDeviceObject, Irp); )

Създаване на изпращане

Всяка операция за създаване на файл извиква този IRP манипулатор. След като вземем име на файл от PFILE_OBJECT, ние го отпечатваме в изхода за отстраняване на грешки. След това извикваме манипулатора за преминаване, който сме описали по-горе. Забележете, че валидно име на файл съществува в PFILE_OBJECT само докато операцията за създаване на файл не приключи! Съществуват също относителни отваряния, както и отваряния по id. партийни ресурси, можете да намерите повече подробности относно извличането на имена на файлове в тези случаи.

// // IRP_MJ_CREATE IRP Handler NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->FileObject; DbgPrint("%wZ\n", &pFileObject->FileName); return Fs Fil terDispatchPassThrough(DeviceObject , Irp); )

FastIo.c

Тъй като не всички процедури за бърз вход/изход трябва да се изпълняват от основната файлова система, трябва да тестваме валидността на таблицата за изпращане на бърз вход/изход за следващия драйвер, като използваме следния макрос:

// Макрос за тестване дали рутинната обработка на FAST_IO_DISPATCH е валидна #define VALID_FAST_IO_DISPATCH_HANDLER(_FastIoDispatchPtr, _FieldName) \ (((_FastIoDispatchPtr) != NULL) && \ (((_FastIoDispatchPtr)->SizeOfFastIoDispatch) > = \ (FIELD_OFFSET (FAST_IO_DISPATCH, _FieldName) + sizeof(void *))) && \ ((_FastIoDispatchPtr)->_FieldName != NULL))

Бързо I/O преминаване

За разлика от IRP заявките, преминаването през бързи IO заявки изисква огромно количество код, тъй като всяка бърза I/O функция има свой собствен набор от параметри. По-долу можете да намерите пример за обща функция за преминаване:

BOOLEAN FsFilterFastIoQueryBasicInfo(__in PFILE_OBJECT FileObject, __in BOOLEAN Wait, __out PFILE_BASIC_INFORMATION Buffer, __out PIO_STATUS_BLOCK IoStatus, __in PDEVICE_OBJECT DeviceObject) ( // // Преминаване през логика за този тип бърз I/O // PDEVICE_ OBJECT nextDeviceObject = (( PFSFILTER_DEVICE_EXTENSION) DeviceObject- >DeviceExtension)->AttachedToDeviceObject; PFAST_IO_DISPATCH fastIoDispatch = nextDeviceObject->DriverObject ->FastIoDispatch; if (VALID_FAST_IO_DISPATCH_HANDLER(fastIoDispatch, FastIoQueryBasicInfo)) ( return (fastIoDispatch->FastIoQueryBasic Info)(FileObject, Wait, Bu ffer, IoStatus, nextDeviceObject); ) връщане НЕВЯРНО ;)

Устройство за бързо I/O отделяне

Detach device е специфична бърза I/O заявка, която трябва да обработваме, без да извикваме следващия драйвер. Трябва да изтрием нашето филтърно устройство, след като го отделим от стека на устройството на файловата система. По-долу можете да намерите примерен код, демонстриращ как лесно да управлявате тази заявка:

VOID FsFilterFastIoDetachDevice(__in PDEVICE_OBJECT SourceDevice, __in PDEVICE_OBJECT TargetDevice) ( // // Отделяне от обекта устройство на том на файловата система. // IoDetachDevice(TargetDevice); IoDeleteDevice(SourceDevice); )

Известие.c

общата файлова система се състои от контролни устройства и обемни устройства. Устройствата за обем са прикрепени към стека на устройствата за съхранение. Контролното устройство се регистрира като файлова система.

Обратно извикване се извиква за всички активни файлови системи всеки път, когато дадена файлова система се регистрира или дерегистрира като активна. Това е страхотно място за прикачване или откачане на нашето филтърно устройство за файлова система. Когато файловата система се активира сама, ние се прикачваме към нейното контролно устройство (ако вече не е прикачено) и изброяваме нейните томни устройства и също се прикачваме към тях. Докато деактивираме файловата система, ние проверяваме нейния стек от контролни устройства, намираме нашето устройство и го отделяме. Откачането от устройствата за обем на файловата система се извършва в рутинната процедура FsFilterFastIoDetachDevice, която описахме по-рано.

// // Тази рутина се извиква всеки път, когато дадена файлова система се е регистрирала или // дерегистрирала като активна файлова система. VOID FsFilterNotificationCallback(__in PDEVICE_OBJECT DeviceObject, __in BOOLEAN FsActive) ( // // Справяне с прикачването/откачането от дадената файлова система. // if (FsActive) ( FsFilterAttachToFileSystemDevice(DeviceObject); ) else ( FsFilterDetachFromFileSystemDevice(DeviceObject); ) )

AttachDetach.c

Този файл съдържа помощни процедури за прикачване, откачане и проверка дали нашият филтър вече е прикачен.

Прикачване

За да прикачим, трябва да извикаме IoCreateDevice, за да създадем нов обект на устройство с разширение на устройството и след това да разпространим флагове на обект на устройство от обекта на устройството, към който се опитваме да прикачим (DO_BUFFERED_IO, DO_DIRECT_IO, FILE_DEVICE_SECURE_OPEN). След това извикваме IoAttachDeviceToDeviceStackSafe в цикъл със забавяне в случай на повреда. Нашата заявка за прикачен файл може да се провали, ако обектът на устройството не е завършил инициализирането. Това може да се случи, ако се опитаме да монтираме филтъра само за обем. След прикачването запазваме обекта „прикачен към“ устройство към разширението на устройството и изчистваме флага DO_DEVICE_INITIALIZING. По-долу можете да видите разширението на устройството:

// // Структури typedef struct _FSFILTER_DEVICE_EXTENSION ( PDEVICE_OBJECT AttachedToDeviceObject; ) FSFILTER_DEVICE_EXTENSION, *PFSFILTER_DEVICE_EXTENSION;

Откачане

Отделянето е доста просто. От разширението на устройството получаваме устройството, към което сме се прикрепили, и след това извикваме IoDetachDevice и IoDeleteDevice.

void FsFilterDetachFromDevice(__in PDEVICE_OBJECT DeviceObject) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension; IoDetachDevice(pDevExt->AttachedToDeviceObject); IoDeleteDevice(DeviceObject); )

Проверява се дали нашето устройство е прикачено

За да проверим дали сме прикачени към устройство или не, трябва да преминем през стека на устройството, използвайки IoGetAttachedDeviceReference и IoGetLowerDeviceObject, след което да потърсим нашето устройство там. Можем да идентифицираме нашето устройство, като сравним обекта на драйвера на устройството с този на нашия драйвер (g_fsFilterDriverObject).

// // Разни BOOLEAN FsFilterIsMyDeviceObject(__in PDEVICE_OBJECT DeviceObject) (връщане DeviceObject->DriverObject == g_fsFilterDriverObject; )

Източници и makefile

Помощната програма, която изгражда драйвера, използва източници и makefile файлове. Тези файлове съдържат настройки на проекта и имена на изходни файлове.

Съдържание на файла с източници:

TARGETNAME=FsFilter TARGETPATH=obj TARGETTYPE=ДРАЙВЕР DRIVERTYPE=FS SOURCES=\Main.c\IrpDispatch.c\AttachDetach.c\Notification.c\FastIo.c

Makefile-ът е стандартен:

Включете $(NTMAKEENV)\makefile.def

Командният ред за изграждане на MSVC makefile проект е:

Извикайте $(WINDDK)\bin\setenv.bat $(WINDDK) chk wxp cd /d $(ProjectDir) build.exe -I

Как да инсталирате драйвер за филтър на файловата система

SC.EXE преглед

Ще използваме sc.exe (sc - контрол на услугата), за да управляваме нашия драйвер. Можем да използваме тази помощна програма от командния ред, за да направим запитване или да променим базата данни с инсталирани услуги. Доставя се с Windows XP и по-нова версия или можете да го намерите в Windows SDK/DDK.

Инсталирайте драйвер за филтър на файловата система

За да инсталирате драйвера за филтър на файловата система, обадете се:

Sc create FsFilter type= filesys binPath= c:\FSFilter.sys

Това ще създаде нов запис за услуга с името FsFilter с тип услуга файлова система и двоичен път c:\FsFilter.sys.

Стартирайте драйвера за филтър на файловата система

За да стартирате драйвера за филтър на файловата система, извикайте:

Sc стартирайте FsFilter

Услугата FsFilter ще бъде стартирана.

Спрете драйвера на файловата система

За да спрете драйвера на филтъра на файловата система, извикайте:

Sc спрете FsFilter

Услугата FsFilter ще бъде спряна.

Деинсталирайте драйвера за филтър на файловата система

За да деинсталирате драйвера за филтър на файловата система, извикайте:

Sc изтрийте FsFilter

Тази команда инструктира мениджъра на услугата да премахне записа на услугата с името FsFilter.

Резултатен скрипт

Можем да поставим всички тези команди в един пакетен файл, за да улесним тестването на драйверите. По-долу е съдържанието на нашия команден файл Install.cmd:

Sc create FsFilter type= filesys binPath= c:\FsFilter.sys sc start FsFilter pause sc stop FsFilter sc delete FsFilter pause

Изпълнение на примерен драйвер за филтър на файловата система

Сега ще покажем как работи филтърът на файловата система. За тази цел ще използваме Sysinternals DebugView за Windows за наблюдение на изхода за отстраняване на грешки, както и OSR Device Tree за преглед на устройства и драйвери.

Първо, нека изградим драйвера. След това ще копираме получения файл FsFilter.sys и скрипта Install.cmd в корена на C устройството.

Драйвер на филтъра на файловата система и инсталационния скрипт на C устройството.

Сега ще стартираме Install.cmd, който инсталира и стартира драйвера на файловата система и след това изчаква въвеждане от потребителя.

Драйверът за филтър на файловата система е успешно инсталиран и стартиран.

Сега трябва да стартираме помощната програма DebugView.

Най-накрая можем да видим какви файлове са отворени! Това означава, че нашият филтър работи. Сега трябва да стартираме помощната програма за дървото на устройствата и да намерим нашия драйвер там.

Нашият драйвер за филтър в дървото на устройствата.

Има различни устройства, създадени от нашия шофьор. Нека отворим NTFS драйвера и да разгледаме дървото на устройствата:

Нашият филтър е прикрепен към NTFS.

Сега се прикрепихме отново. Нека да разгледаме други файлови системи:

Нашият филтър е прикрепен и към други файлови системи.

И накрая, можем да натиснем произволен клавиш, за да продължим нашия инсталационен скрипт, спирайки и деинсталирайки драйвера.

Нашият драйвер за филтър на файловата система е спрян и деинсталиран.

Можем да натиснем F5, за да опресним дървовидния списък с устройства:

Нашите филтърни устройства вече не са в дървото на устройствата.

Нашият драйвер за филтър на файловата система е изчезнал и системата работи както преди.

Все по-напреднал

Драйверът за филтър на файловата система, описан по-горе, е много прост и му липсват редица функции, необходими за общ драйвер. Идеята на тази статия беше да покаже най-лесния начин за създаване на драйвер за филтър на файлова система, поради което описахме този прост и лесен за разбиране процес на разработка. Можете да напишете собствен манипулатор на IRP_MJ_FILE_SYSTEM_CONTROL, за да проследявате новопристигнали томове.

И без да чакам продължението, което обещахте Как, реших сам да инсталирам тази антивирусна програма на домашния си компютър, но попаднах на някои неясноти. Инсталаторът е изтеглен от официалния уебсайт www.avast.com/ru, след което е инсталиран на вашия домашен компютър тази програма, и се оказва, че все още трябва да се регистрира. Направих го, сега не мога да разбера настройките. По-конкретно, интересувам се от функцията Sandbox или пясъчната кутия, много хора говорят за това сега, това е вид виртуална среда, в която можете да стартирате всяка подозрителна програма, без да се страхувате да заразите цялата система, ако нещо се случи. Така че в настройките е, но не разбирам дали работи или не. И все още не мога да намеря такъв полезна функция, като Scan on boot, те казват, че това е много добро средство за банери за ransomware и ако е активирано, Avast извършва сканиране файлове за зарежданепреди да заредите самия Windows. Ще съм благодарен за всякаква помощ. Максим.

Как да инсталирате безплатна антивирусна програма Avast

Тази статия е написана като продължение на статията Коя антивирусна програма е най-добрата, където анализирахме въпроса на какъв принцип почти всички антивирусни продукти, както платени, така и безплатни, изграждат своята защита. Как се различават един от друг, както и много повече, например как най-добре да изградите защитата на вашия домашен компютърот вируси и какво освен антивирусни програми да използвам за това. Тук ще разгледаме въпроса как да изтеглите и Инсталирай безплатна антивирусна програма Avast. Ще анализираме основните настройки на програмата, нейната поддръжка, сканиране за вируси и т.н.

Забележка: Приятели, ако по някаква причина искате да премахнете антивирусната програма Avast, използвайте. добър прегледплатени и безплатни антивируси ви очакват в нашата статия ""

По принцип защитата на нашата антивирусна програма Avast е изградена върху много мощна постоянна защита. Това се случва с помощта на особени средства на екрани. С други думи, програмните модули постоянно присъстват в оперативна памети следете всичко, което се случва на компютъра.
Например екранът на файловата система е основното средство за защита и следи всички операции, които се извършват с вашите файлове. Защитна стена - следи мрежовата активност и спира вирусите, които се опитват да преминат през интернет. Екран за поща - следете го електронна пощаи естествено проверява всички писма, които идват на вашия компютър. Друга програма Avast има доста усъвършенстван евристичен анализ, ефективен срещу руткитове.

Ето ви безплатна антивирусна програма!

Преди инсталиране Avast! безплатна антивирусна програма, трябва да знаете, че можете да го използвате само у дома. Можете да изтеглите антивирусната програма на уебсайта www.avast.com. Ако имате проблеми с изтеглянето на антивирусна програма Avast, изтеглете я от официалната страница на дистрибутора на Avsoft на адрес:

www.avsoft.ru/avast/Free_Avast_home_edition_download.htm
Е, ще изтеглим нашата антивирусна програма на официалния уебсайт
www.avast.com/ru-ru/free-antivirus-download. Изберете Безплатна антивирусна програмаи щракнете върху изтегляне,

в прозореца за добре дошли потребители на безплатна антивирусна програма Avast, който се показва, щракнете върху бутона Изтегляне сега.

Изтеглено, стартирайте инсталатора на програмата. От седмата версия има избор между нормална инсталация и инсталация като втора антивирусна програма. Ако сте инсталирали Kaspersky като първа антивирусна програма, възможен е конфликт.

Можете да изберете експресен монтаж.

Ако се нуждаеш Google браузър Chrome, поставете отметка в квадратчето. Инсталирането става за една или две минути.
Инсталацията е завършена. Ние сме готови.

Много хора, след като влязоха в главния прозорец на програмата, се изненадаха, че антивирусната програма AVAST трябва да бъде регистрирана, но това всъщност е така. Регистрацията е много проста. Кликнете, за да се регистрирате.

Изберете основна защита AVAST! безплатна антивирусна програма.

Попълнете много прост формуляр. Кликнете, за да се регистрирате за безплатен лиценз.

Нашата версия на антивирусната програма е регистрирана на Пощенска кутияще получи подобно писмо.

Веднага ни се предлага временно да преминем към версията на Internet Security за 20 дни, след този период, ако желаете, можете да се върнете към Безплатноили купете версия на Internet Security. С каквото и да сравнявате, първо използвайте версията на AVAST! Безплатна антивирусна програма, можете да преминете към платена версия по всяко време. Кликнете върху кръста в горния десен ъгъл и затворете този прозорец.

След 365 дни ще трябва да се пререгистрирате и това е всичко. Както можете да видите, изтеглянето и инсталирането на безплатния антивирус Avast по принцип не е трудно и не е трудно да го регистрирате.

Може да се каже, че всичко е много удобно и разбираемо, дори начинаещ ще разбере цялото управление. Сега приятели, внимание, по подразбиране програмата е конфигурирана много добре, но има някои настройки, които заслужават вашето внимание. Avast се актуализира автоматично, обикновено веднага след включване на компютъра и стартиране на операционната система.



Ако желаете, можете да проверите дали има актуализации на официалния уебсайт по всяко време. Изберете Програма за актуализиране на поддръжката. Можете също така да актуализирате системата за сканиране и откриване на вируси.

Има няколко начина да сканирате компютъра си за вируси. Кликнете върху бутона Сканирайте компютъра си. И изберете опцията, от която се нуждаете, например
Експресно сканиране- автоматично стартиране на обекти и всички области на дяла с операционна системакъдето вирусите обикновено гнездят.
Пълно сканиранекомпютър(без коментари)
Сканиране на сменяеми носители- вашите флашки, USB твърди дискове и т.н
Изберете папка за сканиране, избирате папката за сканиране за вируси.

Или можете да щракнете с десния бутон върху която и да е папка и да изберете Сканиране от падащото меню и тази папка ще бъде сканирана за вируси.

Сканиране при зареждане на ОС. Ако например трябва да сърфирате в интернет дълго време, можете да активирате проверка на файловете за зареждане предварително и при следващото зареждане на системата. Avast ще проверява всички файлове, свързани с нормалното зареждане на системата, заобикаляйки самия Windows, аз лично не съм забелязал такава функция никъде, освен Avast. Много добър инструмент, който помага срещу ransomware банери, макар и не в 100% от случаите.

Антивирусен прозорец на Avast, преди основното зареждане на Windows.

Автоматичен пясъчник (" AutoSandbox"). Изпълнява подозрителни приложения във виртуална среда, естествено отделена от нормалната система. В нашата безплатна версия на AVAST! Безплатна антивирусна програма, само онези приложения, които Avast смята за подозрителни, ще се стартират, ако програмата се окаже злонамерена, прозорецът на програмата просто ще се затвори. В платени AVAST версии! Pro Antivirus и AVAST! Internet Security, вие ще можете да стартирате всяко приложение в тази среда, както желаете.

Блокиране на определени уебсайтове по техния адрес. Можете да използвате тази функция като родителски контрол.

Всичко останало е налично във витрината Екрани на живои прозорец Настройки. Можем да кажем, че настройките по подразбиране трябва да отговарят на средния потребител, ако нещо не е ясно, пишете.

Windows Filesystem Filter Manager или Windows File System Filter Manager е процесът, който се инсталира с разширението на системния файл fltmgr.sys. Този процес е основен компонент на вашата операционна система Windows и не трябва да се прекратява или да се забранява изпълнението му всеки път, когато Windows се зарежда по време на стартиране. Файлът носи основната отговорност да гарантира, че всички файлове, които ще бъдат инсталирани на компютъра, се съхраняват в съответните им директории. Ако този файл липсва или е повреден, най-вероятно ще се появи Синият екран на смъртта; според опита на потребителите. В други случаи Windows няма да се зареди напълно. Рестартирането само по себе си не решава проблема, ако файлът наистина липсва или не може да бъде открит при стартиране. Грешката ще продължи да се появява, докато проблемът не бъде отстранен. Файлът fltmgr.sys, който е съвместим с Windows XP или Windows 7, има приблизителен размер от 124 800 байта. Файлът се съхранява в системната директория на вашата операционна система.

Как мога да спра fltmgr.sys и трябва ли да го направя?

Повечето несистемни процеси, които се изпълняват, могат да бъдат спрени, защото не участват в работата на вашата операционна система. fltmgr.sys. се използва от Microsoft Windows, ако изключите fltmgr.sys, вероятно ще започне отново по-късно или след като рестартирате компютъра си, или след стартиране на приложение. да спра fltmgr.sys, постоянно трябва да деинсталирате приложението, което изпълнява този процес, което в този случай е Microsoft Windows, от вашата система.

След деинсталиране на приложения е добра идея да сканирате системния регистър на Windows за всякакви останали следи от приложения. Registry Reviver от ReviverSoft е чудесен инструмент за това.

Това вирус ли е или друго опасение за сигурността?

Решение за сигурност на ReviverSoft

Моля, прегледайте fltmgr.sys и ми изпратете известие, след като го направи
е прегледан.

Какво е процес и как те влияят на моя компютър?

Процес обикновено е част от инсталирано приложение, като напр Microsoft Windows, или вашата операционна система, която отговаря за изпълнението на функциите на това приложение. Някои приложения изискват да имат процеси, работещи през цялото време, за да могат да правят неща като проверка за актуализации или да ви уведомяват, когато получите незабавно съобщение. Някои зле написани приложения имат много процеси, които се изпълняват, които може да не са необходими и заемат ценна процесорна мощност в компютъра ви.

Известно ли е, че fltmgr.sys е лош за производителността на моя компютър?

Не сме получили никакви оплаквания за това, че този процес има по-високо от нормалното въздействие върху производителността на компютъра. Ако сте имали лоши преживявания с него, моля, уведомете ни в коментар по-долу и ние ще проучим допълнително опита му.