Исследование защиты программы TextConverter
Скриншот программы TextConverter
Программа TextConverter предназначена для пакетной обработки текстовых файлов и документов. Возможности программы весьма обширны: замена текста, объединение файлов, изменение кодировки и переносов строк, поддержка регулярных выражений и еще много чего интересного. Бесплатный базовый вариант ограничен по функционалу, а за профессиональную редакцию надо выложить деньги, что, конечно же, неприемлемо.
Забираем с офсайта дистрибутив профессиональной версии, распаковываем куда-нибудь единственный исполняемый файл. Программа не требует установки, что очень хорошо. Зато при запуске сразу же требует активацию, без нее работать не хочет, что очень плохо. Зато есть оффлайновая активация, что очень хорошо. Но активация, по всей видимости, привязана к компьютеру, что очень плохо. Короче, отправляем файл на разбор в дизассемблер.
Для начала надо сделать так, чтобы программа принимала как минимум любой ключ активации, чтобы продвинуться дальше. Все сообщения о неправильном ключе появляются после вот этого блока кода:
Code (Assembler) : Убрать нумерацию
- .text:0053FB47 call sub_40FABC
- .text:0053FB4C mov edx, [ebp+var_18]
- .text:0053FB4F lea eax, [ebp+var_4]
- ; Вызвать функцию проверки
- .text:0053FB52 call sub_4050A4
- ; Результат проверки
- .text:0053FB57 mov edx, [ebp+var_4]
- .text:0053FB5A mov eax, edx
- .text:0053FB5C test eax, eax
- .text:0053FB5E jz short loc_53FB65
- .text:0053FB60 sub eax, 4
- .text:0053FB63 mov eax, [eax]
- .text:0053FB65 loc_53FB65:
- .text:0053FB65 cmp eax, 190h
- ; Проверка не пройдена
- .text:0053FB6A jnz short loc_53FB70
- ; Проверка завершилась успешно, присвоить AL=1
- .text:0053FB6C mov al, 1
- .text:0053FB6E jmp short loc_53FB83
- .text:0053FB70 ; ---------------------------------------
- .text:0053FB70 loc_53FB70:
- .text:0053FB70 mov eax, edx
- .text:0053FB72 test eax, eax
- .text:0053FB74 jz short loc_53FB7B
- .text:0053FB76 sub eax, 4
- .text:0053FB79 mov eax, [eax]
- .text:0053FB7B loc_53FB7B:
- .text:0053FB7B cmp eax, 1F4h
- .text:0053FB80 setz al
- .text:0053FB83 loc_53FB83:
- ; Если AL=0, то вывести сообщение о неправильном ключе активации
- .text:0053FB83 test al, al
- .text:0053FB85 jz loc_53FD7A
- ; Сохранить ключ в файл
- .text:0053FB8B lea edx, [ebp+var_28]
- .text:0053FB8E xor eax, eax
- .text:0053FB90 call sub_4031C8
- .text:0053FB95 mov edx, [ebp+var_28]
Code (Assembler) : Убрать нумерацию
- .itext:005600A4 lea edx, [ebp-14h]
- .itext:005600A7 call sub_48205C
- .itext:005600AC mov edx, [ebp-14h]
- .itext:005600AF mov eax, offset dword_56BD3C
- ; Обработать файл с ключом
- .itext:005600B4 mov ecx, offset aTkpro_key ; "TKPRO.KEY"
- .itext:005600B9 call sub_405A80
- .itext:005600BE mov eax, ds:dword_56BD3C
- ; Проверить наличие файла
- .itext:005600C3 call sub_482214
- .itext:005600C8 test al, al
- ; Файл не найден
- .itext:005600CA jz loc_56023C
- .itext:005600D0 mov eax, off_567E90
- .itext:005600D5 mov eax, [eax]
- .itext:005600D7 mov edx, ds:dword_56BD3C
- ; Проверить корректность сохраненного ключа активации
- .itext:005600DD call sub_541E6C
- .itext:005600E2 mov edx, off_567AE4
- .itext:005600E8 mov [edx], eax
- .itext:005600EA mov eax, off_567AE4
- ; В зависимости от результатов проверки установить тип лицензии
- .itext:005600EF cmp dword ptr [eax], 0
- .itext:005600F2 jle loc_560232
- .itext:005600F8 mov eax, off_567AE4
- .itext:005600FD cmp dword ptr [eax], 2
- .itext:00560100 jz short loc_56010C
- .itext:00560102 mov eax, off_567AE4
- .itext:00560107 cmp dword ptr [eax], 9
- .itext:0056010A jnz short loc_560114
- .itext:0056010C loc_56010C:
- .itext:0056010C mov eax, off_567B68
- .itext:00560111 mov byte ptr [eax], 1
- .itext:00560114 loc_560114:
- .itext:00560114 mov eax, off_567AE4
- .itext:00560119 cmp dword ptr [eax], 3
- .itext:0056011C jz short loc_560128
- .itext:0056011E mov eax, off_567AE4
- .itext:00560123 cmp dword ptr [eax], 9
- .itext:00560126 jnz short loc_560130
Code (Assembler) : Убрать нумерацию
- .itext:00560130 mov eax, off_567AE4
- .itext:00560135 cmp dword ptr [eax], 1
- .itext:00560138 jnz short loc_560149
- .itext:0056013A mov eax, offset dword_56BD3C
- .itext:0056013F mov edx, offset aPro ; "Pro"
- .itext:00560144 call sub_405864
- .itext:00560149 loc_560149:
- .itext:00560149 mov eax, off_567AE4
- .itext:0056014E cmp dword ptr [eax], 2
- .itext:00560151 jnz short loc_560162
- .itext:00560153 mov eax, offset dword_56BD3C
- .itext:00560158 mov edx, offset aCl ; "CL"
- .itext:0056015D call sub_405864
- .itext:00560162 loc_560162:
- .itext:00560162 mov eax, off_567AE4
- .itext:00560167 cmp dword ptr [eax], 3
- .itext:0056016A jnz short loc_56017B
- .itext:0056016C mov eax, offset dword_56BD3C
- .itext:00560171 mov edx, offset aCsv_1 ; "CSV"
- .itext:00560176 call sub_405864
- .itext:0056017B loc_56017B:
- .itext:0056017B mov eax, off_567AE4
- .itext:00560180 cmp dword ptr [eax], 9
- .itext:00560183 jnz short loc_560194
- .itext:00560185 mov eax, offset dword_56BD3C
- .itext:0056018A mov edx, offset aFull ; "Full"
- .itext:0056018F call sub_405864
Программа успешно "зарегистрирована"
Сохраняем изменения, удаляем ключевой файл, запускаем программу. Все работает, цель достигнута. Подобным способом отучаются от жадности и другие программы этого разработчика.
Просмотров: 1245 | Комментариев: 1
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
user
(26.02.2024 в 16:38):
.5421B4 ,а не .541E6C
Добавить комментарий
Заполните форму для добавления комментария