Всі ми знаємо що таке ярлик.
А що буде якщо зробити посилання ярлика самого на себе?
Створення ярлика на ярлик призводить до його копіювання.
Але що буде якщо примусово створити по байтовими такий ярлик?
Але розповім я не про це, а про те як можна створити папку від виду якої всі програми вилітають з помилками.
Так, тільки від виду, на папку навіть клікнути не встигнете.
Зайти в таку папку звичайними файловими менеджерами буде неможливо.
Але тут не обійшлося без ярлика і я розповім як це зробити і для чого можна використовувати.
Передісторія
Коли я вчився в університеті то було повно часу і я вивчав Windows усіма можливими способами.
Перерив все папки системи, весь реєстр, шукав глюки і знаходив їх.
Це було давно, але я згадав про один цікавий «глюк» про який розповім в цій статті.
Одного разу я помітив що якщо перетягнути будь-яку папку в Пуск => Всі програми, то там створюється не ярлик а папка.
Її можна перетягнути звідти на робочий стіл, вона буде виглядати як папка але вести себе як ярлик.
Це мене спантеличило і я почав копати глибше.
Виявив що такі папки самі створюються в «мережевому оточенні» і поводяться так само.
Зрозумів що побачити «справжні» нутрощі папки за допомогою провідника неможливо.
Запустивши консоль я зміг дістатися до файлів всередині.
Там були два файли: desktop.ini і target.lnk
Якщо перейменувати або видалити один з файлів то провідник почне показувати справжню внутрішність.
У файлі desktop.ini виявив наступний текст:
А ярлик посилався на ту папку яку я створив на початку.
Мене це зацікавило, оскільки зрозумів що всередині такої папки можуть бути ще файли і їх ніхто не побачить.
В університеті все комп'ютери були з обмеженим доступом.
І мою папку з особистими файлами міг видалити будь-який студент а комп'ютера у мене тоді не було.
І флешок тоді не було. Дискети не надійні, так що зберігати свої файли на університетських комп'ютерах було небезпечно.
Я порався далі з цікавою папкою і пробував заміняти файл target.lnk на свій і дивитися що вийде.
Можна міняти іконку ярлика і іконка папки теж змінювалася.
І тут я створив ярлик на той же файл desktop.ini і перейменував його на target.lnk
Такому ефекту я відразу не повірив, і не зрозумів в чому ж справа.
Після перейменування провідник відразу ж видав помилку і перезапустився.
Я поліз назад в створену папку і як тільки побачив її то провідник знову вилетів.
Я почав досліджувати дивний ефект і зрозумів що провідник намагався отримати властивості папки-ярлика і вони перенаправлялись на саму папку ще раз в підсумку виходить зациклення.
Пробував заходити в папку різними програмами, і навіть Total Commander нехай трохи пізніше, але вилітав при спробі зайти в неї.
Зайти в неї вдавалося тільки за допомогою консолі.
І я зрозумів що ця папка буде добре зберігати мої дані і ніхто зі студентів не зможе навіть клацнути мишкою на неї щоб видалити.
Послідовність дій
Далі я розповім як зробити таку папку, відв'язати прив'язку до шляху, і як створити на флешці таку «захищену» папку яка б «працювала» як годиться на всіх комп'ютерах.
Для того щоб папка-вбивця ярлик працювала як годиться має бути наступне:
- у папки повинен бути атрибут System
- в папці повинен бути файл desktop.ini з правильним контентом
- в папці повинен бути ярлик target.lnk який посилається на файл desktop.ini в цій же папці
При створенні такої папки використовуючи провідник є підводні камені
- атрибут System для папки повинен бути заданий до створення внутрішніх файлів
- треба спочатку записати дані в desktop.ini і тільки після цього ставити його в папку
Створюємо «захищену» папку яка працює на всіх файлових системах Windows
- створити порожню папку, бажано не на робочому столі
- створити підпапку і покласти туди ваші дані і запам'ятати шлях
- задати початкової папці атрибут System
- створити текстовий файл desktop.txt і записати в нього дані як написано вище
- перейменувати desktop.txt на desktop.ini
- створити ярлик на desktop.ini під назвою target.lnk і провідник перезапуститься
Для автоматизації створення такої папки я написав скрипт:
Його треба зберегти в файл під назвою mkFolderKiller.vbs і папку перетягувати на нього.
Прив'язка шляху до захищеної папці
Нам треба створити порожню папку в такому місці в яке користувач не зможе залізти.
Наприклад глибоко в файлах системи (якщо є доступ).
Задаємо їй атрибут System і пишемо туди файл desktop.ini але не поспішаємо робити ярлик.
Тепер на іншому диску там де повинна бути папка з даними робимо те ж, наприклад на D :.
І беремо ярлик файлу desktop.ini з диска С: і кладемо в папку що на диску D:
Тільки після цього робимо ярлик в папці диска C:
Захист папки на флешці
Кожен може створити собі цю папку, заради забави, заради тестів або заради примітивної захисту.
Чи є це надійним захистом?
Звичайно ж ні, є багато інших способів надійніше.
Для досвідченого користувача не складе труднощів розібратися і потрапити в таку «захищену» папку.
Але це спантеличить на деякий час. А прості користувачі і зовсім не зможуть потрапити туди.
На яких версіях Windows ця папка буде «працювати»?
Чи приносить шкоду ця папка комп'ютера?
Звичайно ж ні, все що вона робить це зациклює процес який хоче отримати до неї доступ, і це призводить до його перезапуску.
Якщо не терпиться спробувати
Можете скачати файл за посиланням ShortcutKiller.rar
розпакувати його в папку C: TEMP1234 і перезайти в неї.
В архіві є папка 1 з двома файлами desktop.ini і target.lnk прив'язаними тільки до цього шляху.
Сподіваюся статися була, Ваша думка дуже що у мене вийшло добре все пояснити.
Я знаходив ще багато різних глюків про які ніде не написано, може розповім іншим разом :)
Буду вдячний за зауваження про помилки тексту в личку.