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

Скриншот программы Key Extender
Key Extender - исключительно полезная программа для переназначения отдельных кнопок на клавиатуре, а также мультимедийных клавиш. Простой интерфейс, богатые возможности. Про все ее функции вы можете почитать на офсайте. Главным недостатком является то, что бесплатно использовать программу можно только пару десятков раз, после чего вас отправят в кассу. Туда мы точно не пойдем, а поищем какие-нибудь другие пути решения.
Скачиваем дистрибутив, устанавливаем, запускаем. Сразу же открывается окно-напоминание с предложением зарегистрироваться, сходить в кассу или продолжить пробное использование.

Триальное окно
Исполняемый файл ничем не упакован, отправляем его в дизассемблер. А пока попробуем зарегистрировать программу какими-нибудь левыми данными.

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

Строка в исходном коде
Теперь вернемся в дизассемблер и посмотрим, где и как она используется. Чутье подсказывает мне, что этот код очень похож на проверку регистрации.
Code (Assembler) : Убрать нумерацию
- CODE:0049614E mov dword ptr [eax+4], 14h
- CODE:00496155 mov eax, [ebp+var_8]
- ; Вызвать функцию проверки регистрации
- CODE:00496158 call sub_483390
- ; По ее результатам выполнить условный переход
- CODE:0049615D sub al, 1
- CODE:0049615F jb short loc_496174
- CODE:00496161 jz loc_496208
- CODE:00496167 dec al
- CODE:00496169 jz loc_4962EE
- CODE:0049616F jmp loc_49635E
- CODE:00496174 ; --------------------------------------------------
- ; Ветка алгоритма при корректной регистрации
- CODE:00496174 loc_496174:
- CODE:00496174 mov eax, [ebp+var_4]
- CODE:00496177 mov eax, [eax+374h]
- CODE:0049617D call sub_461764
- CODE:00496182 mov esi, eax
- CODE:00496184 dec esi
- CODE:00496185 test esi, esi
- CODE:00496187 jl short loc_4961A7
- CODE:00496189 inc esi
- CODE:0049618A xor ebx, ebx
- CODE:0049618C loc_49618C:
- CODE:0049618C mov eax, [ebp+var_4]
- CODE:0049618F mov eax, [eax+374h]
- CODE:00496195 mov edx, ebx
- CODE:00496197 call sub_461728
- CODE:0049619C xor edx, edx
- CODE:0049619E mov ecx, [eax]
- CODE:004961A0 call dword ptr [ecx+64h]
- CODE:004961A3 inc ebx
- CODE:004961A4 dec esi
- CODE:004961A5 jnz short loc_49618C
- CODE:004961A7 loc_4961A7:
- CODE:004961A7 mov eax, [ebp+var_4]
- CODE:004961AA mov eax, [eax+384h]
- CODE:004961B0 mov edx, offset aRegistered
- ; "Registered"
- CODE:004961B5 call sub_45E150
- CODE:004961BA lea edx, [ebp+var_10]
- CODE:004961BD mov eax, [ebp+var_8]
- CODE:004961C0 call sub_4837BC

Строки для сравнения
Проверяем регистрационное имя "ManHunter / PCL" и свежепойманный в отладчике серийник "OETPZU4E8". Вводим их в программу и перезапускаем ее. После повторного запуска окно с предложением регистрации не появляется.

Программа успешно зарегистрирована
Вкладка с покупками стала неактивной, там красуется регистрационная информация, а обнаруженное ранее слово "Registered" записывается на одну из неактивных кнопок. Цель успешно достигнута, все ограничения с программы сняты. Большое спасибо автору за полезную софтину!
Просмотров: 3908 | Комментариев: 4
Метки: исследование защиты

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

Doxtur
(02.02.2017 в 05:03):
Вот алго:
в верхний регистр:
4D+2
41+4
4e+6
48+8
55+A
...
И вроде серийник меньше 0xA
в верхний регистр:
4D+2
41+4
4e+6
48+8
55+A
...
И вроде серийник меньше 0xA

ManHunter
(02.02.2017 в 00:46):
По-моему, функционал программы подразумевает исключительно стационарное использование. А в админском сундучке должны быть портативки для разового применения. Так что комплект инсталлятор+серйник для этой софтины самое оно. Имхо.
Рега же патчится там же в проверке, надо просто сразу вернуть правильное значение.
Рега же патчится там же в проверке, надо просто сразу вернуть правильное значение.

pawel97
(01.02.2017 в 21:03):
Знаю, что статья не о том, но... Есть бесплатный аналог на .NET - SharpKeys. Задействует твик реестра для переназначения клавиш средствами самой винды.
Кстати, рега сего чуда хранится в %ProgramData%\KeyExtender\svighostkey.dll, так что для размещения сабжа в чемоданчике сисадмина я бы всё-таки пропатчил, чтобы раз и навсегда решить вопрос с регой.
Кстати, рега сего чуда хранится в %ProgramData%\KeyExtender\svighostkey.dll, так что для размещения сабжа в чемоданчике сисадмина я бы всё-таки пропатчил, чтобы раз и навсегда решить вопрос с регой.

Добавить комментарий
Заполните форму для добавления комментария

> Есть бесплатный аналог на .NET - SharpKeys.
А есть и не на .NET, но тоже бесплатный:
Keyremap:
old-dos.ru/dl.php?id=6350
А вот вариант того же, только пожирнее:
RemapKey:
old-dos.ru/dl.php?id=8685