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

Скриншот программы Donemax Disk Clone
Donemax Disk Clone Enterprise - безопасное решение для клонирования дисков в корпоративной среде. Программа предлагает два режима клонирования: полный диск или отдельный раздел. Инструмент обеспечивает 100% безопасность данных, совместим с Windows, в том числе серверными редакциями, позволяет создавать загрузочные копии и легко мигрировать с HDD на SSD. Лицензия Enterprise делает его экономически выгодным выбором для бизнеса, образовательных учреждений и организаций, особенно если сделать его бесплатным.
Забираем с офсайта дистрибутив, устанавливаем, смотрим. В папке с программой несколько исполняемых файлов, нас интересует только DMclone.exe в папке \bin. Он ничем не упакован, отправляем его на дизассемблирование. Но сперва протестируем программу в работе: проверяем триальный режим, ограничения, поведение при запуске.

Триальное окно
В главном окне сразу бросается в глаза большая кнопка "Active" и маленькая - для перехода на сайт покупки. Кнопка активации с неправильными данными не работает, а для понимания, что это ошибка, выводится красная строка "License code is invalid."

Окно "О программе"
А вот окно "О программе" с надписью "Trial" - сразу понятно, за что именно браться. Такая явная метка сильно упрощает поиск в дизассемблере, не нужно перебирать функции наугад. Достаточно найти строку в листинге и посмотреть, кто ее вызывает.
Code (Assembler) : Убрать нумерацию
- .text:004963D6 call sub_48DA90
- .text:004963DB mov ecx, eax
- ; Проверка функции
- .text:004963DD call sub_48E1D0
- ; EAX = 0 если ошибка, иначе все хорошо
- .text:004963E2 test eax, eax
- ; Переход на тральную ветку
- .text:004963E4 jz short loc_496435
- .text:004963E6 call sub_48DA90
- .text:004963EB mov ecx, eax
- ; Проверка функции
- .text:004963ED call sub_48E210
- ; EAX = 0 если это не Enterprise, иначе все хорошо
- .text:004963F2 test eax, eax
- ; Переход на обычную версию
- .text:004963F4 jz short loc_496433
- .text:004963F6 push 0FFFFFFFFh
- .text:004963F8 push 0
- ; Строка "Enterprise"
- .text:004963FA push offset aEnterprise ; "Enterprise"
- .text:004963FF lea edx, [ebp+var_34]
- .text:00496402 push edx
- .text:00496403 call ds:?tr@QObject@@SA?AVQString@@PBD0H@Z
- .text:00496409 add esp, 10h
- .text:0049640C mov [ebp+var_4C], eax
- .text:0049640F mov eax, [ebp+var_4C]
- .text:00496412 mov [ebp+var_50], eax
- .text:00496415 mov byte ptr [ebp+var_4], 4
- .text:00496419 mov ecx, [ebp+var_50]
- .text:0049641C push ecx
- .text:0049641D lea ecx, [ebp+var_14]
- .text:00496420 call ds:??YQString@@QAEAAV0@ABV0@@Z
- .text:00496426 mov byte ptr [ebp+var_4], 3
- .text:0049642A lea ecx, [ebp+var_34]
- .text:0049642D call ds:??1QString@@QAE@XZ
- .text:00496433 loc_496433:
- .text:00496433 jmp short loc_496472
- .text:00496435 ; -----------------------------------------------
- .text:00496435 loc_496435:
- .text:00496435 push 0FFFFFFFFh
- .text:00496437 push 0
- ; Строка "Trial"
- .text:00496439 push offset aTrial_0 ; "Trial"
- .text:0049643E lea edx, [ebp+var_38]
- .text:00496441 push edx
- .text:00496442 call ds:?tr@QObject@@SA?AVQString@@PBD0H@Z
- .text:00496448 add esp, 10h
- .text:0049644B mov [ebp+var_54], eax
- .text:0049644E mov eax, [ebp+var_54]
- .text:00496451 mov [ebp+var_58], eax
- .text:00496454 mov byte ptr [ebp+var_4], 5
Code (Assembler) : Убрать нумерацию
- .text:0048E1D0 sub_48E1D0 proc near
- .text:0048E1D0 push ebp
- .text:0048E1D1 mov ebp, esp
- .text:0048E1D3 push ecx
- .text:0048E1D4 mov [ebp+var_4], ecx
- .text:0048E1D7 mov eax, [ebp+var_4]
- .text:0048E1DA mov eax, [eax+0D0h]
- .text:0048E1E0 mov esp, ebp
- .text:0048E1E2 pop ebp
- .text:0048E1E3 retn
- .text:0048E1E3 sub_48E1D0 endp
Теперь надо заменить обычную лицензию на Enterprise. Формально лицензии различаются только количеством компьютеров, которые можно использовать с Donemax Disk Clone. Короче - ничем не отличаются, только строкой в окне "О программе". Переходим к адресу 004963ED и открываем функцию sub_48E210. Это тоже малюсенькая функция.
Code (Assembler) : Убрать нумерацию
- .text:0048E210 sub_48E210 proc near
- .text:0048E210 push ebp
- .text:0048E211 mov ebp, esp
- .text:0048E213 push ecx
- .text:0048E214 mov [ebp+var_4], ecx
- .text:0048E217 mov eax, [ebp+var_4]
- .text:0048E21A mov eax, [eax+0D4h]
- .text:0048E220 mov esp, ebp
- .text:0048E222 pop ebp
- .text:0048E223 retn
- .text:0048E223 sub_48E210 endp

Программа успешно "зарегистрирована"
В интерфейсе теперь чисто - никаких триальных надписей нет. Весь заявленный функционал доступен полностью, никаких ограничений нет. Цель достигнута.
Просмотров: 440 | Комментариев: 1
Метки: исследование защиты, HDD
Комментарии
Отзывы посетителей сайта о статье
Лестер Глючный
(05.05.2026 в 11:45):
мм… в папке BUILDPE есть ещё и 64-разрядная версия, и там ещё продублирована точно такая же 32-разрядная, как и в корневой \bin — у обоих уже присутствует файлик SN.dat :)
Добавить комментарий
Заполните форму для добавления комментария


