- PVSM.RU - https://www.pvsm.ru -
Все мы знаем что такое ярлык.
А что будет если сделать ссылку ярлыка самого на себя?
Создание ярлыка на ярлык приводит к его копированию.
Но что будет если принудительно создать по байтово такой ярлык?
Но расскажу я не об этом, а о том как можно создать папку от вида которой все программы вылетают с ошибками.
Да, только от вида, на папку даже кликнуть не успеете.
Зайти в такую папку обычными файловыми менеджерами будет невозможно.
Но тут не обошлось без ярлыка и я расскажу как это сделать и для чего можно использовать.
Когда я учился в университете то было полно времени и я изучал Windows всеми возможными способами.
Перерыл все папки системы, весь реестр, искал глюки и находил их.
Это было давно, но я вспомнил про один интересный «глюк» о котором расскажу в этом посте.
Однажды я заметил что если перетащить любую папку в Пуск=>Все программы, то там создается не ярлык а папка.
Ее можно перетащить оттуда на рабочий стол, она будет выглядеть как папка но вести себя как ярлык.
Это меня озадачило и я начал копать глубже.
Обнаружил что такие папки сами создаются в «Сетевом окружении» и ведут себя так же.
Понял что увидеть «настоящие» внутренности папки с помощью проводника невозможно.
Запустив консоль я смог добраться к файлам внутри.
Там были два файла: desktop.ini и target.lnk
Если переименовать или удалить один из файлов то проводник начнет показывает настоящую внутренность.
В файле desktop.ini обнаружил следующий текст:
[.ShellClassInfo]
CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Flags=2
А ярлык ссылался на ту папку которую я создал в начале.
Меня это заинтересовало, поскольку понял что внутри такой папки могут быть еще файлы и их никто не увидит.
В университете все компьютеры были с ограниченным доступом.
И мою папку с личными файлами мог удалить любой студент а компьютера у меня тогда не было.
И флешек тогда не было. Дискеты не надежны, так что хранить свои файлы на университетских компьютерах было не безопасно.
И я понял что мои файлы в такой папке никто не увидит, а получить доступ к своей папки я могу по прямому адресу внутри папки-ярлыка.
Но это не давало защиты персональным файлам, папку все-равно могли удалить и мои данные потеряются.
Я возился дальше с интересной папкой и пробовал заменять файл target.lnk на свой и смотреть что получится.
Можно менять иконку ярлыка и иконка папки тоже менялась.
И тут я создал ярлык на тот же файл desktop.ini и переименовал его на target.lnk
Такому эффекту я сразу не поверил, и не понял в чем же дело.
После переименования проводник сразу же выдал ошибку и перезапустился.
Я полез обратно в созданную папку и как только увидел ее то проводник опять вылетел.
Я начал исследовать странный эффект и понял что проводник пытался получить свойства папки-ярлыка и они перенаправлялись на саму папку еще раз в итоге получается зацикливание.
Пробовал заходить в папку разными программами, и даже Total Commander пусть чуть позже, но вылетал при попытке зайти в нее.
Зайти в нее удавалось только с помощью консоли.
И я понял что эта папка будет хорошо хранить мои данные и никто из студентов не сможет даже щелкнуть мышкой на нее чтобы удалить.
Дальше я расскажу как сделать такую папку, отвязать привязку к пути, и как создать на флешке такую «защищенную» папку которая бы «работала» как положено на всех компьютерах.
Теперь надо заходить в вашу подпапку только по адресу и желательно не в проводнике (из-за сохранения предидущих путей).
Например в консоли написать explorer.exe <адрес папки> и история не будет сохранена чтобы никто не вычислил путь.
Для автоматизации создания такой папки я написал скрипт:
Dim arg, WSHShell, fsobj, file, link
Set arg = WScript.Arguments
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fsobj = WScript.CreateObject("Scripting.FileSystemObject")
If arg.Length = 0 Then
WSHShell.Popup "Перетащите папку на этот файл"
End If
If arg.Length > 0 Then
'Задаем атрибут папки Системный
fsobj.GetFolder(arg(0)).Attributes = 1
'Пишем файл desktop.ini
Set file = fsobj.OpenTextFile(arg(0) + "desktop.ini", 2, True)
file.Write "[.ShellClassInfo]" + vbCrLf
file.Write "CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}" + vbCrLf
file.Write "Flags=2" + vbCrLf
file.Close
'Создаем ярлык target.lnk который ссылается на desktop.ini
Set link = WSHShell.CreateShortcut(arg(0) + "target.lnk")
link.TargetPath = arg(0) + "desktop.ini"
link.Save
WSHShell.Popup "Папка-убийца создана"
End If
Его надо сохранить в файл под названием mkFolderKiller.vbs и папку перетаскивать на него.
Созданная папка будет строго зависеть от ее первоначального адреса.
Если ее переименовать тогда можно будет в нее зайти.
И я нашел решение, хоть и не идеальное, но позволяет менять адрес папки.
Нам надо создать пустую папку в таком месте в которое пользователь не сможет залезть.
Например глубоко в файлах системы (если есть доступ).
Задаем ей атрибут System и пишем туда файл desktop.ini но не спешим делать ярлык.
Теперь на другом диске там где должна быть папка с данными делаем то же, например на D:.
И берем ярлык файла desktop.ini с диска С: и кладем в папку что на диске D:
Только после этого делаем ярлык в папке диска C:
В результате папка что на диске D: будет исполнять свою «функцию» которая нам нужна даже если менять ее адрес.
Тут особо говорить нечего.
Думаю многие догадались что можно создать папку, в которой будут «защищенные» папки для всех букв алфавита.
А доступ к вашей защищенной папке можете получить только вы, зная полный адрес.
Каждый может создать себе эту папку, ради забавы, ради тестов или ради примитивной защиты.
Конечно же нет, есть много других способов надежнее.
Для опытного пользователя не составит труда разобраться и попасть в такую «защищенную» папку.
Но это озадачит на некоторое время. А простые пользователи и вовсе не смогут попасть туда.
Лично я проводил все эксперименты в университете на Windows XP и 2000.
И со временем на Windows Vista, 7 и Windows 8.
В не зависимости от разрядности системы оно работает на всех версиях.
Конечно же нет, все что она делает это зацикливает процесс который хочет получить к ней доступ, и это приводит к его перезапуску.
Можете скачать файл по ссылке ShortcutKiller.rar [1]
распаковать его в папку C:TEMP1234 и перезайти в нее.
В архиве есть папка 1 с двумя файлами desktop.ini и target.lnk привязанными только к этому пути.
Надеюсь статься была вам интересна и что у меня получилось хорошо все объяснить.
Я находил еще много разных глюков про которые нигде не написано, может расскажу в другой раз :)
Буду благодарен за замечания об ошибках текста в личку.
Автор: IGHOR
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/rekursiya/16131
Ссылки в тексте:
[1] ShortcutKiller.rar: https://dl.dropbox.com/u/860231/ShortcutKiller.rar
Нажмите здесь для печати.