Як створюються символьні посилання? Можна для цього написати програму. а можна скористатися існуючими утилітами. У Windows 7 для цього є консольна програма mklink.
Крім того, існує утиліта Junction з набору програм Sysinternals.
Якщо в локальній мережі або в мережі підприємства у кого-то є доступ до вашого комп'ютера, то він може змусити вас:
- зберігати дані не туди, куди ви очікуєте;
- змусити вас запустити щось не звідти, звідки ви очікуєте.
Адже ніхто не перевіряє перед збереженням, чи не є цільова папка символічним посиланням? Та й не відразу збагнеш, як це зробити.
Cімлінкі всередині влаштовані складно. Всередині у них ховається більш потужний механізм - reparse points.
З файлу можна робити не тільки симлінк, а й взагалі приєднувати довільні дані, причому такий файл в системі буде виглядати мертвим. На всі операції з файлом система буде видавати «Помилка 0x80070780. Доступ до цього файлу з системи відсутній ». Ні видалити файл, ні перейменувати його стандартними засобами не вийде.
Все ж в системі є інструмент для роботи з reparse-даними, доступний в командному рядку, це утиліта fsutil:
Сенс в тому, що здогадатися про те, що файл є reparse-файлом важко. У повідомленні про помилку не говориться ні слова про точки повторної обробки.
C допомогою створеного reparse-файлу заховати відразу багато даних, щоб не знайшли. Робиться це так:
- Створюється порожній файл file;
- До нього чіпляється NTFS-потік file: stream. Причепити потік до файлу можна, наприклад, за допомогою програми NTFS Stream Explorer;
- У потік записується довільну кількість даних, можна навіть з'їсти дитину все вільне місце користувача;
- У файл записуються reparse-дані, після чого він стає або недоступний, або виглядає як простий симлінк.
Фішка в тому, що причеплений потік нікуди не дівається, але поки у файлу є reparse-дані, потік ніяк назад не витягти і навіть не можна сказати, є він у файлу чи ні.
Як же його назад витягти? Потрібно видалити reparse-дані, file стане назад звичайним файлом, file: stream знову можна буде відкрити і прочитати. Тобто можна таким чином добре заховати архів з чимось секретним або вбити вільний простір на чужому диску, користувач нізащо не знайде, куди воно пішло.