Blog. Just Blog

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

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

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

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

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

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

Поиск "нехорошей строки" дает нам указатель на следующий код.
  1.                                ...
  2. .text:00411778                 mov     eax, [ecx]
  3. .text:0041177A                 push    eax
  4. .text:0041177B                 call    sub_411EEC
  5. .text:00411780                 pop     ecx
  6. .text:00411781                 mov     edx, off_4E81B4
  7. .text:00411787                 mov     ecx, [edx]
  8. .text:00411789                 push    ecx
  9. ; Вот тут дизассемблер показывает, что вызывается какая-то штатная функция
  10. ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime
  11. ; Что-то типа сравнения, или вычисления, за ненадобностью особо не разбирался
  12. .text:0041178A                 call    unknown_libname_1
  13. .text:0041178F                 pop     ecx
  14. .text:00411790                 test    al, al
  15. ; По результатам ее работы AL=1 - все хорошо, AL=0 - все плохо.
  16. .text:00411792                 jnz     short loc_4117F1
  17. .text:00411794                 mov     eax, off_4E81B4
  18. .text:00411799                 mov     edx, [eax]
  19. .text:0041179B                 push    edx
  20. .text:0041179C                 call    sub_4121F0
  21. .text:004117A1                 pop     ecx
  22. .text:004117A2                 push    0
  23. .text:004117A4                 mov     word ptr [esi+10h], 14h
  24. ; Указатель на строку "Invalid username or registration code."
  25. .text:004117AA                 mov     edx, offset aInvalidUsernam
  26. .text:004117AF                 lea     eax, [ebp+var_14]
  27. .text:004117B2                 call    sub_4C2180
  28. .text:004117B7                 inc     dword ptr [esi+1Ch]
  29.                                ...
Вроде бы функция проверки или сравнения зашита в 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 и переходить к защите своего сайта.

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

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

Комментарии

Отзывы посетителей сайта о статье
ManHunter (06.08.2009 в 16:19):
Ты забыл добавить волшебное слово "да побыстрее".
Robbie (06.08.2009 в 16:12):
это не защита ) лучше напиши-ка как быстро и не напрягаясь снимать фимку (themida) с PE-шников ;) прочту с удовольствием.

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

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

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