|
|||||||||||||||||||||||||||||||||||||||||||
Автор: [RU].Ban0K!.
. Дата публикации: 16.5.04
|
Исследование защиты CrackMe#1 by GPcH Введение Статья, значит, посвящена изучению CrackMe созданном на VB без P-CODE... Данный кракме подкинул мне GPcH, скачать его можно с GPcH.iNT3.net. Защита как защита, только вот усложнена она тем что написана на VB и облегчена ошибкой автора :) Начнём Открываем OllyDebuger, в нём открываем КракМе. Запускаем его, вводим всё что попало и выходит сообщение о неправильности кода. Значит ловить будем на MessageBox, но так как в VB не используется такая API, то будем ловить по аналогу... rtcMsgBox. Нажимаем Ctrl-N, ищем таковую... не находим... дело в том что функции начинающиеся на rtc вызываются по ординате, для нашей функции это будет 595, ставим точку останова, всего их вышло 4. Давайте разберёмся какие в каком случае вызываются. Первая:
Не в счёт... по ясным причинам... Вторая:
Заходим на адрес по которому совершается вызов... прокручиваем немного вверх, видим много повторяющейся ерунды, это не что иное как помещение в стэк текста для сообщения, автор хотел зделать некий обман, чтоб строки не видно было... Смотрим ещё выше и натыкаемся на следующее:
Краткое описание: В eax, адрес нашего логина, находим его длину, сравниваем с 4, если меньше то устанавливаем cl в 1, помещаем негатив в esi, освобождаем строку и удаляем объект. Сравниваем esi c 0 (он находится в ebx) если не равно то идём к rtcMsgBox, я думаю всё ясно... Третья:
Опять же поднимаемся выше и находим строку на которую совершается прыжок, перед ней безусловный жимп который обходит наш rtcMsgBox. Идём на код который совершает переход на эту строку, посмотрим этот код:
Думаю, этот код не требует объяснений... в отличии от предыдущего сравнивает длину пароля с 10. Теперь у нас есть два ограничения... И наконеч рассмотрим четвёртый вызов:
Перейдём по указанному адресу прокрутив вверх мы не увидим ничего :), прокрутив на начало процедуры, увидем следующее:
Делаем вывод... эта процедура, обработчик ошибок... Вот всё что мы имеем... теперь мы пойдём туда где был безусловный жимп в который обходил rtcMsgBox в прошлый раз... и посмотрим на процедуру после которой он вызывается:
Только в VB (я имею ввиду компиляторы, так как в PHP тоже есть такая возможность..., но это не компилятор :) ) есть очень интересная возможность :), вызвать процедуру имея строку с её имянем... Это делает процедура: rtcCallByName :). Поставив точку останова на место её вызова и введя логин и пароль подходящие под найденые границы мы попадаем на это место. Если мы ввели не правельный пароль то пройдя поверх этой процедуры мы попадаем в Exception, а следовательно на четвёртый rtcMsgBox. Посмотрев во круг я понял что параметр (имя процедуры) это покодированные логин и пароль. Причём имя процедуры 10 символов... По хорошему следовало порыть всю функцию rtcCallByName (как я и зделал) и там найти все процедуры которые есть в проге, но можно поступить легче, т.к. прога у нас маленькая, легче просмотреть весь её код... и найти следующее:
Я незнаю правда на сколько легче..., но я сразу это не нашёл :), единственное что я тут увидел их 10 символов и более или менее подходящее по названию это RegisterOK. Поставив опять бряк на rtcCallByName и передав её в параметрах имя найденой процедуры в уникоде... мы получим сообщение что регистрационная информация принята :) Остаётся найти наш код... я не стал чесно искать процедуру где происходит шифровка, а просто подумал, входные данные 10 символов пароля и выходные 10 символов процедуры... подставив за место пароля RegisterOK и за место логина [RU].Ban0K! я получил фальшивое имя процедуры PgfkstarFN, потом поставив имя процедуры на место пароля... получил имя функции RegisterOK, следовательно шифровка была не иная как простой XOR (или чтото иное, тем ни менее полностью обратимая :) ). и так имя \"[RU].Ban0K!\", регистрационный код \"PgfkstarFN\"... [RU].Ban0K!
| ||||||||||||||||||||||||||||||||||||||||||
| отсутствуют |
| :: Последние обновления :: |
| 04.09.2011 Долгожданный релиз VB Decompiler. Масса улучшений декомпиляции Native Code. Значительно расширенна и обновлена справочная система на русском и английском языках. |
| 20.12.2010 DotFix Software поздравляет наших клиентов и посетителей сайта с наступающим Новым Годом и рождеством! Желаем приятно провести праздники и успехов в новом году! |
| 28.11.2010 Выпущена новая версия защиты DotFix NiceProtect. Основные изменения коснулись обфускатора Delphi программ. Теперь имеется полная поддержка Tab и Page контролов на формах, что обеспечивает максимальную совместимость обфускации с Delphi XE программами. |
| 21.10.2010 Обновлен декомпилятор Visual Basic программ до версии 8.1. Декомпиляция P-Code программ становится все более идеальной, также проделана большая работа по улучшению анализа Native Code и .NET приложений. |
| 16.09.2009 Полностью обновлен движок сайта! Теперь все ссылки имеют читаемый понятный вид, разного рода глюки на страницах убраны. И теперь сайт полноценно работает на второй версии нашего движка. |
Движок сайта: DotFix Engine v0.2 Администрация сайта: |