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


Скриншот программы Recover Passwords

Программа Recover Passwords предназначена для автоматического сбора паролей на локальном или удаленном (при наличии соответствующих прав доступа) компьютере. Она извлекает сохраненные пароли из мессендежров, ICQ-клиентов, браузеров, почтовых программ, FTP-клиентов и т.п. Полный список поддерживаемых программ есть на офсайте, посмотрите, если интересно. В демонстрационном, то есть бесплатном режиме, Recover Passwords только показывает список найденных программ, но не показывает сами найденные пароли. Сейчас мы попробуем устранить этот недостаток.

Скачиваем дистрибутив, устанавливаем, запускаем. Действительно, программа пишет, что пароли найдены, показывает учетные записи, но сами пароли не показывает. В заголовке написано "Эта копия не зарегистрированнна" (орфография оригинала сохранена), а на панели инструментов присутствует иконка "Order me". При выходе из программы открывается наг-скрин с не менее оригинальной надписью и предложением купить ее или ввести регистрационный ключ.


Окно регистрации программы

Вот, теперь у нас есть практически все проявления незарегистрированной версии, поищем условия, при которых проявляются какие-нибудь из них. В подпапке Lang в файле Russian.xml есть строки:
<String name="cSKeyValid">Спасибо за регистрацию этого продукта</String>
<String name="cSKeyInvalid">Ключ не верный</String>

Очевидно, что это сообщения о результатах проверки регистрационного ключа, а обращение к ним идет по имени cSKeyValid или, соответственно, cSKeyInvalid. Поищем их в исполняемом файле.


Строка сообщения найдена

Найдена строка в юникоде. Теперь смотрим как и при каких условиях к ним идет обращение.
...
.text:0097BDA8                 mov     eax, [eax]
.text:0097BDAA                 mov     edx, [ebp+var_4]
; Вызвать какую-то функцию проверки
.text:0097BDAD                 call    sub_7819D0
.text:0097BDB2                 test    al, al
; Если она вернула AL=0, то вывести сообщение о неправильном ключе
.text:0097BDB4                 jz      short loc_97BE24
; Иначе записать его куда-то в реестр и поблагодарить за регистрацию
.text:0097BDB6                 lea     eax, [ebp+var_10]
.text:0097BDB9                 mov     edx, [ebp+var_4]
.text:0097BDBC                 call    sub_407FB0
.text:0097BDC1                 mov     eax, [ebp+var_10]
.text:0097BDC4                 push    eax
...
Сразу смотрим функцию проверки:
Code (Assembler) : Убрать нумерацию
.text:007819D0 sub_7819D0      proc near
.text:007819D0                 mov     eax, edx
.text:007819D2                 call    sub_781798
.text:007819D7                 retn
.text:007819D7 sub_7819D0      endp

Ну здесь без вариантов, в самое начало вписываем команды MOV Al,1; RET и сохраняем изменения. Попробуем запустить:


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

В заголовке надпись, что программа зарегистрирована, в окне "О программе" тоже, на панели инструментов пропала иконка регистрации, наг-скрина при выходе тоже нет. С виду все нормально, попробуем теперь найти пароли. На этот раз никаких проблем, все пароли открыты, что и требовалось получить. Ну а на чьих компьютерах использовать Recover Passwords - это вы уже решите самостоятельно.
Теги:
защита, взлом
Добавлено: 17 Сентября 2013 03:31:21 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...