===================================================================== AJPapps - WII license key protection plug-in 1.00 Plugin for WhereIsIt? version 3.xx Линда Кайе 2007. Посвящается Ариэль lindakaioh@mail.ru ===================================================================== Эта библиотека - плагин для каталогизатора Where Is It? третьей версии. Последнюю версию программы Вы можете скачать на http://whereisit-soft.com и там же потратить часть своих денег на регистрацию v_v Этот плагин призван бороться с паранойей автора WhereIsIt. В случае если программа почему-то подумает что лицензионный ключ фальшивый, она удалит этот ключ, а затем выключит машину. Не спрашивая разрешения у пользователя и наплевав на то что что-то не сохранено. Так вот, этот плагин отбивает программе охоту делать такое. Плагин рекомендуется использовать и легальным пользователям воизбежание глюков программы. История создания ---------------- Как бы вы к этому не относились, но у меня ключик взятый с какого-то варезного сайта. Он работает, однако есть одна проблема, которая свалилась на меня неожиданно и стала хорошим вызовом для меня ^_^' Время от времени программа проверяет ключ и если обнаруживает, что он фальшивый, делает две ужасные вещи: удаляет ключ (или переименовывает в License.KEY.fake, если файловая система NTFS не даёт ей права удалять файл) и перезагружает систему. С первым всё понятно, даже то что она пытается модифицировать права доступа к файлу. А вот второе посложнее будет. В Windows есть два типа выхода из системы: обычный и форсированный. При обычном система не завершит работу, если программы не пожелают этого. Однако при форсированном завершении программы никто даже не спросит, они все будут закрыты принудительно в течении двух-трёх секунд. При этом ваши документы не будут сохранены, могут быть проблемы с самой системой (у меня, например, после такой шалости пару раз USB хаб не хотел работать). WII показывает окошко с сообщением о том, как нехорошо пользоваться фальшивыми ключами, и форсирует выход из системы. Даже при том что пиратство - это плохо и всё такое, то что делает WII иначе как свинством не назовёшь. Завершать работу системы без ведома пользователя - это плохо, и с этим нужно бороться (ладно хоть не форматируется винт). Первый вариант борьбы с несправедливостью состоит в следующих действиях администратора. Для начала нужно разрешить только чтение файла ключа (License.KEY). Это делается через права доступа к файлу и только на томе с файловой системой NTFS. Далее нужно запретить программе завершать работу Windows. Это делается либо созданием отдельной учётной записи, которой будет запрещено завершать работу, либо нужно запретить это текущему пользователю (в этом случае для выключения или перезагрузки потребуется сначала завершить сеанс текущего пользователя (у которого отняли право), а потом завершить работу со страницы приветствия или окна выхода из системы. Для этого придётся повозиться с групповыми политиками, а кроме того этот способ не работает в Windows 9x. Второй вариант заключается в использовании этого плагина. Он выполняет три задачи: защищает лицензионный ключ, пытается отменить перезагрузку системы (и пишет в журнал событий об этом факте) и блокирует вызов программой функции ExitWindowsEx(), которая отвечает за завершение работы. Блокировка лицензионного ключа осуществляется очень простым способом: плагин просто открывает его для чтения и блокирует операции записи с файлом. Тоесть WII может читать данные из файла, но удалить его уже не может. Это почти тоже самое как и защита файла средствами NTFS, но надёжнее. Данная защита работает как в Windows NT, так и в Windows 9x. Отмена перезагрузки системы - это первая неудачная попытка решения проблемы, которая осталась в коде плагина. Возможно, она будет удалена в будущем, хотябы потому что завершить работу системы не получится без закрытия WII. Вообще, при форсированном завершении эта защита не работает - программа даже не узнает о завершении работы, однако в Windows XP появилась возможность программам всёже узнавать об это, однако программы всё также не могут отменить завершение работу. Также следует отметить, что в целях защиты плагин в очереди на завершение помещает программу на первое место, так что при завершении работы системы именно WII будет закрыта первой. Это было сделано для того чтобы вовремя отменить завершение работы в NT, пока ещё волна не дошла до других программ. Данная возможность работает только в Windows NT, потому как в Windows 9x она попросту бесполезна из-за другой системы завершения работы. Блокировка функции ExitWindowsEx() осуществляется перезаписью точки входа этой функции. При попытке вызвать её происходит ошибка, которую WII показывает как "External exception". При этом программа продолжает работать дальше, словно ни чего и не случилось, однако я рекомендую закрыть её и запустить заново для предотвращения возможных ошибок. Хочу подчеркнуть, что в данном случае не происходит модификация кода программы - модифицируется только код одной из библиотек ядра, что благодаря архитектуре памяти Windows NT не повлечёт за собой ни каких последствий для прочих программ. В Windows 98 это не работает, и я пока не знаю как обойти это - там память устроена немного иначе. Ограничения ----------- Я не хакер и не знаю почему программа вдруг соображает, что уже трое суток работает с фальшивым ключом, я не знаю систему по которой она это делает, я не знаю периодичность. Всё что я могу сказать - это то, что трагедия может произойти в любой момент, и программа не спросит, хотите ли Вы сохранить документы. Она просто отключит компьютер. Плагин работает надёжно в Windows NT, но в Windows 9x он пока может защитить только ключ. Это не значит что 9x - платформа прошлого, и работать там ни чего не будет. Это всего лишь значит, что на данном этапе защита на этой платформе не доступна. Внимание! --------- Использование этого плагина может быть незаконным. Используя его, Вы делаете это на свой страх и риск. Плагин распространяется абсолютно бесплатно, и автор не несёт ответственности за использование его другими пользователями. Однако даже если Вы приобрели лицензию законно, есть смысл использовать этот плагин как средство защиты от возможных сбоев системы защиты программы, которые могут привести к вышеуказанным последствиям. Ещё раз подчёркиваю: в состав плагина не входит лицензионный ключ, плагин не вносит изменения в код программы и сам по себе ни как не препятствует trial периоду. Его задача - отучить программу вносить хаос в работу системы. Зависимости ----------- Для работы этого плагина нужны следующие компоненты: • Microsoft C Runtime Library Файл MSVCRT.DLL Установка плагина ----------------- Просто скопируйте файл KeyProtectionPlugin.DLL в подкаталог Plugins каталога Where Is It. Например, это может быть такой каталог: "C:\Program Files\WhereIsIt\Plugins". При следующем запуске Where Is It? распознает и загрузит плагин автоматически. Удаление плагина ---------------- Закройте Where Is It и удалите файл KeyProtectionPlugin.DLL из каталога с плагинами. Licence key protection [dummy] ------------------------------ Этот модуль ни чего не делает. Он просто нужен для того чтобы плагин нормально работал. Однако его настройки открывают окно с информацией о том, как работает защита. "License key file". В этой строке показывается заблокирован ли файл ключа. В случае ошибки тут будет выведено нечто вроде "Error 26". Код ошибки соответствуют коду ошибки Win32. "App window proc". В этой строке показывается состояние субклассирования окна TApplication программы. Ошибки, которые могут возникнуть обычно относятся к невозможности найти окно или к тому, что окно принадлежит другому процессу или другой нити. Так как WII обычно не позволяет запустить две копии, эти ошибки практически исключены. "Shutdown priority". В этой строке показывается приоритет при завершении работы системы. В Windows 9x здесь всегда показывается, что данная возможность доступна только в Windows NT. В Windows NT системе обычно показывается "System reserved", но возможны и "Application reserved", "In-between", а также "Default". В последнем случае это сигнал о том, что произошла какая-то ошибка. "ExitWindowsEx()". В этой строке показывается, Заблокирована ли функция ExitWindowsEx(). В Windows 9x тут пока всегда сообщение об ошибке. В Windows NT здесь возможны сообщение вроде того что не найдена библиотека User32.DLL или не удалось получить указатель на функцию, но это почти аварийный вариант - на практике он не встречается. Маленький копирайт ------------------ Этот плагин поставляется как есть, тоесть автор не несёт ответственности за все трагедии и несчастные случаи, вызванные использованием оного. Вы используете его на свой страх и риск. Однако, если у Вас всё же случилась трагедия, сообщите об этом мне на lindakaioh@mail.ru. Также, этот плагин поставляется бесплатно. Любое платное его распространение, сдача в аренду и другое коммерческое использование запрещены без ведома автора. Загружено с http://purl.oclc.org/Linda_Kaioh/Homepage/