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


Скриншот программы Htpasswd Generator

Htpasswd Generator от Aleo Software - программа для генерации файлов .htaccess и .htpasswd. Эти файлы предназначены для защиты сайтов и каталогов сайтов авторизацией. Если нужно, то прочитайте информацию о них самостоятельно по приведенным ссылкам, речь же сейчас пойдет о программе. Точнее о ее защите.

Качаем дистрибутив, устанавливаем, запускаем. Тут же нас встречает триальное окно с таким бредовым сообщением:


Триальное окно

Кто не силен в буржуйском, я переведу обведенную надпись: "Зарегистрированная версия все равно не убирает триальные ограничения". Это уже вообще ни в какие ворота, и смысла такой чудо-регистрации я никак не понимаю. Хотя думается, что тут просто какая-то грамматическая ошибка или неудачная шутка юмора от автора. В любом случае платить деньги никто не собирается. Нажимаем кнопку регистрации, вводим левые данные получаем "Invalid username or registration code". Кто после таких закидонов инвалиднее - юзер или аффтар, еще можно и поспорить, ну да ладно :) Заправляем exe в дизассемблер и идем ставить чайник.

Поиск "нехорошей строки" дает нам указатель на следующий код.
                               ...
.text:00411778                 mov     eax, [ecx]
.text:0041177A                 push    eax
.text:0041177B                 call    sub_411EEC
.text:00411780                 pop     ecx
.text:00411781                 mov     edx, off_4E81B4
.text:00411787                 mov     ecx, [edx]
.text:00411789                 push    ecx
; Вот тут дизассемблер показывает, что вызывается какая-то штатная функция
; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime
; Что-то типа сравнения, или вычисления, за ненадобностью особо не разбирался
.text:0041178A                 call    unknown_libname_1
.text:0041178F                 pop     ecx
.text:00411790                 test    al, al
; По результатам ее работы AL=1 - все хорошо, AL=0 - все плохо.
.text:00411792                 jnz     short loc_4117F1
.text:00411794                 mov     eax, off_4E81B4
.text:00411799                 mov     edx, [eax]
.text:0041179B                 push    edx
.text:0041179C                 call    sub_4121F0
.text:004117A1                 pop     ecx
.text:004117A2                 push    0
.text:004117A4                 mov     word ptr [esi+10h], 14h
; Указатель на строку "Invalid username or registration code."
.text:004117AA                 mov     edx, offset aInvalidUsernam
.text:004117AF                 lea     eax, [ebp+var_14]
.text:004117B2                 call    sub_4C2180
.text:004117B7                 inc     dword ptr [esi+1Ch]
                               ...

Вроде бы функция проверки или сравнения зашита в Runtime-модуль файла, то есть ее лучше не трогать. Но не поленимся и посмотрим внимательнее на перекрестные ссылки. Их немного и все они так или иначе связаны с защитой. Кто не верит, может убедиться в этом под отладчиком:


Ссылки на функцию проверки

Хотя тут отладчик не нужен, и так все понятно по названиям вызывающиих модулей. Программа в триальном режиме не может создавать более 3-х пользователей - пожалуйста, вызовы из _TFormMain_TbnAddUserClick, _TFormMain_TbnCreateUserClick. Надо в окне "О программе" написать регистрационные данные или "незарегистрировано" - пожалуйста, вызов проверки из _TFormMain_TbnAboutClick. Отрисовать триальное окно? Да не вопрос, проверяем из _TFormMain_FormCreate. Ну а про _TFormRegister_BtnOkClick даже и говорить не надо. Так что без раздумий патчим ее на возврат AL=1, записывая в начало пару команд MOV AL,1; RET. Запускаем, проверяем. На этот раз программа заработала и даже регистрацию не спросила.


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

Ну и напоследок небольшой хинт для тех, кто хочет наблюдать в окне "О программе" себя любимого. Если поковырять программу дальше на предмет где она хранит регистрационные данные, то обнаружатся обращения к такой вот ветке реестра:

REGEDIT4

[HKEY_CURRENT_USER\Software\MAirSoft\PPP]
"Username"="ManHunter / PCL"
"RegCode"="Have a Nice Day!"


Сохраняете приведенный выше код в .reg-файл, меняете имя на свое и заносите в реестр. Вот и все, на этом с защитой программы покончено. Теперь можете спокойно изучать материал по конфигурации Apache и переходить к защите своего сайта.
Теги:
защита, взлом
Добавлено: 21 Сентября 2013 06:24:04 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...