Тренируемся на кошках Виталий "Vir_rus" Чернов Хакер, номер #095, стр. 095-078-1 (vr-soft@mail.ru) Тренировка во взломе шароварных программ Шароварные программы - дело рук не только начинающих программистов, но и профессионалов, живущих только за счет регистрации пользователей этих программ. Если софт действительно отвечает всем своим требованиям и стоит того, чтобы отдать за него какие-то 10-50$, то я предпочитаю пойти честным путем. Но если мы открываем прогу и видим, как говорится, фигу, за которую требуют 100, а то и больше американских президентов, то нет прощения таким программистам, и проги их нужно ломать, ломать и только ломать. И поговорка «ломать – не строить» в данном случае неуместна. Сегодня мы не будем заниматься противозаконными действиями, взламывая платные программы. Вместо этого мы попробуем потренироваться на ресурсе crackmes.de. Это сайт, на котором можно найти программы, специально созданные для того, чтобы их «ломали». Точнее, чтобы исследовать различные методы защиты и делиться опытом на специальном форуме. Все crackmes делятся на 9 степеней сложности. В этой статье мы «постигнем» лишь первую из них. Crack them ALL! Я хочу показать, как можно обойти самую простую защиту проверки регистрационного номера тремя способами. В первом случае мы будем просто переводить поток из ложного русла в истинное, во втором – сделаем так, чтобы прога сама выдавала верный номер в ответ на введенное имя, а в третьем - напишем свой генератор серийного номера на Ассемблере. Причем в последнем случае мы даже не будем углубляться в дебри алгоритма, а тупо скопируем дизассемблированный код, адреса памяти заменим своими переменными, а переходы по адресам - переходами по заранее заготовленным меткам. Ломать будем подопытный crackme #2 от Lafarge. Взять его можно на нашем DVD. Для взлома нам понадобится такой софт: PEID – для проверки бинарного файла на наличие упаковщика, а также для определения языка, на котором написана программа (что в нашем случае совсем необязательно). Olly – отладчик, в котором мы, собственно, и будем отлаживать подопытную прогу. HIEW – HEX-редактор и дизассемблер одновременно. Очень полезная вещь. В нем мы будем править байты по найденным адресам. Экзекуция #1 Распаковываем архив и запускаем crackme.exe. Видим типичное окно с двумя edit’ами и тремя button’ами. В первом edit’е нас просят ввести имя пользователя, а во втором - регистрационный код. Вводим свое имя и любой номер. Нажимаем «Check it!». Выходит сообщение MessageBoxA с заголовком «Bad Boy» и текстом «Note, thats not it! Try again». Выходим из программы, запускаем Olly и открываем в нем crackme.exe. В командной строке Olly пишем «bpx MessageBoxA», жмем F9, чтобы запустить программу. Вводим имя, регистрационный код и опять жмем «Check it!». Активизируется Olly, и мы вываливаемся по адресу 004012E3. Это адрес процедуры MessageBoxA в модуле User32.dll. Перед тем как выдать сообщение, User32.dll должен взять из стека необходимые для этого данные - стиль, заголовок, текст сообщения и имя родительского окна. Если мы посмотрим чуть выше, то увидим команду PUSH 10. Именно с нее начинается толкание в стек всего, что нужно для отображения MessageBox. Поставим курсор на эту строчку и определим, с какого адреса мы сюда попали. Olly пишет «Jump from 004012BC». Посмотрим, что у нас висит по этому адресу... «JNZ SHORT crackme.004012D4», а на строчку выше - условие OR EAX,EAX. То есть если мы поменяем условие на противоположное, то перехода не будет и программа продолжит выполняться. Поставим курсор на OR EAX,EAX, нажмем пробел и допишем вначале всего одну букву «X», чтобы получилось «XOR EAX,EAX». Опять жмем F9 и... успешно проходим регистрацию. Можно также поменять строчку «JNZ SHORT crackme.004012D4» на «JZ SHORT crackme.004012D4». Какой способ использовать из этих двух, неважно. Оба дают на выходе одинаковый результат. Открываем crackme.exe в HIEW, жмем F4, выбираем decode, жмем F5, чтобы перейти по указанному адресу, и пишем «004012BC». После того как окажемся по нужному адресу, жмем F3 для редактирования и F2 для режима ассемблера. Теперь в появившейся команде пишем «JE» вместо «JNE», Enter, Esc, F9, F10. Запускаем crackme.exe, вводим данные и успешно регистрируемся. Программа говорит, что мы хорошие мальчики и можем пойти попить чай. Все, программу можно считать взломанной. |