0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 5
1

Мини-фильтр для скрытия файлов

29.04.2019, 02:40. Показов 3277. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Мне необходимо написать фильтр для скрытия файлов в фс NTFS. Хочется сделать это в формате minifilter, но я ранее не имела дела с написанием драйверов. Почитав документацию, более-менее разобралась со структурой мини-фильтра, но что конкретно мне нужно сделать для того чтобы скрыть файл остается для меня загадкой.
Может быть кто-то писал что-то подобное и может подсказать как это сделать?

Буду благодарна за информативные ответы!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2019, 02:40
Ответы с готовыми решениями:

Программа для скрытия файлов
Доброго времени суток. Помогите пожалуйста организовать алгоритм для программы скрытия файлов,...

Программа под Windows для корректировки лог-файлов от офисной мини-АТС
Требуется написать программу под Windows для корректировки лог-файлов от офисной мини-АТС....

MSWord - графический фильтр для CGM-файлов
Как можно определить с помощью OLE установлен ли в Office компонент для работы с графическими...

Как задать фильтр для вывода файлов?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

9
Эксперт Hardware
Эксперт Hardware
6163 / 2400 / 398
Регистрация: 29.07.2014
Сообщений: 3,144
Записей в блоге: 4
29.04.2019, 07:53 2
Цитата Сообщение от AisOne Посмотреть сообщение
для скрытия файлов в фс NTFS
так вам нужно скрыть файл, или запретить к нему доступ?
для первого случая нужно чекать атрибуты файла, а для второго - можно сразу возвращать управление из фильтра, не передавая запрос по-цепочке дальше, драйверу файловой системы (или драйверу диска).

По-умолчанию цепочка (стек) ведь там такой: (1)юзерский IOCTL -> (2)др.FS -> (3)др.DSK
Вы можете повесить свой фильтр на любой уровень, и соответственно подходы будут разные.

Добавлено через 3 минуты
почитать можно...
Minifilter. Запрет на запись в файл
Драйвер фильтр USB
Общение между приложением и драйвером
Minifilter + memory mapped I/O
Фильтр USB устройств

Добавлено через 3 минуты
ещё кое-что..
MSDN - Драйверы минифильтров файловой системы
RSDN - Уязвимости в драйверах режима ядра для Windows
0
0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 5
29.04.2019, 10:20  [ТС] 3
Мне нужно именно скрыть файл, т.е. его не должно быть видно в папке.

И подразумевалось сделать это именно как мини-фильтр, т.е. он занимает промежуточное место между (1) и (2), если я правильно все поняла.

И достаточно ли будет просто менять флаг FILE_ATTRIBUTE_HIDDEN чтобы файл был скрыт? Потому что после поиска информации об этом мне показалось, что это несколько сложнее, чем просто поменять флаг.
0
Эксперт Hardware
Эксперт Hardware
6163 / 2400 / 398
Регистрация: 29.07.2014
Сообщений: 3,144
Записей в блоге: 4
29.04.2019, 10:55 4
Цитата Сообщение от AisOne Посмотреть сообщение
И достаточно ли будет просто менять флаг FILE_ATTRIBUTE_HIDDEN чтобы файл был скрыт?
атрибут устанавливается только так (и никак по другому) - этого достаточно
0
0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 5
29.04.2019, 11:12  [ТС] 5
Мини-фильтр фильтрует запросы в/в на основе IRP, для каждой из которых пишется процедура обратного вызова.

C++
1
CONST FLT_OPERATION_REGISTRATION Callbacks[] =
- структура, хранящая функции, перехватываемые данным фильтром.

Ме нужно просто перехватить нужную операцию и для нее в процедуре обратного вызова изменить атрибуты конкретного файла? Если так, то тогда какие именно операции перехватывать? IRP_MJ_DIRECTORY_CONTROL?

