Logo SNC Как бороться с триал-версиями программ
 
 
О себе
 Словами
 Фото!
 
 Программирование 
 Visual Basic
 Download
 Trial Ware?
 
Примеры триала
 Kleptomania 2.4
 PE Explorer 1.95
 CPU Idle 6.0
 Anjelica 4.x
 PE Compact 1.84
 Adv. Direct Remailer
 WEBaby Screen Savers
 ClipMate 5.x
 Steganos Security Suite
 ACProtect
 
Plus
 Справка по RegMon
 Справка по FileMon
 
 
 

Яндекс цитирования

Рейтинг@Mail.ru

  Заметка эта является своеобразным ответом на частые вопросы связанные с моей утилиткой Registry Trash Keys Finder.

  Все написанное ниже — совсем даже не для кул хакеров. Скорее это для тех, у кого вместо лишних денег на покупку программ есть некоторый азарт побороться с ними. Использована терминология непрофессионала, так что не судите строго. Большинство упоминаемых на этой странице программ (да и не только их) можно найти, причем в "улучшенном виде" на этом весьма полезном и содержательном сайте.

  Речь пойдет не о взломе, патчах, кряках и тому подобной бяке. Остановимся мы на программах, которые предлагают свои полноценные (не всегда) версии для опробования в течении некоторого числа дней и(или) какого-то количества запусков.

  Сначала о сути вопроса. Для того чтобы ограничить использование Вами какой-нибудь программы, она должна (обычно при первом запуске) так сказать пометить территорию. Это должна быть какая-то запись в реестре или в каком-нибудь файле на диске (запись в BIOS и напрямую в физический сектор жесткого диска здесь не рассматривается). В последующем программа при запуске (не всегда) будет проверять эту запись и, сравнивая ее с текущей датой, делать выводы о том, стоит ли Вам разрешить работу. Иногда программы выводят приветственное :) окошко(т.н. Nag Screen), в котором пишут "Вам осталось ХX дней на опробование...". Что касается отсчета запусков, то тут несколько иначе: эта запись должна при работе изменяться программой, сохраняя в её содержимом уже произведенное число запусков.

  Хочу сразу предостеречь Вас от одной частой ошибки. Некоторые (особенно дорогие) программы хоть и имеют некоторый тестовый период, но это не совсем то, о чем мы собираемся поговорить. Дело в том, что тестовый период этих программ организуется путем предоставления пользователю (обычно только один раз) временного лицензионного ключа. После того, как его действие закончится Вам понадобится новый ключ (получить повторно временный удается нечасто), а значит его уже нужно будет покупать. Так вот, при в стрече с этим типом триальных программ продление их ознакомительного периода путем поиска каких-то скрытых записей обычно безполезная трата времени: их там попросту нет.

  Итак, что же обычно представляет из себя вся эта Trial информация? Это уже на усмотрение самих авторов программ. Вариантов (а точне их модификаций) множество.


Нулевой вариант: Я его даже и не собирался описывать, потому как решил, что он сегодня нигде уже не используется. Оказалось - нет, жив, курилка. Слишком уж все просто: программа перед работой проверяет дату какого-нибудь файла, который был создан во время инсталляции или первого своего запуска (чаще всего именно дату самого исполнимого файла) и, если она отстоит от текущей более, чем на заявленный триальный срок, то программа шумит и ругается. Но самое смешное, что после переустановки она, как миленькая, заново начинает отсчет (понятное дело: ведь при установке файлы получают свежие даты). Кстати, такой вариант иногда используется как составная часть комбинированной защиты (например, программа проверяет дату создания папок и файлов внутри своей рабочей директории).

Первый вариант: программа создает файл в системной папке (или в папке Windows или, иногда, в корневой папке диска C:) с именем, подобным на какой-либо системный файл, например wsock321.dll или winhelp.cnt и т.п. Файл для маскировки (не всегда) делается скрытым/системным или забивается всякой ерундой, например взятой из подобного 'правильного' файла, так что при просмотре содержимого будет казаться, что файл вполне нормальный. На самом же деле в файле будет выделена небольшая область, где и будут записаны (часто в зашифрованном виде) дата первого запуска (или наоборот последнего) и счетчик запусков или, к примеру, число записанных CD матриц или отсканированных страниц и т.п. С помощью подобных файлов AudioGrabber помечал для себя, что регистрационный номер, введенный Вами при регистрации, - левый. А проверялся этот номер во время подключения к интернет базе CDDB. А не слишком известная у нас программа для создания антихакерской защиты ACPprotect так вообще ограничилась только этим единственным вариантом триальной защиты.

