Надо создать неудаляемый файл

Тема в разделе "WASM.BEGINNERS", создана пользователем MEPOX, 19 авг 2008.

  1. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Надо создать неудаляемый файл.. Может кто знает как? (Этот вопрос не я придумал, просто меня попросили с этим разобраться, а у меня нет идей как это сделать предлагал просто удалить его из индексов -- не катит) В общем даже не знаю че делать.. может кто поможет? =)
     
  2. Johnikum

    Johnikum Member

    Публикаций:
    0
    Регистрация:
    6 июн 2003
    Сообщения:
    97
    Какая файловая система?
    Не удаляемый для кого, для пользователя или для системы?
     
  3. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Система я так понял ntfs.. неудаляемый для системы
     
  4. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Форматирование его так или иначе удалит.
    А вообще, наверняка и для NTFS, по аналогии с FAT, существуют методы, которыми можно пометить дисковый кластер как Bad. Хотя не уверен - с НТФС никогда не работал...
     
  5. Johnikum

    Johnikum Member

    Публикаций:
    0
    Регистрация:
    6 июн 2003
    Сообщения:
    97
    Настроить разрешение в NTFS только для чтения.
     
  6. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Не понял.. что за разрешение? При таком раскладе это можно будет все назад поставить, а мне(ему) надо чтобы он вообще неудаляемый был..
     
  7. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Напиши дров, в нём открой этот файл (NtCreateFile) перехвати NtClose и запрети закрытие хендла возвращённого NtCreateFile.
     
  8. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Спасибо.. только эту бурду для компиляции дров скачаю и попробую=)
     
  9. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    создай юзера, создай ACL на нужный файл, права только юзеру присвой, потом юзера снеси (при условии отсутствия дефолтных прав в ACL на данный файл для админа и системы, с сохранением READ для Everyone) - и файл будет неудаляем.
     
  10. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    А если админ откроет свойства и поменяет? Я этот вариант уже предлагал мне сказали что это фигня..
     
  11. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    любой Адblн может стать владельцем и поменять права
     
  12. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    А заодно снимать с файла копию, и постоянно проверять, есть ли сам файл на месте. И если он всё-таки удалён - восстановить! Тогда удаление файла ничего не даст - он тут же восстановится.
     
  13. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Так вроде и перехватывать ничего не обязательно,можно же просто написать драйвер след содержания:
    Код (Text):
    1. NTSTATUS
    2. DriverEntry(PDRIVER_OBJECT _1, PUNICODE_STRING _2)
    3. {
    4.  
    5.     HANDLE hFile;
    6.     UNICODE_STRING uPath;
    7.     OBJECT_ATTRIBUTES fileAttr;
    8.     IO_STATUS_BLOCK stBlock;
    9.  
    10.     RtlInitUnicodeString(&uPath, FILE_NAME);
    11.    
    12.     InitializeObjectAttributes(&fileAttr, &uPath, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
    13.    
    14.     ZwCreateFile(
    15.         &hFile,
    16.         FILE_READ_DATA,
    17.         &fileAttr,
    18.         &stBlock,
    19.         0,
    20.         FILE_ATTRIBUTE_NORMAL,
    21.         FILE_SHARE_READ | FILE_SHARE_WRITE,// тут как удобней
    22.         FILE_OPEN_IF,
    23.         0,
    24.         NULL,
    25.         0 );
    26.  
    27.     return STATUS_UNSUCCESSFUL;
    28. }
    и поставить его в запуск при загрузке, правда все решает удаление соответствующего ключа и перезагрузка, но можно и ключ-то скрыть =)
     
  14. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    Тогда можно открыть файл с SHARE_MODE = 0 и пока открывшая программа жива, файл недоступен будет по удалению и по открытию сторонними программами.
     
  15. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Сравнительная табличка возможностей тулзов решающих проблему удаления ;)
    Программа восстановливающая файл отслеживается чем нибудь типа DiskMona ;)
    Короче соревнование брони и снаряда вечно ;)
    Так что абсолютной защиты точно не получится, а хорошая защита ИМХО должна быть многоступенчатой и уметь хорошо прятаться в том числе и от антивирусов, которые будут к ней очень подозрительно относиться ;)
     
  16. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Y_Mur
    Не знаю - не знаю. У меня на винте есть мёртвая пустая папка, имя которой заканчивается точкой. В принципе создаётся такое беспроблемно с помощью ZwCreateFile. Тогда попытки Win32 API по работе с такими файлами/папками проваливаются. А Native API нормально работают. Но именно с этой папкой ничего нельзя сделать: ZwDeleteFile и ZwSetInformationFile возвращают успех, но ничего не меняется. Unlocker говорит, что хэндлы все закрыты, а при попытке удалить Unlocker'ом эту папку, он подтверждает удаление, хотя папка остаётся на месте. chkdsk ошибок не находит.
    Видимо на существующих на данный момент багах NTFS можно все-таки организовать хотя бы временно "абсолютную защиту".
     
  17. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Velheart Без перехвата NtClose можно спокойно удалить Ulocker-ом.
    Y_Mur Унлокер обламывается когда не может закрыть хендл. Так что перехват NtClose решает все проблеммы.
     
  18. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Спрятать файл в какой нить другой файл системный... Чтобы не имел собственного расширения-имени. Тогда и удалять нечего будет...
     
  19. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    В свое время с лини (может и кноппиксом-3.1) без каких-либо вывертов записал некую инфу на ХРшную нтфс. Все нормально читалось, но удалить совершенно никак не получалось. Ни файлы, ни папки. Так и жило. Может и щас живет, давно не заглядывал на тот диск.
     
  20. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    2FED
    Это только если не использовать режим удаления при перезагрузке ;)

    l_inc
    Файл\папка с недопустимым символом в имени неплохой антиламерский приём против тех кто не начинал свою карьеру со старого доброго Нортон Коммандера ;)) - сей раритет чудесно удаляет такие файлы (под Win без перегрузки в DOS). Впрочем любая прога, обратившаяся к такому файлу по DOS имени, может делать с ним что захочет через обычные API ;)

    Кстати в той табличке Унлокера удаление таких файлов тоже заявлено, правда сам не пробовал.

    ЗЫ: абсолютной защиты не получится - будет лишь вопрос квалификации удаляющего ;)