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

Скриншот программы Launcher
Launcher - небольшая программа, которая позволяет создавать на рабочем столе панель быстрого запуска. Сюда можно добавлять программы, специальные ярлыки, папки, отдельные файлы, чтобы максимально быстро получать к ним доступ. Все настраивается, а внешний вид кастомизируется шкурками. Но без регистрации можно создать только 16 ярлыков. Маловато будет, маловато!
Забираем с сайта дистрибутив стабильной версии, устанавливаем, смотрим. Главный исполняемый файл упакован UPX, снимаем его им же. Команда upx -d Launcher.exe и перед нами готовый для исследования файл. Отправляем его в дизассемблер.

Окно "О программе"
Из признаков триальности в первую очередь бросается в глаза уведомление в окне "О программе" - надпись "Shareware Limit".

Строка в файле
Строка в юникоде без проблем обнаруживается в файле. Переходим в дизассемблер и ищем где и как она используется.
Code (Assembler) : Убрать нумерацию
- .data:006EE56C off_6EE56C dd offset aSharewareLimit
- .data:006EE56C ; "Shareware Limit"
Code (Assembler) : Убрать нумерацию
- ; Проверить флаг регистрации
- .text:006D8488 cmp ds:byte_717633, 0
- .text:006D848F jnz short loc_6D84B6
- ; Он установлен, строку об ограничении не выводить
- .text:006D8491 mov eax, ds:dword_7174F8
- .text:006D8496 imul ds:dword_7174D8
- .text:006D849C add ebx, eax
- .text:006D849E cmp ebx, 0Fh
- .text:006D84A1 jle short loc_6D84B6
- .text:006D84A3 lea eax, [ebp+var_4]
- .text:006D84A6 mov ecx, offset asc_6D8988 ; " !"
- ; Загрузить строку "Shareware Limit"
- .text:006D84AB mov edx, off_6EE56C
- .text:006D84B1 call sub_40B7E8
- .text:006D84B6 loc_6D84B6:
- .text:006D84B6 mov eax, [ebp+var_4]
- .text:006D84B9 test eax, eax
- .text:006D84BB jz short loc_6D84C2
- .text:006D84BD sub eax, 4

Перекрестные ссылки на флаг
IDA любезно подсказывает, что значение флага меняется в двух местах, в остальных только выполняется проверка его значения. Нас интересует, при каких условиях флаг регистрации сбрасывается, то есть выполнен запуск незарегистрированной программы.
Code (Assembler) : Убрать нумерацию
- .text:006C9FD4 call dword ptr [ebx+0Ch]
- .text:006C9FD7 push [ebp+var_D0]
- .text:006C9FDD push offset dword_6CB1C4
- .text:006C9FE2 mov eax, offset dword_7175C8
- .text:006C9FE7 mov edx, 4
- .text:006C9FEC call sub_40B870
- .text:006C9FF1 jmp short loc_6C9FFA
- .text:006C9FF3 ; ---------------------------------------
- .text:006C9FF3 loc_6C9FF3:
- ; Сбросить флаг регистрации
- .text:006C9FF3 mov ds:byte_717633, 0
- .text:006C9FFA loc_6C9FFA:
- .text:006C9FFA nop
- .text:006C9FFB nop
- .text:006C9FFC nop
- .text:006C9FFD nop
- .text:006C9FFE mov eax, [ebp+var_24]
- .text:006CA001 call sub_4088EC

Программа успешно "зарегистрирована"
Проверяем функционал. Никаких ограничений по количеству добавляемых кнопок нет, в окне "О программе" красуется надпись, что это все для кого-то зарегистрировано. Цель достигнута.
Просмотров: 437 | Комментариев: 0
Метки: исследование защиты

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

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