Как вы используете альтернативные потоки данных и каковы преимущества?

Я прочитал некоторые документы о Alternate Data Streams и я думаю об использовании их в моих собственных проектах. Однако у меня так много неизвестных знаний и открытых вопросов, которые у меня есть до того, как я решу их использовать. Вот почему я составил этот список вопросов:

  1. Как вы перечисляете Streams без инструмента Sysinternals streams?
  2. Влияет ли поток на значение MD5 файла "Host"?
  3. Что произойдет, если я скопирую / обрежу файл "Host" в другой путь (NTFS)? Потоки тоже копируют / режут себя?
  4. Что произойдет, если я скопирую / обрежу файл "Host" в другой путь, который НЕ является NTFS?
  5. Возможно ли иметь другой поток в существующем потоке?
  6. Поскольку у вас будет фактический дескриптор файла для каждого потока, возможно ли изменить атрибуты потока?
  7. Могу ли я использовать LoadLibrary API для загрузки DLL из потока?
  8. Можно ли выполнить (например, ShellExecute) поток?
  9. Каковы преимущества / преимущества / недостатки использования Alternate Data Streams?
  10. Что я должен быть осторожен, если я использую Alternate Data Streams?

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

1 ответ

Решение

Многие ваши вопросы описаны здесь: http://flexhex.com/docs/articles/alternate-streams.phtml

  1. Перечисление: Использование NtQueryInformationFileсм. ссылку. Начиная с Windows Vista, вы также можете перечислять потоки в командной строке, используя dir /r,

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

  3. Копирование в NTFS: Windows Explorer и утилита копирования командной строки копируют все потоки.

  4. Копирование в другую ФС: альтернативные потоки данных теряются.

  5. Вложенные потоки: Нет, файл просто состоит из списка потоков, они не могут быть вложенными.

  6. Атрибуты: некоторые атрибуты основаны на файлах, некоторые (зашифрованные, сжатые, разреженные) основаны на потоке.

  7. LoadLibrary кажется, работает на альтернативных потоках данных.

  8. ShellExecute на ADS не удалось с ERROR_FILE_NOT_FOUND (2) на моем компьютере.

    Обратите внимание, что теоретически возможно запустить ADS из командной строки:

    type calc.exe > dummy.txt:calc

    wmic process call create "dummy.txt:calc"

  9. ADS полезны для хранения некритической информации, связанной с файлом. Например, исполняемые файлы, загруженные из Интернета, будут иметь ADS, что заставит Explorer отображать предупреждение перед выполнением файла.

  10. Смотрите ссылку. В частности, не используйте их для важных данных.

Другие вопросы по тегам