Для демонстрации я возьму реальную программу с не самой простой защитой, но по понятным причинам не буду называть ни ее, ни ее разработчика. Наша цель здесь лишь демонстрация уязвимости. Материал будет полезен разработчикам софта, желающим изучить технологию подбора лицензионных ключей и понять, как это делают злые крякеры. Надеюсь, это поможет в создании более совершенных защит.
warning
Статья имеет ознакомительный характер и предназначена для исследователей безопасности и специалистов по разработке защиты программного обеспечения. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Нарушение авторских прав и патентного законодательства, распространение контрафактного ПО и нарушение работы систем преследуются по закону.
Итак, условие задачи: предположим, есть некий набор простых консольных утилит. В триальном режиме каждая программа из этого набора работает с мелкими, но неприятными ограничениями, однако у нее присутствует ключ командной строки для ввода кода активации.
При использовании ключа есть два варианта: если код активации неверен, программа выдает строку «Error: Invalid License Key» и завершает работу, в противном случае отрабатывает без ограничений. Для наглядности упростим задачу: предположим, что программа ничем не защищена и не обфусцирована, написана на C (проверить это можно в Detect It Easy).
В принципе, триальные ограничения и проверка ключа в подобном случае патчатся одним байтом, но такой вариант мы рассматривать не будем. Наша задача — реверсировать проверку ключа активации, формат которого нам неизвестен, и выяснить слабые места алгоритма. На этом примере я покажу, каким образом в подобных случаях действуют авторы кейгенов.
Подбор ключа
Предположим, что процедура проверки регистрационного ключа уже найдена. А вот выглядит она в нашем примере, на первый взгляд, весьма пугающе — даже в преобразованном в псевдокод виде.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»