Исследование защиты программы Zip Password Tool
Скриншот программы Zip Password Tool
Zip Password Tool от FDRLab Data Recovery Centre - программа для подбора паролей к ZIP-архивам. Позволяет подбирать пароли прямым перебором (Brute-force attack) и по заранее созданному словарю. По скорости работы, конечно, уступает лидерам в этой области, но со своей задачей вполне справляется, так что в можно держать в запасе на всякий случай. В бесплатной версии не показывает пароли длиннее 4 символов и не позволяет перебирать пароли по словарю. Это плохо, попробуем устранить эти недостатки.
Сперва качаем дистрибутив, устанавливаем его, запускаем. Сразу же нам предлагают ввести регистрационный номер. Пропускаем этот диалог и смотрим на внешние признаки триальности. Исполняемый файл ничем не упакован, поищем в нем "нехорошие" текстовые строчки.
"Нехорошая строка"
Теперь в дизассемблере посмотрим код, который ссылается на эти строчки. Тут тоже ничего сложного нет, все очень наглядно.
Code (Assembler) : Убрать нумерацию
- CODE:004DEFF3 mov edx, [eax]
- CODE:004DEFF5 call dword ptr [edx+0ECh]
- CODE:004DEFFB mov eax, esi
- ; Вызвать функцию проверки регистрации
- CODE:004DEFFD call sub_4DCB30
- ; Если она вернула 0, то программа не зарегистрирована
- CODE:004DF002 test al, al
- CODE:004DF004 jz short loc_4DF022
- ; Установить флажок "зарегистрировано" в значение TRUE
- CODE:004DF006 mov ds:byte_4EA9AD, 1
- CODE:004DF00D mov eax, [esi+338h]
- CODE:004DF013 mov edx, 6
- CODE:004DF018 call @Spin@TSpinEdit@SetValue$qqri
- CODE:004DF01D jmp loc_4DF112
- CODE:004DF022 ; ----------------------------------------
- ; Триальная ветка алгоритма
- CODE:004DF022 loc_4DF022:
- CODE:004DF022 mov eax, [esi+3CCh]
- CODE:004DF028 mov dl, 1
- CODE:004DF02A call @Controls@TControl@SetVisible$qqro
- CODE:004DF02F mov ds:byte_4EA9AD, 0
- CODE:004DF036 mov eax, [esi+338h]
- CODE:004DF03C mov edx, 4
- ; .....
- ; Часть кода пропущена для экономии места
- ; .....
- CODE:004DF09A mov edx, [eax+0Ch]
- CODE:004DF09D lea eax, [ebp+var_10]
- ; Указатель на строку [unregistered]
- CODE:004DF0A0 mov ecx, offset _str___unregistered_.Text
- CODE:004DF0A5 call @System@@LStrCat3$qqrv
- CODE:004DF0AA mov eax, [ebp+var_10]
- CODE:004DF0AD push eax
- CODE:004DF0AE mov eax, [esi+2F8h]
- CODE:004DF0B4 mov eax, [eax+208h]
- CODE:004DF0BA xor edx, edx
- CODE:004DF0BC call sub_442F90
- CODE:004DF0C1 pop edx
- CODE:004DF0C2 call unknown_libname_742
- CODE:004DF0C7 mov eax, [esi+340h]
- CODE:004DF0CD mov eax, [eax+220h]
- CODE:004DF0D3 mov edx, offset _str_________________6.Text
- CODE:004DF0D8 mov ecx, [eax]
- CODE:004DF0DA call dword ptr [ecx+38h]
- CODE:004DF0DD call @Sysutils@Time$qqrv ; Sysutils::Time(void)
- CODE:004DF0E2 add esp, 0FFFFFFF8h
- CODE:004DF0E5 fstp [esp+1Ch+var_1C]
- CODE:004DF0E8 wait
- CODE:004DF0E9 lea eax, [ebp+var_14]
- CODE:004DF0EC call unknown_libname_169
- CODE:004DF0F1 lea eax, [ebp+var_14]
- ; Указатель на строку "Unregistered version is detected!"
- CODE:004DF0F4 mov edx, offset _str___Unregistered_.Text
- CODE:004DF0F9 call @System@@LStrCat$qqrv
- CODE:004DF0FE mov edx, [ebp+var_14]
- CODE:004DF101 mov eax, [esi+340h]
Code (Assembler) : Убрать нумерацию
- CODE:004DCB30 sub_4DCB30 proc near
- CODE:004DCB30 var_18 = byte ptr -18h
- CODE:004DCB30 var_8 = dword ptr -8
- CODE:004DCB30 var_1 = byte ptr -1
- CODE:004DCB30
- CODE:004DCB30 push ebp ; <-- записать MOV AL,1; RET
- CODE:004DCB31 mov ebp, esp
- CODE:004DCB33 add esp, 0FFFFFFE8h
- CODE:004DCB36 push ebx
- CODE:004DCB37 push esi
- CODE:004DCB38 xor edx, edx
- CODE:004DCB3A mov [ebp+var_8], edx
- CODE:004DCB3D xor eax, eax
- CODE:004DCB3F push ebp
- CODE:004DCB40 push offset loc_4DCBD1
- CODE:004DCB45 push dword ptr fs:[eax]
- CODE:004DCB48 mov fs:[eax], esp
- CODE:004DCB4B mov [ebp+var_1], 0
- ...
Программа успешно "зарегистрирована"
Для проверки попробуем подобрать пароль из 5 символов и выполнить поиск по словарю. Все опции работают, значит мы все сделали правильно. В качестве дополнительного приятного бонуса Zip Password Tool после патча может работать с любого съемного носителя, например с флешки. Затраченное время на снятие защиты - меньше одной минуты :)
Просмотров: 4935 | Комментариев: 3
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Добавить комментарий
Заполните форму для добавления комментария