Второй вариант: используется один из тех файлов, которые уже есть в системе и запись в которые не блокирована. Например win.ini, system.ini, odbc.ini и т.п. Выбирается какая-либо наиболее забитая непонятными (для неспециалиста) буквенно-цифровыми наборами секция и в ней делается запись в таком же невразумительном виде. Такой механизм, в частности, использовался популярными программами FineReader и Lingvo.
(Примерчик) (Пример комбинации 1-го и 2-го вариантов)

Особая модификация 2-го варианта. Только сейчас входит в моду, раньше не замечал, хотя кто знает... Использует некоторые специальные возможности файловой системы NTFS. При этом триальная информация записывается не внутрь самого файла, а в специально создаваемый для этой цели альтернативный поток данных (ADS / Alternate Data Stream) этого файла. Такая информация не видна в менеджере файлов, но при этом вполне доступна для чтения и записи программными методами. Подобную хохму используют уже некоторые вирусы, скрыто "приклеивая" таким образом к важным системным файлом вредоносный программный код. Тут не место вдаваться в подробности этих технологий (Вы, что, и впрямь поверили, что я в курсе, как это все работает:-), выскажу только свое мнение, что Вы еще не раз услышите про этот вариант. А пока, если интересно, поищите в сетке программы, которые позволяют найти и просмотреть/удалить ненужные Вам альтернативные потоки (есть ведь и нужные, понятное дело).

Третий вариант, наиболее распространенный: запись производится в Реестре Windows. Разновидностей - тоже масса. Но все они сводятся к созданию в реестре ключа (ключей) или значения (тоже может быть несколько), которые будут хранить необходимую информацию. Очень часто Trial-ключи располагаются не в той секции реестра, которая выделена для хранения настроек программ (это секции Software \ Название Фирмы Производителя), а пытаются затеряться среди чужих (конечно, не все поступают так), например среди Microsoft - их очень много в Реестре. Другое очень модное место для создания триал-ключа - это ветвь ..\CLSID. Там расположены буквально тысячи однотипно выглядящих (типа {C45BC9EE-D7F5-0977-A380-297B777CA0E0}) ключей, содержащих специальные идентификаторы классов для зарегистрированных COM элементов. Обращение к этим ключам идет довольно активное. Вот где спрятаться-то хорошо!

