Надо создать неудаляемый файл.. Может кто знает как? (Этот вопрос не я придумал, просто меня попросили с этим разобраться, а у меня нет идей как это сделать предлагал просто удалить его из индексов -- не катит) В общем даже не знаю че делать.. может кто поможет? =)
Форматирование его так или иначе удалит. А вообще, наверняка и для NTFS, по аналогии с FAT, существуют методы, которыми можно пометить дисковый кластер как Bad. Хотя не уверен - с НТФС никогда не работал...
Не понял.. что за разрешение? При таком раскладе это можно будет все назад поставить, а мне(ему) надо чтобы он вообще неудаляемый был..
Напиши дров, в нём открой этот файл (NtCreateFile) перехвати NtClose и запрети закрытие хендла возвращённого NtCreateFile.
создай юзера, создай ACL на нужный файл, права только юзеру присвой, потом юзера снеси (при условии отсутствия дефолтных прав в ACL на данный файл для админа и системы, с сохранением READ для Everyone) - и файл будет неудаляем.
А заодно снимать с файла копию, и постоянно проверять, есть ли сам файл на месте. И если он всё-таки удалён - восстановить! Тогда удаление файла ничего не даст - он тут же восстановится.
Так вроде и перехватывать ничего не обязательно,можно же просто написать драйвер след содержания: Код (Text): NTSTATUS DriverEntry(PDRIVER_OBJECT _1, PUNICODE_STRING _2) { HANDLE hFile; UNICODE_STRING uPath; OBJECT_ATTRIBUTES fileAttr; IO_STATUS_BLOCK stBlock; RtlInitUnicodeString(&uPath, FILE_NAME); InitializeObjectAttributes(&fileAttr, &uPath, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL); ZwCreateFile( &hFile, FILE_READ_DATA, &fileAttr, &stBlock, 0, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE,// тут как удобней FILE_OPEN_IF, 0, NULL, 0 ); return STATUS_UNSUCCESSFUL; } и поставить его в запуск при загрузке, правда все решает удаление соответствующего ключа и перезагрузка, но можно и ключ-то скрыть =)
Тогда можно открыть файл с SHARE_MODE = 0 и пока открывшая программа жива, файл недоступен будет по удалению и по открытию сторонними программами.
Сравнительная табличка возможностей тулзов решающих проблему удаления Программа восстановливающая файл отслеживается чем нибудь типа DiskMona Короче соревнование брони и снаряда вечно Так что абсолютной защиты точно не получится, а хорошая защита ИМХО должна быть многоступенчатой и уметь хорошо прятаться в том числе и от антивирусов, которые будут к ней очень подозрительно относиться
Y_Mur Не знаю - не знаю. У меня на винте есть мёртвая пустая папка, имя которой заканчивается точкой. В принципе создаётся такое беспроблемно с помощью ZwCreateFile. Тогда попытки Win32 API по работе с такими файлами/папками проваливаются. А Native API нормально работают. Но именно с этой папкой ничего нельзя сделать: ZwDeleteFile и ZwSetInformationFile возвращают успех, но ничего не меняется. Unlocker говорит, что хэндлы все закрыты, а при попытке удалить Unlocker'ом эту папку, он подтверждает удаление, хотя папка остаётся на месте. chkdsk ошибок не находит. Видимо на существующих на данный момент багах NTFS можно все-таки организовать хотя бы временно "абсолютную защиту".
Velheart Без перехвата NtClose можно спокойно удалить Ulocker-ом. Y_Mur Унлокер обламывается когда не может закрыть хендл. Так что перехват NtClose решает все проблеммы.
Спрятать файл в какой нить другой файл системный... Чтобы не имел собственного расширения-имени. Тогда и удалять нечего будет...
В свое время с лини (может и кноппиксом-3.1) без каких-либо вывертов записал некую инфу на ХРшную нтфс. Все нормально читалось, но удалить совершенно никак не получалось. Ни файлы, ни папки. Так и жило. Может и щас живет, давно не заглядывал на тот диск.
2FED Это только если не использовать режим удаления при перезагрузке l_inc Файл\папка с недопустимым символом в имени неплохой антиламерский приём против тех кто не начинал свою карьеру со старого доброго Нортон Коммандера ) - сей раритет чудесно удаляет такие файлы (под Win без перегрузки в DOS). Впрочем любая прога, обратившаяся к такому файлу по DOS имени, может делать с ним что захочет через обычные API Кстати в той табличке Унлокера удаление таких файлов тоже заявлено, правда сам не пробовал. ЗЫ: абсолютной защиты не получится - будет лишь вопрос квалификации удаляющего