Эмуляция ключей

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

Описание способа (url: http://best-xaker.moy.su/load/moi_fajly … t/1-1-0-14):

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

Программная эмуляция ключа Guardant подразумевает под собой перехват обращений приложения к ключу и формирование ответов ключа на программном уровне. Подробнее об алгоритмах работы и взаимодействии защищенного приложения с ключом можно узнать из ПО Guardant, найти который несложно.

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

Оригинальные драйверы Guardant 4.88

Guardant key dumper 0.3 (c) infern0 / TSRh team

Распакуйте архив с драйверами ключа и запустите файл INSTDRV.EXE, после чего нажмите на кнопку Установить драйвер. В случае успешной операции программа установки должна отобразить окно с текстом Драйвер Windows NT/2000/XP для электронных ключей Guardant успешно установлен.

Внимание: Если при запуске программа установки драйверов отображает окно:

То это значит, что в Вашей системе установлен эмулятор от Lz (или Lz Driver Control), который необходимо деинсталлировать!!!

После установки драйверов распакуйте архив с дампером в отдельную папку и запустите.

Когда окно закроется, в папке с дампером появятся несколько файлов с расширением bin и один файл с расширекнием log.

В некоторых случаях дампер может выдать следующую информацию:

Found Dongle, ID: XXXXXXXX
ERR: Cannot find key with Private RD YYYYYYYY

Чтобы снять дамп с такого ключа, нужно вручную передать дамперу его личный код чтения. Для того, чтобы узнать личный код чтения ключа, нужно выполнить следующее:

Драйвер протокола ключей Guardant (novex logger)

распакуйте архив и запустите файл instnt.bat. Подключите аппаратный ключ к компьютеру и запустите защищаемое приложение. Произведите в приложении несколько действий, после чего программу можно закрыть. Драйвером протокола ключей будет создан файл C:\nvx.log примерно следующего содержания (начало):

<-- nsc_Read: pvRead = XXXXXXXX, mode = SAM, addr = 00, len = 02
--> nsc_Read: retCode = 0000
<-- nsc_Read: pvRead = XXXXXXXX, mode = SAM, addr = 0E, len = 04
--> nsc_Read: retCode = 0000
<-- nsc_Transform: pvRead = XXXXXXXX, algo = 00, len = 04, cnvType = 00
<-- ***
...

Последовательность символов XXXXXXXX - личный код чтения Вашего ключа, который нужно передать дамперу. Для этого запустите файл search.exe с параметром XXXXXXXX.

Когда окно дампера закроется, в папке с дампером появятся несколько файлов с расширением bin и один файл с расширекнием log.

После успешного снятия дампа можно приступить к программному эмулированию работы ключа.
Эмуляция работы ключа
Для эмуляции работы ключа потребуется фильтр-драйвер, который будет перехватывать и обрабатывать запросы защищаемого приложения к ключу. Мы воспользуемся одним из общедоступных табличных эмуляторов - Guardant Dongle Emulator by LZ. Мной была написана оболочка для работы с эмулятором, в котором содержится сам драйвер и некоторые инструменты для работы с ним.

Распакуйте архив и запустите файл lzdc.exe. На рабочем столе должно появиться небольшое полупрозрачное окно. Нажмите на нем правой кнопкой, дальше 'Установить эмулятор' -> 'Without Crypt'. Программа попросит перезагрузиться. Перезагружаемся.

После перезагрузки снова запускаем программу и запускаем LZDC. Далее правой кнопкой мыши жмем на окне LZDC и выбираем 'bin2reg'. Нажимаем в новом окне на значок папки и выбираем файл с дампом, который Вы получили (файл формата mem_XXXXXXXX.bin, предварительно переименовав его в XXXXXXXX.bin, где XXXXXXXX - личный код чтения ключа). Нажимаем на кнопку 'Конверт' --> 'Экспорт в реестр'.

После проделанных операций можно включать эмулятор и пробовать запустить программу. Если после вышеуказанных действий программа не запустится, то можно попробовать снять с файла запуска конверт. Делаетсяэто утилитой Guardant / Novex envelope killer 1.41 (спасибо infern0 [TSRh]). Данная утилита снимает конверт версии не выше 4.44.

Если в Вашей программе используется конверт версии выше 4.44, попробуйте снять его, используя следующий материал:

Распаковка конверта Guardant при наличии ключа или эмулятора (by Larry)

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

Re: Эмуляция ключей

Здравствуйте.

NindzyA_RulS пишет:

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

Данный материал действительно весьма устаревший и рассчитан на построение эмуляторов для ключей старых моделей (на что указывает необходимость использования драйвера версии 4.88 выпущенного вместе с соответствующим SDK 23 декабря 2005 года), да и то без гарантий что этот эмулятор сможет "заменить" электронный ключ.) На сегодняшний день во всех современных ключах Guardant применяется шифрование трафика протокола обмена, технология защищенных ячеек, что дополнительно усложняет задачу построения таких эмуляторов. В случае же с ключами Guardant Code это становится во многие разы сложнее как раз из-за используемой в данных ключах технологии загружаемого кода.

В этом смысле электронные ключи Guardant Code, на сегодняшний день, можно считать самым надежным (стойким) устройством семейства Guardant для лицензирования и защиты ПО.

Однако, как и для предыдущих поколений электронных ключей Guardant, так и для современной линейки, включая естественно и ключи моделей Code, важно понимать что основным слабым местом в защите приложения будет являться не сам ключ, а "слабая" схема защиты приложения.
При разработке такой схемы, в случае применения ключей Code, защита может стать во много раз более стойкой, относительно ключей младших моделей (Sign, Time, Net), а может и не иметь такого результата вовсе, например из-за неверно выбанного для переноса в ключ функционала защищаемого приложения.

Таким образом, можно уверенно сказать, что на сегодняшний день, взлом приложения, защищенного при помощи электронного ключа Guardant Code, будет для злоумышленника крайне затруднительной и трудоемкой задачей даже при наличии некоторых "дампов", но при условии грамотной организации защиты приложения.

Основные рекомендации по использованию наших ключей и технологий изложены в двух частях руководства пользователя (по умолчанию вся документация находится в папке с установленным комплектом разработчика: "%Program Files%\Guardant\Guardant 6\%Public Code%\Doc", и доступна для скачивания с нашего сайта).

Re: Эмуляция ключей

Шалом)

Re: Эмуляция ключей

Вставлю свои "пять копеек" :)
Дамп образа ключа и расчет дескриптов алгоритмов (помещаемых в ключ) может быть осуществлен только при использовании старых алгоритмов трансформа (да и то на старых ключах).
При использовании как минимум GSII64 начиная с Stealth2 все эти трудозатраты будут пустыми, естественно при условии что вы используете преобразование через ключ разумным образом, а не вопрос-ответ-сравнение = проверка успешна.
Причем, даже в этом случае, возможностей ключа будет предостаточно и не потребуется перестраховка в виде сессионных ключей, защищающих трафик в новом АПИ (хотя даже тут перестраховка избыточной не будет).
Ну а по поводу Code - он сам по себе должен быть новой стратегией защиты Вашего ПО.
Его использование - это как минимум разработка новой концепции алгоритмов защиты. Если Вы возьмете старый кусок кода и воткнете его в ключ - это будет ошибка.