Может быть я вообще неправильно все это понимаю.. Скажите мне, если это так
0
Эксперт Hardware
Эксперт Hardware
6163 / 2400 / 398
Регистрация: 29.07.2014
Сообщений: 3,144
Записей в блоге: 4
29.04.2019, 14:26 6
Цитата Сообщение от AisOne Посмотреть сообщение
то тогда какие именно операции перехватывать? IRP_MJ_DIRECTORY_CONTROL?
нет, вам нужен запрос IRP_MJ_CREATE
чтобы сменить атрибут, нужно только имя файла, которое вы получаете при открытии файла юзером.
0
0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 5
29.04.2019, 22:59  [ТС] 7
При открытии файла..

А если мне необходимо скрыть файл по его названию, ну, например, у меня есть пользовательское приложение, связанное с драйвером, в котором пользователь выбирает файлы, которые он хочет скрыть?

Потому что на самом деле подразумевалось так: есть пользовательское приложение, связанное с фильтром, в котором пользователь выбирает файлы для скрытия, фильтр выполняет работу по скрытию файла и отправляет результаты обратно в пользовательское приложение.

Здесь уже совершенно другой подход необходимо использовать?
0
Эксперт Hardware
Эксперт Hardware
6163 / 2400 / 398
Регистрация: 29.07.2014
Сообщений: 3,144
Записей в блоге: 4
30.04.2019, 10:17 8
Цитата Сообщение от AisOne Посмотреть сообщение
в котором пользователь выбирает файлы для скрытия, фильтр выполняет работу по скрытию файла и отправляет результаты обратно в пользовательское приложение.
это конечно хорошо, только в ядре нет функций напрямую меняющей атрибуты (типа юзермодной SetFileAttributes), поэтому нужно использовать ZwCreateFile() и передавать в её параметрах "Hide" (сreate не только создаёт, но и открывает файл).

Хотя вроде есть ещё NtSetEaFile(), так-что можно попробовать перехватить запрос "IRP_MJ_SET_EA" (Extended Attributes), ..но может я и ошибаюсь, и имеются другие варианты - нужно практиковать это дело.

Добавлено через 19 минут
оказывается для смены атрибутов файла в ядре, можно использовать связку:
Assembler
1
2
3
ZwQueryInformationFile()      ; запросить инфу о файле
;; тут меняем атрибуты в структуре "FileBasicInformation"
ZwSetInformationFile()        ; установить новые атрибуты
0
0 / 0 / 0
Регистрация: 24.03.2017
Сообщений: 5
30.04.2019, 10:33  [ТС] 9
Я еще находила информацию, что файлы можно скрыть посредством перехвата функций API, насколько это сейчас актуально? Потому что вся информация, найденная мной была ~10 летней давности и может быть сейчас это использовать уже нет смысла.
0
Эксперт Hardware
Эксперт Hardware
6163 / 2400 / 398
Регистрация: 29.07.2014
Сообщений: 3,144
Записей в блоге: 4
30.04.2019, 11:58 10
Цитата Сообщение от AisOne Посмотреть сообщение
перехвата функций API
перехват апи на ядерном уровне займёт у вас большую часть фильтра,
поэтому в данном случае (думаю) это нерентабельно.
0
30.04.2019, 11:58
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2019, 11:58
Помогаю со студенческими работами здесь

GetOpenFileName - установить фильтр для текстовых файлов и картинок
Добрый вечер. Сделал открытие и показ только txt файлов, еще хочу что бы картинки показывало. Как...

Как можно установить фильтр файлов для элемента HtmlInputFile?
Как можно установить фильтр файлов для элемента HtmlInputFile.

Удаление exe файлов (как удалить Naomi 3.2.90,фильтр для интернета?)
Помогите удалить Naomi 3.2.90,фильтр для интернета При первом запуске программа просит задать...

Макрос для скрытия столбца
Помгите не работает данный код, хотя, вроде бы ошибок нет, подскажите в чем может быть проблема? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru