
Исследование защиты скринсейвера Elastic Balls

Скриншот скринсейвера Elastic Balls
Еще одна софтинка из запасников. На этот раз будем потрошить скринсейвер Elastic Balls. По экрану летают шарики разного цвета и размера, сталкиваются, разлетаются. Очень наглядно демонстрируют импульс из школьного курса физики. Скачать скринсейвер уже нигде нельзя, проект давно прекратил существование. Соответственно, платить тоже некуда, даже если по какому-то недоразумению вы захотели бы это сделать.
Поскольку официальный сайт давно не работает, забираем с файлообменника дистрибутив. Устанавливаем, открываем системные настройки скринсейвера. На попытку ввода левых регистрационных данных получаем следующее сообщение:

Сообщение о неправильной регистрации
Исполняемый файл ничем не упакован, отправляем его на разбор в дизассемблер. Когда он закончит работу, найдем в листинге строку сообщения о неправильной регистрации и посмотрим, при каких условиях оно появляется.
Code (Assembler) : Убрать нумерацию
- .text:00410D3A lea eax, [ebp+var_C]
- .text:00410D3D mov edx, 2
- .text:00410D42 call sub_4912C4
- ; Указатели на строки
- .text:00410D47 lea edx, [ebp+var_4]
- .text:00410D4A lea eax, [ebp+var_8]
- ; Вызвать функцию сравнения строк
- .text:00410D4D call sub_49137C
- .text:00410D52 test eax, eax
- ; Строки не совпадают, вывести сообщение о неправильной регистрации
- .text:00410D54 jnz loc_410EF6
- .text:00410D5A mov [ebp+var_40], 44h
- ...
- ...
- ...
- .text:00410EE9 call sub_4912C4
- .text:00410EEE mov [ebp+var_40], 8
- .text:00410EF4 jmp short loc_410F43
- .text:00410EF6 ; ---------------------------------------
- .text:00410EF6 loc_410EF6:
- .text:00410EF6 push 0
- .text:00410EF8 mov edx, offset aInvalidRegistr
- ; "Invalid registration Name or Code."
- .text:00410EFD mov [ebp+var_40], 8Ch
- .text:00410F03 lea eax, [ebp+var_2C]
- .text:00410F06 call sub_49120C
- .text:00410F0B inc [ebp+var_34]

Правильный серийник на стеке
Когда сработает точка останова, на стеке обнаружатся две строки: одна из них является нашим левым серийником, а вот вторая очень похожа на правильный. То есть для регистрационного имени "ManHunter / PCL" серийник будет "26JRF-66TXB-0GQ2E-5543F". Проверим, так ли это.

Скринсейвер успешно зарегистрирован
Повторяем регистрацию с найденной строкой. Кнопка "Register" исчезает, в окне появляется надпись с благодарностью за регистрацию. Цель достигнута.
Просмотров: 1580 | Комментариев: 6
Метки: исследование защиты

Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Iran
(29.05.2020 в 07:28):
Ну вы, прямо кулхацкеры!

user
(24.03.2020 в 23:56):
Это начинают другие люди, не те, которые предпочитают "хирургию".
Если программа может быть поправлена кардинальным образом и навсегда,
то почему бы и нет? Это лучший из вариантов.

ManHunter
(24.03.2020 в 09:43):
Ну блин, выкладываешь вариант с патчем, сразу же начинается "А где кейген/серийник"? Тут же всей командой пропатчили вдоль и поперек. "Д" - "Логика" :))))

0101
(24.03.2020 в 09:24):
user - спасибо, интересная инфа! Так как скринсервер не имеет ограничений, то можно занопить один переход по адресу 0040219D, затем в редакторе ресурсов сделать нулевым размер кнопки "Register" удалить окно "About" и пожать/заменить битмапы шаров
https://files.dp.ua/NDykz7
https://files.dp.ua/NDykz7

user
(24.03.2020 в 03:31):
Скринсейвер малость глючной. У меня работает через раз, другой раз падает.
Что касается скринсейверов для NT+,
то это обычный PE-EXE, принимающий из командной строки предопределённые параметры:
- Параметр /c - запуск окно настроек
- Параметр /p - запуск предпросмотра, через пробел идёт хэндл окна предпросмотра
- Параметр /s - запуск в полноэкранном режиме
В этом скринсейвере пустая командная строка по дефолту соответствует параметру "/c", то есть "Настройки".
и, соответственно, запустить его под отладчиком можно просто переименовав в .EXE и без параметров.
Если чисто для себя, то мне больше нравится патч
;----------------------------------------->8
The ElasticBalls ScreenSaver v.1.01
Register with any data
"The Elastic Balls.scr"
.004913EC: C3 31 ;000909EC:
.004913ED: 90 C0 ;000909ED:
.004913EE: 90 C3 ;000909EE:
;----------------------------------------->8
И в архив его
Что касается скринсейверов для NT+,
то это обычный PE-EXE, принимающий из командной строки предопределённые параметры:
- Параметр /c - запуск окно настроек
- Параметр /p - запуск предпросмотра, через пробел идёт хэндл окна предпросмотра
- Параметр /s - запуск в полноэкранном режиме
В этом скринсейвере пустая командная строка по дефолту соответствует параметру "/c", то есть "Настройки".
и, соответственно, запустить его под отладчиком можно просто переименовав в .EXE и без параметров.
Если чисто для себя, то мне больше нравится патч
;----------------------------------------->8
The ElasticBalls ScreenSaver v.1.01
Register with any data
"The Elastic Balls.scr"
.004913EC: C3 31 ;000909EC:
.004913ED: 90 C0 ;000909ED:
.004913EE: 90 C3 ;000909EE:
;----------------------------------------->8
И в архив его

xussr
(22.03.2020 в 14:12):
Не стал выделываться просто пропатчил=
CPU Disasm
Address Hex dump Command Comments
0049137B 90 NOP
0049137C 31C0 XOR EAX,EAX ; The_Elastic_Balls.0049137C(guessed void)
0049137E C3 RETN
0049137F |. 83C4 D4 ADD ESP,-2C
00491382 |. 53 PUSH EBX
00491383 |. 56 PUSH ESI
так как не смог запустить под Olli скринсейвер
CPU Disasm
Address Hex dump Command Comments
0049137B 90 NOP
0049137C 31C0 XOR EAX,EAX ; The_Elastic_Balls.0049137C(guessed void)
0049137E C3 RETN
0049137F |. 83C4 D4 ADD ESP,-2C
00491382 |. 53 PUSH EBX
00491383 |. 56 PUSH ESI
так как не смог запустить под Olli скринсейвер

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