Как срятать файл

Тема в разделе "WASM.WIN32", создана пользователем vns955, 4 окт 2005.

  1. vns955

    vns955 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2005
    Сообщения:
    11
    Адрес:
    Ukraine
    Народ подскажите плз как спрятать файл в винде (можно под админом),

    только так чтобы после выхода из проги он был по-прежнему невидим (т.е. перехват API не катит),

    а потом надо при нажатии другой кнопки на форме сделать его видимым.
     
  2. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Зделай перехват в драйвере.
     
  3. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    сформулируй по русски

    от кого ты собрался его прятать



    пока из твоей формулировки ясно , что сделать это проще простого - закрой глаза и будет тебе файл невидимый
     
  4. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    Если файловая система NTFS то создай дополнительный поток в любом файле. А при нажатии твоей клавиши создавай файл и копируй в него этот поток. Работа с потоками есть на сайте sysinternals. Создать свой поток можно хоть с ком.строки.
     
  5. vns955

    vns955 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2005
    Сообщения:
    11
    Адрес:
    Ukraine
    ни от кого я прятать не собираюсь - надо чтоб файл был, но его файловые менеджеры не видели (при этом папка как была такой она должна остаться - на другие объекты папки это не должно влиять). Затем при нажатии на кнопку Сделать видимым (в моей проге) - всё должно быть как до этого, т.е. - файл виден.
     
  6. vns955

    vns955 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2005
    Сообщения:
    11
    Адрес:
    Ukraine
    А по-поводу потоков: при этом характеристики любых других файлов не дожны меняться - а если копировать в поток - то возрастёт размер. И вообще кроме того файла кот необходимо спрятать вообще может ничего не быть.
     
  7. ravenX

    ravenX New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2005
    Сообщения:
    4
    Я тут на днях дривер писал и долго не мог понять почему это я объект 'device' не могу открыть. Потом догнал что я длину в RTL_STRING неправильно установил и у меня название на 0 заканчивалось. Кернелу и сайсу по барабану а CreateFile обламывается.

    Предлагаю заюзать native api и создать такой же файл с 0 в середине. Юзать native api можно из ntdll из юзермода так что драйвер писать не надо
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    vns955



    Учите матчасть: "размер файла" в ntfs — это размер неименованного потока $DATA, остальные потоки "не видно" совершенно стандартными средствами.
     
  9. vns955

    vns955 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2005
    Сообщения:
    11
    Адрес:
    Ukraine
    да с потоками я понял - но ведь и дата создания файла изменится
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    SetFileTime?
     
  11. vns955

    vns955 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2005
    Сообщения:
    11
    Адрес:
    Ukraine
    ravenX



    брось плз ссылку где мона почитать про native api и ntdll (жел-но на русском и примерами кода)



    Чуть не забыл - если так делать, то при этом другие проги не смогут обращаться к этому файлу?

    мне надо чтобы это не влияло на работу других прог - только сделать невидимый файл и всё!
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    ravenX

    На этом же основан один из методов сокрытия (или просто блокировки) веток реестра.
     
  13. vns955

    vns955 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2005
    Сообщения:
    11
    Адрес:
    Ukraine
    IceStudent



    так значит он будет просто скрыт а проги будут его по-прежнему юзать?
     
  14. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Нет, наоборот, все будут видеть, но читать не смогут.



    А тебе нужно только чтобы ФМ не видели, а остальные проги работали? Как ты себе это представляешь? Тут только перехватывать и смотреть, кто запрашивает файл, имхо.
     
  15. vns955

    vns955 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2005
    Сообщения:
    11
    Адрес:
    Ukraine
    IceStudent



    ну да - ты правильно понял - чтобы ФМ не видели. Перехватывать нельзя т.к. заказчик требует чтобы когда прогу закрываешь - они также невидимы.

    А что т.к. предлагал ravenX нельзя (создать файл с 0 в имени)?
     
  16. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    т.е. есть некий файл Secret.dat, который не показывается в Проводнике (Explorer.exe), Far (Far.exe), TC (TotalCmd.exe) etc, а твоя прога его при этом видит, при этом после закрытия проги этот файл не видит никто?

    в таком случае лучше идти от обратного - кто может видеть файл? только твоя прога?

    тогда зачем этот файл хранить в открытом виде, если кроме твоей проги его всё равно никто не видит?

    приведи конкретный пример.

    чего _конкретно_ хочет заказчик?

    чтобы Secret.dat видела только твоя прога или ?
     
  17. vns955

    vns955 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2005
    Сообщения:
    11
    Адрес:
    Ukraine
    Я должен сделать прогу, в кот. есть две кнопки "Сделать невидимым" и "Сделать видимым". При нажатии на первую некий файл (путь к которому и имя будет указано в EditBox) становится невидим для стандартных ФМ (ехплорер, фар, тотал). Затем при выходе из неё - он также невидим. При этом все проги, которым нужен доступ к этому файлу имеют такой же доступ и используют его как и раньше (например это может быть даже файл системный). Затем я снова запускаю прогу и нажимаю на вторую кнопку - теперь он видим из ФМ.
     
  18. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    C:\>echo GOOD >hello.txt:shadow



    C:\>more <hello.txt:shadow

    GOOD



    C:\>



    Ты создаешь поток shadow и записываешь в него данные. Поток идентифицируется через ":". Так сделали для того чтоб не менять API. Это работает лишь на NTFS.
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    DelExe

    Jupiter

    Ему нужно, чтобы файл не показывали стандартные файловые менеджеры. То есть, по сути, нужно скрывать от их FindFirstFile/FindNextFile. При этом другие проги могут работать с файлом: CreateFile должен отрабатывать нормально.
     
  20. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Блин, а чем обычные апихуки не катят? Это просто реализуется в драйвере и надежно работает.

    Приведу даже код обработчика ZwQueryDirectoryFile (скрытые файлы не палятся даже прогой flister).



    []



    Из этого кода вызывается функция RkIsTrueProcess проверяющая, может ли процесс видеть скрытые файлы и функция RkIsFileHidden проверяющая, является ли файл скрытым.