Сведения о вопросе

Ayrat

03:54, 15th August, 2020

Теги

Кросс-платформенное отслеживание доступа к файлам

Просмотров: 555   Ответов: 3

Я хотел бы иметь возможность отслеживать чтение/запись файлов конкретных вызовов программ. Никакой информации о фактических транзакциях не требуется, только имена файлов, участвующих.

Есть ли кросс-платформенное решение для этого?
Каковы различные методы, специфичные для платформы?
На Linux я знаю, что есть strace/ptrace (если есть более быстрые методы, которые тоже были бы хороши).
Я думаю, что на mac os есть ktrace.
А как насчет Windows?

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

Спасибо!



  Сведения об ответе

DAAA

09:35, 15th August, 2020

Короткий ответ-нет. Существует множество специфичных для платформы решений, которые, вероятно, имеют схожие интерфейсы, но они не являются по своей сути кросс-платформенными, поскольку файловые системы, как правило, являются специфичными для платформы.


Как мне сделать это хорошо на каждой платформе?

Опять же, это будет зависеть от платформы:) для Windows, если вы хотите отслеживать чтение/запись в полете, вам, возможно, придется пойти с IFS. Если вы просто хотите получать уведомления об изменениях, вы можете использовать ReadDirectoryChangesW или журнал изменений NTFS.

Я бы рекомендовал использовать журнал изменений NTFS только потому, что он имеет тенденцию быть более надежным.


  Сведения об ответе

appple

09:16, 14th August, 2020

Пока ваша программа запускает процессы, которые вы хотите отслеживать, вы можете написать отладчик, и тогда вы будете получать уведомления каждый раз, когда процесс запускается или завершается. При запуске процесса можно ввести DLL для подключения системных вызовов CreateFile для каждого отдельного процесса. Затем крюк может использовать канал или сокет, чтобы сообщить отладчику об активности файла.


  Сведения об ответе

pumpa

17:24, 1st August, 2020

На Windows вы можете использовать дескриптор инструмента командной строки или процесс GUI версии Explorer, чтобы увидеть, какие файлы открыл данный процесс.

Если вы хотите получить эту информацию в своей собственной программе, вы можете использовать комплект IFS от Microsoft для записи фильтра файловой системы. Фильтр файловой системы покажет всю работу файловой системы для всего процесса. Фильтры файловой системы используются в программном обеспечении AV для сканирования файлов перед их открытием или для сканирования вновь созданных файлов.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться