Blog. Just Blog

Исследование защиты программы RAR Password Recovery Magic

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы RAR Password Recovery Magic
Скриншот программы RAR Password Recovery Magic

Программа RAR Password Recovery Magic предназначена для восстановления забытых паролей к архивам RAR. Скорость работы существенно уступает топовым аналогам, так что программа сгодится исключительно для экспериментов. Пытается подобрать пароли по заранее созданному словарю, а также прямым перебором (brute-force). Настройки скудноваты, видимо вся энергия авторов ушла на написание интерфейса с поддержкой графического скина, или же в свое время это была чья-то лабораторная по информатике. К минусам можно отнести еще и шароварность.

Скачиваем дистрибутив, устанавливаем, запускаем. На запрос регистрации введем любые неправильные данные, получим сообщение "You are unsuccessful!". Запускающий файл ничем не упакован, строка сообщения обнаруживается в секции данных:
  1. CODE:004A2B1C _str_You_are_unsucce dd 0FFFFFFFFh           ; _top
  2. CODE:004A2B1C                 dd 21                   ; Len
  3. CODE:004A2B1C                 db 'You are unsuccessful!',0; Text
На нее ссылается указатель:
  1. DATA:004ACB0C off_4ACB0C      dd offset _str_You_are_unsucce.Text
  2. DATA:004ACB0C ; DATA XREF: sub_4A3EAC+1DA
  3. DATA:004ACB0C ; sub_4A4170+16C...
На него в свою очередь ссылается следующий указатель:
  1. DATA:004AD118 off_4AD118      dd offset off_4ACB0C
  2.     ; DATA XREF: _TCode_btnOkClick+DA
И только на этот указатель есть ссылка из секции кода:
  1. ...
  2. CODE:004A4EFD                 call    @Controls@TControl@GetText$qqrv
  3. ; Controls::TControl::GetText(void)
  4. CODE:004A4F02                 mov     eax, [ebp+var_4]
  5. CODE:004A4F05                 push    eax
  6. CODE:004A4F06                 lea     edx, [ebp+var_8]
  7. CODE:004A4F09                 mov     eax, [ebx+308h]
  8. CODE:004A4F0F                 call    @Controls@TControl@GetText$qqrv
  9. ; Controls::TControl::GetText(void)
  10. CODE:004A4F14                 mov     edx, [ebp+var_8]
  11. CODE:004A4F17                 mov     eax, ds:off_4ACC58
  12. CODE:004A4F1C                 mov     eax, [eax]
  13. CODE:004A4F1E                 mov     eax, [eax+370h]
  14. CODE:004A4F24                 pop     ecx
  15. ; Вызвать функцию проверки введенных данных
  16. CODE:004A4F25                 call    @Sqledit@EditSQL$qqrp16Classes
  17. CODE:004A4F2A                 test    al, al
  18. ; Если функция вернула AL = 0, то введенные данные неправильные
  19. CODE:004A4F2C                 jz      short loc_4A4FA3
  20. ; Программа успешно зарегистрирована
  21. CODE:004A4F2E                 mov     edx, ds:off_4ACDD8
  22. CODE:004A4F34                 mov     edx, [edx]
  23. CODE:004A4F36                 mov     eax, ds:off_4ACC58
  24. CODE:004A4F3B                 mov     eax, [eax]
  25. ...
  26. ; Часть кода пропущена
  27. ...
  28. CODE:004A4FA1                 jmp     short loc_4A4FC6
  29. CODE:004A4FA3 ; ----------------------------------------------------
  30. CODE:004A4FA3 loc_4A4FA3:
  31. ; Показать сообщение о неправильном серийном номере
  32. CODE:004A4FA3                 push    10h             ; uType
  33. CODE:004A4FA5                 mov     eax, ds:off_4ACE88
  34. CODE:004A4FAA                 mov     eax, [eax]
  35. CODE:004A4FAC                 call    @System@@LStrToPChar$qqrx17System
  36. ; System::__linkproc__ LStrToPChar(System::AnsiString)
  37. CODE:004A4FB1                 push    eax             ; lpCaption
  38. CODE:004A4FB2                 mov     eax, ds:off_4AD118
  39. CODE:004A4FB7                 mov     eax, [eax]
  40. CODE:004A4FB9                 call    @System@@LStrToPChar$qqrx17System
  41. ; System::__linkproc__ LStrToPChar(System::AnsiString)
  42. CODE:004A4FBE                 push    eax             ; lpText
  43. CODE:004A4FBF                 push    0               ; hWnd
  44. CODE:004A4FC1                 call    MessageBoxA_0_0
  45. ...
Теперь запустим программу под отладчиком и поставим точку останова по адресу 004A4F25. Введем в окно регистрации ваше имя и любой неправильный серийный номер, отладчик остановится на вызове функции проверки. Попробуем пройти ее пошагово. В самом начале функции на стеке видны введенное имя и неправильный серийник, а потом на основе введенного имени по адресу 00490F76 производятся какие-то расчеты.

Пошаговая трассировка
Пошаговая трассировка

Если внимательно наблюдать за стеком, то можно заметить, что после этого в нем появилось еще одно интересное значение, очень похожее на какой-то серийный номер:

Серийный номер найден
Серийный номер найден

Далее в регистры EAX и EDX заносится новая строка и введенный серийный номер, и по адресу 00490F81 выполняется их сравнение. Предположим, что это и есть правильный серийный номер для введенного имени. Скопируем его и повторим регистрацию, но уже с ним.

Программа успешно зарегистрирована
Программа успешно зарегистрирована

Как видим, наша догадка подтвердилась и регистрация прошла успешно. Теперь можно побаловаться и самой программой, чтобы убедиться в ее несостоятельности. Вот такая никому не нужная программа с никчемной защитой. Дорогие товарищи программисты, пожалуйста, никогда не пишите подобный софт! В интернете и без того слишком много хлама!

Поделиться ссылкой ВКонтакте
Просмотров: 5653 | Комментариев: 3

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

Комментарии

Отзывы посетителей сайта о статье
ManHunter (10.01.2010 в 14:57):
Консольный cRARk однозначно рулит
http://www.password-crackers.r...gram_13.html
INC. (10.01.2010 в 08:38):
Баг детектед
как вариант можете попробовать
Advanced RAR Password Recovery (http://www.passwords.ru/progs_rus.php)
WinRar Password Remover (_http://www.intelore.com/rar_password_recovery.php)

ManHunter
Очередной раз большое спасибо за статью.
ps: скриншоты не обрезал.
Баг детектед (10.01.2010 в 06:47):
а какой аналогичный софт посоветуете?

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0063 сек.) / Память: 4.5 Mb
Наверх