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

Скриншот программы JoyToKey
Программа JoyToKey представляет собой эмулятор клавиатуры и/или мыши, который позволяет управлять различными приложениями Windows с помощью джойстика, даже если изначально такое управление не предусмотрено. Согласно настройкам, программа подменяет нажатия кнопок джойстика на нажатия кнопок клавиатуры или мыши. И ничего удивительного, что за это требуется выложить некоторую сумму денег.
Забираем дистрибутив, устанавливаем, запускаем, смотрим. На попытку зарегистрировать программу какими-нибудь левыми данными она реагирует следующим сообщением:

Сообщение о неправильной регистрации
Исполняемый файл ничем не упакован, отправляем его на анализ в дизассемблер. После того, как он закончит работу, поищем прямо в листинге строку сообщения. Сегодня HiEW на выходном. Обнаружится как строка, так и условие, при котором она появляется.
Code (Assembler) : Убрать нумерацию
- .text:004543F2 mov [esp+88h+var_84], ecx
- .text:004543F6 mov [esp+88h+var_88], eax
- ; Вызывать функцию проверки
- .text:004543F9 call sub_406488
- ; Перенести ее результат из EAX в ECX
- .text:004543FE mov ecx, eax
- .text:00454400 mov eax, off_7F69E4
- .text:00454405 mov eax, [eax]
- ; Если CL=0, то вывести сообщение о неправильной регистрации
- .text:00454407 test cl, cl
- .text:00454409 jz short loc_454457
- ; Вывести сообщение о правильной регистрации
- .text:0045440B mov [ebp+var_6C], 11h
- .text:00454412 mov [esp+88h+var_88], 0
- .text:00454419 mov edx, (offset aThankYouVeryMu+2)
- .text:0045441E mov ecx, offset aR_2 ; "R"
- .text:00454423 call sub_7B0209
- .text:00454428 sub esp, 4
- .text:0045442B mov eax, dword_7F76C8
- .text:00454430 mov [ebp+var_6C], 12h
- .text:00454437 call sub_409D48
- .text:0045443C mov eax, [ebp+var_3C]
- .text:0045443F mov dword ptr [eax+314h], 1
- .text:00454449 mov [ebp+var_6C], 14h
- .text:00454450 call sub_6F41EC
- .text:00454455 jmp short loc_454477
- .text:00454457 ; ---------------------------------------
- .text:00454457 loc_454457:
- .text:00454457 mov [ebp+var_6C], 13h
- .text:0045445E mov [esp+88h+var_88], 10h
- .text:00454465 mov edx, offset aTheSpecifiedKe
- ; "The specified key is not valid. Please "...
- .text:0045446A mov ecx, offset aError_1 ; "ERROR"
- .text:0045446F call sub_7B0209
- .text:00454474 sub esp, 4
Code (Assembler) : Убрать нумерацию
- .text:00406488 push ebp
- .text:00406489 mov ebp, esp
- .text:0040648B push ebx
- .text:0040648C push edi
- .text:0040648D push esi
- .text:0040648E sub esp, 6Ch
- .text:00406491 mov eax, [ebp+arg_4]
- .text:00406494 mov [ebp+var_14], eax
- .text:00406497 lea eax, [ebp+var_14]
- .text:0040649A mov [esp+78h+var_74], eax
- .text:0040649E mov [esp+78h+var_78], eax
- .text:004064A1 call sub_7AEC24
- .text:004064A6 mov [ebp+var_10], 0
- .text:004064AD mov [ebp+var_3C], offset loc_7AC2A0
- .text:004064B4 mov [ebp+var_38], offset unk_7D2DCC
- .text:004064BB mov [ebp+var_34], ebp
- .text:004064BE mov [ebp+var_2C], esp
- .text:004064C1 mov [ebp+var_34], offset byte_4066E9
- .text:004064C8 mov [ebp+var_50], 1
- .text:004064CF lea eax, [ebp+var_58]
- .text:004064D2 call sub_7ACF09
- .text:004064D7 lea eax, [ebp+var_10]
- .text:004064DA mov [esp+78h+var_78], eax
- .text:004064DD mov [esp+78h+var_70], 0
- .text:004064E5 mov [esp+78h+var_74], offset aDekiMousE
- ; "DEKI-MOUS-E"
- .text:004064ED call sub_7AEBF4
- .text:004064F2 mov [ebp+var_50], 2
- .text:004064F9 lea eax, [ebp+var_10]
- .text:004064FC mov [esp+78h+var_74], eax
- .text:00406500 lea eax, [ebp+var_14]
- .text:00406503 mov [esp+78h+var_78], eax
- ; Вызвать функцию сравнения строк
- .text:00406506 call sub_7AEDAC
- .text:0040650B mov esi, [ebp+arg_0]
- .text:0040650E test al, al
- .text:00406510 jz short loc_406522
Code (Assembler) : Убрать нумерацию
- .text:007AEDC8 mov eax, edi
- .text:007AEDCA mov edx, esi
- .text:007AEDCC call sub_5ACC04

Сообщение об успешной регистрации
Запускаем программу в обычном режиме и повторяем регистрацию найденным серийником. На этот раз получаем искреннюю благодарность. Проверяем работоспособность.

Программа успешно зарегистрирована
В окне "О программе" деактивированы кнопки регистрации и покупки, ограничений по количеству профилей и прочего тоже нет. Цель достигнута.
Просмотров: 450 | Комментариев: 3
Метки: исследование защиты

Комментарии
Отзывы посетителей сайта о статье
ManHunter
(01.04.2025 в 11:53):
Отладчик OllyDbg, а строчки смотрел сразу в IDA

Staroekino
(01.04.2025 в 11:51):
Когда HiEW на выходном ,какой отладчик использовали ?
Спасибо Вам ManHunter за интересный материал ,... Категория: Темная сторона Силы одна из любимых !!
Спасибо Вам ManHunter за интересный материал ,... Категория: Темная сторона Силы одна из любимых !!

Сергей
(31.03.2025 в 14:51):
Интересная защита =)

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