Продвинутая модификация 3-го варианта, ставшая популярной только в последние годы (если Вы немного понимаете в программировании, можете заглянуть вот сюда). Реализуема она только на операционках, которые основаны на ядре NT (NT,W2000,XP,Vista,Windows 7 и др). Применяется на данный момент многими коммерческими защитами, например EXECryptor, SDProtector, ZIPWorx и др. Суть этой новомодной штуковины заключается в том, что созданную особым образом триальную запись в Реестре не удается ни просмотреть, ни удалить традиционными способами. Для создания такого ключа используются специальные функции из NativeAPI. Невидимым и неудаляемым такой ключ делает включение в имя этого ключа "запретного" нулевого символа (а он-то стандартно используется как завершающий символ для строк!). При этом обычные программы работы с Реестром воспринимают не все имя ключа, а только ту его часть, которая расположена до нулевого символа и посему не могут с этим ключом нормально работать (проще говоря - полный облом :). Кстати, начиная с версии 3.6.1 TrashReg предоставляет простое средство для удаления таких "хитрых" ключей.


  Продвинутые программисты не ограничиваются использованием одного метода, а объединяют и переплетают их в затейливый клубок!!! Примеры - программа AfterScan, LingoWare Translator, те же FineReader и Lingvo. Ну, а те, кто не настолько продвинут или просто не желает всеми этими фокусами забивать себе голову, приобретают крутую и недешевую вещь — готовый софтварный протектор, например ASProtect (детище Алексея Солодовникова). Он, кроме сжатия, шифрования, проверки целостности, защиты от взлома и др., позволяет ввести ограничения на использование программы (на текущий момент - по третьему варианту). Registry Trash Keys Finder как раз в основном и направлена на поиски ключей, подобных тем, которые создаются ASProtect'ом и некоторыми другими подобными ей (в частности очень популярной среди западных программистов Armadillo).

  А зачем, собственно, спросите Вы, нам эти ключи искать? Конечно чтобы удалить или при возможности подправить! Обычно программа, при запуске не обнаружившая свою триальную метку, считает себя только что инсталлированной и поздравляет Вас с началом ее опробования (кстати, тут же создавая новую метку). То, что нам и нужно! Некоторые программы хитрят и создают триальные метки уже при инсталляции. Их может генерировать и сама программа установки. В этом случае удаление триального ключа позволит Вам как минимум произвести успешную переустановку программы.

  Надо сказать, что с некоторыми программами проходит и такой простой трюк: при инсталляции следует перевести системные часы компьютера на нужный Вам период вперед, а потом, уже после установки и однократного запуска программы, вновь вернуть время вспять. Если вдруг этот фокус удастся, то программа будет работать в ознакомительном режиме не менее того срока, на который Вы делали сдвиг по времени. Должен заметить, что трюк этот весьма опасный: многие новые программы уже знают о таких методах и, обнаружив сей обман, просто отказываются работать вообще, какое время им не подай :(

  Итак, все-таки будем искать. В первую группу инструментов поиска я бы включил программы мониторинга доступа к файлам и к Реестру. Стандартно рекомендуемые: FileMon и RegMon от компании Sysinternals. Достоинства: бесплатные, удобные для перехода к найденной позиции по двойному клику на строке, широкие возможности фильтрации. Главный недостаток: некоторые программы имеют встроенный механизм защиты от таких программ и запросто захлопывают FileMon и RegMon, без всяких предупреждений (хотя умные парни уже нашли различные приемы от этого лома). А не так давно я обнаружил в сети еще одну весьма продвинутую программу под названием MultiMon. Так вот она умееет мониторить не только файловые операции и обращения к Реестру, но еще и сетевые операции, буфер обмена, клавиатурные нажатия, другие действия пользователя ... да всего и не помню уже. Кстати, не пропустите очень неплохой редактор Реестра Resplendent Registrar от того-же производителя. Между прочим, в последнем тоже есть встроенная функция мониторинга за Реестром (работает только для NT систем). А возможность менять "на лету" тип значения, хранящегося в Реестре, просто уникальна. Обе программы платные, но имеют полнофункциональные ознакомительные версии (Resplendent Registrar версий 4+ уже имеет множество ограничений в версии Lite). Ограничения по времени работы этих программ можно снять, убрав парочку значений из Реестра. Причем чтобы их найти не нужны никакие особые навыки - просто зайдите в штатные для этих программ ключи Реестра и Вы их там сразу увидите.

  Вторая группа софта для нашей цели - это утилиты для создания снимков системы (например до первого запуска программы и после) и сравнения затем этих снимков. Программа, которую очень неплохо иметь для определения изменений в реестре, это Advanced Registry Tracer от скандально известной компании Elcomsoft. Множество очень удобных функций: просмотр снимка реестра, сохранение выбранных ветвей в REG файлах, откат обнаруженных изменений, возможность хранить в каждой базе (кстати базы можно создавать для каждой исследуемой программы разные) множество снимков реестра и производить сравнение любой пары, переход к указанному ключу в Regedit и многое другое. Недостаток один - Shareware, но он легко устраняется посещением определенных сайтов ;-). Для того, чтобы отслеживать изменения в файлах и реестре при установке программ неплохо подходит удобный, сделанный в виде мастера FireLog, который создает комплексный отчет об изменениях в Реестре и ini-файлах (просто тотальная слежка :). Жаль только, что проект этот уже давно не развивается и оттого возможны проблемы в работе с новыми операционными системами. Да и программу эту в сети уже найти сложновато. Лично меня на данный момент вполне устраивает быстрая и добротно выполняющая аналогичную работу очень компактная утилита Regshot, которая к тому же еще и позволяет сохранять сделанные снимки для последующего их использования.

Имейте ввиду: использовать утилиты второй группы имеет смысл только при установке и первом запуске триальной программы (правда замечены и программы, делающие дополнительные метки уже только при втором запуске, так что не поленитесь проконтролировать и второй запуск исследуемой программы), а также при последнем запуске, после которого ознакомительное использование становится невозможным (при этом некоторые программы создают дополнительные метки, сигнализируя, что программа свое отработала). При этом результативность слежки будет максимальной, потому что Вы увидите именно изменения, а не все подряд, как это происходит в случае с программами-шпионами (чтобы уменьшить число записей в их логах, активно применяйте фильтры).

Кстати, попутный совет: если Вы прозевали фазу первого запуска программы, но у Вас на компе есть другая операционка, то тогда под контролем установите программу уже на этой операционке. Более того, иногда (редко, но бывает) для этого достаточно просто войти в систему под другим пользователем.

  Тем не менее, обойтись без программ мониторинга в этих делах практически невозможно, потому что многие программисты стараются припрятать триальные записи от Ваших глаз, создавая их не сразу же при запуске, а при каком-нибудь специфическом событии в программе. Так, например, иногда поступает всем известный навороченный менеджер закачек Reget Deluxe. Отследить момент создания им триального ключа довольно сложно (похоже в какой-то из стадий закачки файла), тем не менее RegMon элементарно укажет Вам на обращение к этому ключу, даже если его пока еще и нет в Реестре. Чудеса...

[ А вот тут несколько примеров...]

  Продолжение следует...

 

Copyright © 2002-2005 SNC - О компании...