Blog. Just Blog

Исследование защиты программы Hotkey Commander

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы Hotkey Commander
Скриншот программы Hotkey Commander

Hotkey Commander - отличный менеджер горячих клавиш в Windows. Позволяет просматривать, какая программа захватила на себя обработку той или иной комбинации клавиш, а также переназначать, отключать и изменять горячие клавиши. Без регистрации работает всего 15 дней, что, безусловно, очень мало. На офсайте есть бесплатная софтинка Hotkey Explorer, но она позволяет только смотреть список приложений и назначенных им горячих клавиш.

Забираем с сайта дистрибутив, устанавливаем, смотрим. При попытке регистрации неправильными данными программа падает с фатальной ошибкой. Это точно не реакция защиты, скорее всего автор просто что-то не предусмотрел. А еще в окне есть неизменяемое поле серийного номера, но это не серийник, а HWID для привязки регистрации к компьютеру. Дизассемблер - наше все, отправляем главный исполняемый файл на разбор.

Окно регистрации программы
Окно регистрации программы

Пусть с окном регистрации не получилось, следующая зацепка - надпись "Not Registered" в заголовке. Поиском строки в листинге дизассемблера обнаружится следующий код:
  1. .text:004082CD                 mov     ecx, offset unk_446B44
  2. .text:004082D2                 mov     [esp+18h+var_4], 0
  3. ; Вызвать функцию проверки
  4. .text:004082DA                 call    sub_411BF0
  5. .text:004082DF                 test    eax, eax
  6. ; Если AX=0, то программа не зарегистрирована
  7. .text:004082E1                 jz      short loc_4082F3
  8. .text:004082E3                 push    offset unk_446B4C
  9. .text:004082E8                 lea     ecx, [esp+1Ch+lpString]
  10. .text:004082EC                 call    ??YCString@@QAEABV0@ABV0@@Z
  11. ; CString::operator+=(CString const &)
  12. .text:004082F1                 jmp     short loc_408301
  13. .text:004082F3 ; ---------------------------------------
  14. .text:004082F3 loc_4082F3:
  15. .text:004082F3                 push    offset aNotRegistered
  16. ; "Not Registered"
  17. .text:004082F8                 lea     ecx, [esp+1Ch+lpString]
  18. .text:004082FC                 call    sub_42C983
Все понятно. Вызывается функция проверки, если она вернула EAX=0, то программа работает в триальном режиме. Если посмотреть по перекрестным ссылкам места, из которых также вызывается функция проверки регистрации, то обнаружится еще одно любопытное место:
  1. .text:00411867                 mov     ecx, offset unk_446B44
  2. .text:0041186C                 call    sub_411BF0
  3. .text:00411871                 test    eax, eax
  4. .text:00411873                 jz      short loc_411888
  5. .text:00411875                 push    40h             ; uType
  6. .text:00411877                 push    offset aCongratulation
  7. ; "Congratulations"
  8. .text:0041187C                 push    offset aThankYouForReg
  9. ; "Thank you for registering Hotkey Comman"...
  10. .text:00411881                 mov     ecx, esi
  11. .text:00411883                 call    sub_42AB76
Тут тоже все понятно, но интересно другое. Прямо под этим кодом по адресу 004118A0 находится функция генерации HWID. Там обнаруживаются характерные вызовы системных функций GetAdaptersInfo и GetVolumeInformation, на основании информации из которых создается уникальный "отпечаток" системы и выполняется привязка регистрации к компьютеру. Но это так, чисто ради спортивного интереса. Возвращаемся к функции проверки регистрации. Впечатываем в ее начало по адресу 00411BF0 пару команд MOV EAX,1 и RET, сохраняем изменения. Теперь на любой вызов она будет возвращать правильный ответ.

Программа успешно "зарегистрирована"
Программа успешно "зарегистрирована"

Из заголовка исчезла триальная надпись, в интерфейсе нет кнопок регистрации, а на вкладке "О программе" красуется надпись о зарегистрированности. Регистрационного имени нет, но ничего, я как-нибудь это переживу. Зато теперь программа может без проблем запускаться на любом компьютере с сервисной флешки, куда она, собственно, и отправилась после проведения курса интенсивной терапии. Цель достигнута. Спасибо автору за очень полезную программу.

Поделиться ссылкой ВКонтакте
Просмотров: 1826 | Комментариев: 2

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
антон (08.09.2019 в 20:23):
Можно дополнить статью. Походу автор забросил этот проект и не перевел программу в статус Free, последнее обновление сайта в 2013 году. Купить программу тоже нельзя, магазин, на который ведет ссылка о покупке, ничего не знает об этой полезной программе.

ManHunter, так держать! ПО должно быть свободным!
voffka (06.09.2019 в 22:43):
Жалко, что больше не делают такие защиты, раньше RSA была на каждой второй программе.
Процедура генерации на masm-e
https://pastebin.com/vvW0SN1T
использована biglib by roy|fleur

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.0076 сек.) / Память: 4.5 Mb
Наверх