Створюємо рекурсивні ярлики в windows

Всі ми знаємо що таке ярлик.
А що буде якщо зробити посилання ярлика самого на себе?
Створення ярлика на ярлик призводить до його копіювання.
Але що буде якщо примусово створити по байтовими такий ярлик?

Але розповім я не про це, а про те як можна створити папку від виду якої всі програми вилітають з помилками.
Так, тільки від виду, на папку навіть клікнути не встигнете.

Зайти в таку папку звичайними файловими менеджерами буде неможливо.

Створюємо рекурсивні ярлики в windows

Але тут не обійшлося без ярлика і я розповім як це зробити і для чого можна використовувати.

Передісторія

Коли я вчився в університеті то було повно часу і я вивчав Windows усіма можливими способами.
Перерив все папки системи, весь реєстр, шукав глюки і знаходив їх.
Це було давно, але я згадав про один цікавий «глюк» про який розповім в цій статті.

Одного разу я помітив що якщо перетягнути будь-яку папку в Пуск => Всі програми, то там створюється не ярлик а папка.
Її можна перетягнути звідти на робочий стіл, вона буде виглядати як папка але вести себе як ярлик.
Це мене спантеличило і я почав копати глибше.
Виявив що такі папки самі створюються в «мережевому оточенні» і поводяться так само.

Зрозумів що побачити «справжні» нутрощі папки за допомогою провідника неможливо.
Запустивши консоль я зміг дістатися до файлів всередині.

Там були два файли: desktop.ini і target.lnk

Створюємо рекурсивні ярлики в windows

Якщо перейменувати або видалити один з файлів то провідник почне показувати справжню внутрішність.

У файлі desktop.ini виявив наступний текст:

А ярлик посилався на ту папку яку я створив на початку.

Мене це зацікавило, оскільки зрозумів що всередині такої папки можуть бути ще файли і їх ніхто не побачить.
В університеті все комп'ютери були з обмеженим доступом.
І мою папку з особистими файлами міг видалити будь-який студент а комп'ютера у мене тоді не було.
І флешок тоді не було. Дискети не надійні, так що зберігати свої файли на університетських комп'ютерах було небезпечно.

Я порався далі з цікавою папкою і пробував заміняти файл target.lnk на свій і дивитися що вийде.
Можна міняти іконку ярлика і іконка папки теж змінювалася.

І тут я створив ярлик на той же файл desktop.ini і перейменував його на target.lnk

Створюємо рекурсивні ярлики в windows


Такому ефекту я відразу не повірив, і не зрозумів в чому ж справа.
Після перейменування провідник відразу ж видав помилку і перезапустився.
Я поліз назад в створену папку і як тільки побачив її то провідник знову вилетів.

Я почав досліджувати дивний ефект і зрозумів що провідник намагався отримати властивості папки-ярлика і вони перенаправлялись на саму папку ще раз в підсумку виходить зациклення.
Пробував заходити в папку різними програмами, і навіть Total Commander нехай трохи пізніше, але вилітав при спробі зайти в неї.
Зайти в неї вдавалося тільки за допомогою консолі.

І я зрозумів що ця папка буде добре зберігати мої дані і ніхто зі студентів не зможе навіть клацнути мишкою на неї щоб видалити.

Послідовність дій

Далі я розповім як зробити таку папку, відв'язати прив'язку до шляху, і як створити на флешці таку «захищену» папку яка б «працювала» як годиться на всіх комп'ютерах.

Для того щоб папка-вбивця ярлик працювала як годиться має бути наступне:
  • у папки повинен бути атрибут System
  • в папці повинен бути файл desktop.ini з правильним контентом
  • в папці повинен бути ярлик target.lnk який посилається на файл desktop.ini в цій же папці
При створенні такої папки використовуючи провідник є підводні камені
  • атрибут System для папки повинен бути заданий до створення внутрішніх файлів
  • треба спочатку записати дані в desktop.ini і тільки після цього ставити його в папку
Створюємо «захищену» папку яка працює на всіх файлових системах Windows
  1. створити порожню папку, бажано не на робочому столі
  2. створити підпапку і покласти туди ваші дані і запам'ятати шлях
  3. задати початкової папці атрибут System
  4. створити текстовий файл desktop.txt і записати в нього дані як написано вище
  5. перейменувати desktop.txt на desktop.ini
  6. створити ярлик на desktop.ini під назвою target.lnk і провідник перезапуститься

Для автоматизації створення такої папки я написав скрипт:

Його треба зберегти в файл під назвою mkFolderKiller.vbs і папку перетягувати на нього.

Прив'язка шляху до захищеної папці

Нам треба створити порожню папку в такому місці в яке користувач не зможе залізти.
Наприклад глибоко в файлах системи (якщо є доступ).
Задаємо їй атрибут System і пишемо туди файл desktop.ini але не поспішаємо робити ярлик.

Тепер на іншому диску там де повинна бути папка з даними робимо те ж, наприклад на D :.
І беремо ярлик файлу desktop.ini з диска С: і кладемо в папку що на диску D:
Тільки після цього робимо ярлик в папці диска C:

Захист папки на флешці

Кожен може створити собі цю папку, заради забави, заради тестів або заради примітивної захисту.

Чи є це надійним захистом?

Звичайно ж ні, є багато інших способів надійніше.
Для досвідченого користувача не складе труднощів розібратися і потрапити в таку «захищену» папку.
Але це спантеличить на деякий час. А прості користувачі і зовсім не зможуть потрапити туди.

На яких версіях Windows ця папка буде «працювати»?
Чи приносить шкоду ця папка комп'ютера?

Звичайно ж ні, все що вона робить це зациклює процес який хоче отримати до неї доступ, і це призводить до його перезапуску.

Якщо не терпиться спробувати

Можете скачати файл за посиланням ShortcutKiller.rar
розпакувати його в папку C: TEMP1234 і перезайти в неї.
В архіві є папка 1 з двома файлами desktop.ini і target.lnk прив'язаними тільки до цього шляху.

Сподіваюся статися була, Ваша думка дуже що у мене вийшло добре все пояснити.
Я знаходив ще багато різних глюків про які ніде не написано, може розповім іншим разом :)

Буду вдячний за зауваження про помилки тексту в личку.

Схожі статті