![]() |
Исследование программы Aurora MPEG To DVD Burner!
Исследование программы Aurora MPEG To DVD Burner! Инструменты: +-----------------------------------------+ | 1) Отладчик - OllyDebuger | 2) Хексер - Hiew | 3) Borland Delphi7 - для написания патча | 4) Анализатор - PEID +-----------------------------------------+ | • Защита : [++-----]легко (для новичков) | • Версия : [1.0.0.1] | • Ссылка : [http://www.xxxxxx.ru/] +-----------------------------------------+ Программа Aurora MPEG To DVD Burner, предназначена для перекодировки MPEG в DVD -формат с последующёй записью на диск. Короче прога нужная! Итак, начальная информация дана. Приступим. Для начала скормим наш бинарник, а именно файл "Aurora MPEG To DVD.exe" анализатору PEID. Он покажет, что файл не запакован и написанн на "Microsoft Visual C++ 6.0". Вообще на будущее новичкам, старайтесь сразу анализировать файл PEID'ом, в будущем это сэкономит вам массу времени (матёрые кракеры меня поддержат). Сначала запустим программу, просто так, без отладчика и попробуем ввести "левые" данные в поля для регистрации, для этого найдите наверху такой большой замочек с надписью "Register". Кликаем и вводим: User Name: I'll_crack_you! Registration: 1234567890 Нажимаем "OK" и видим, что нас посылают с нашими замашкими супер-кракера вот таким сообщением: Invalid Username or Registration code. И сразу мы понимаем, что мы можем отыскать это сообщение в строках в отладчике! Так и делаем для этого в Olly: В окне кода кликаем правую кнопку мыши --> Serach For --> All referenced Text Strings В окне строк кликаем правую кнопку мыши --> Search For Text --> Вводим строку которую нам показала программа, а именно "Invalid Username or Registration code", незабудте поставить галочку на поиск скопом (Entire Scope), а Case Sensitive - выключить, вдруг вы ошибётесь в наборе текста и напишите например вместо "Username" - "username", тогда отладчик просто не найдёт строку! Нажимаем на сообщение 2 раза и попадаем в окно кода, как раз на эту сроку. Видим такую картину: PHP код:
На операторе 2 раза мышкой и меняем JNZ на JMP (остальное не трогаем!). Запускаем, вводим любые данные и радуемся что прога нам сказала, что она "ТИПА" зарегана! Но не спешите радоваться! Попробуйте перезапустить прогу без отладчика и вы снова увидите, что прога "UNREGISTERED". Не отчаивайтесь и слушайте меня: Этот способ с JMP - безусловным переходом, прокатывает но не всегда! Дело в том что осуществляются дополнительные проверки, при старте проги! Другое дело пойти 100% путём! И замутить по другому! Как по другому я уже писал в другой статье (ищите на античате). Но для тех кто не читал я повторюсь, так что читаем и вникаем: Посмотрим ещё раз на кусок кода: PHP код:
Встаёим по адресу функции (004233BD), нажимаем ENTER, чтобы перейти в эту функцию и меняем три первых оператора на: XOR EAX,EAX INC EAX RETN Первая строка обнулит EAX, если там что-то было. Вторая строка увеличит EAX на еденицу. Ну а третья строка просто вернёт выполнение программы на то место откуда была вызванна функция + 1 оператор (то есть на адрес 004233C2). После всех этих нехитрых манипуляций в регистре EAX будет содержаться значение 1, и мы успешно перескочим сообщение об не правильном Рег-Коде, ну а дальше дело техники: 1) В стек толкнётся сообщение об правильном коде 2) Сработает API - MessageBox c этим сообщением Вот и всё! Можете открыть HIEW и пропатчить все изменённые байты, а именно: 00422D60 33C0 00422D62 40 00422D63 C3 00422D64 90 00422D65 90 00422D66 90 Открываем HIEW, грузим "Aurora MPEG To DVD.exe", жмём F5, вводим смещение (вводить нужно с точкой, напимер: .00422D60), становимся на нужный байт, жмём F3 и меняем на изменённые значения всё байты по порядку! Нажимаем F9, для того чтобы изменения вступили в силу, закрываем HIEW, запускаем прогу, нажимаем Register и пишем своё имя или ник, нажимаем OK! Теперь прога взломана на 100%. Проверим? Закройте программу и откройте её заново, в заголовке окна вы должны видеть: Aurora MPEG To DVD Buirner (License To:ВАШ_НИК), где ВАШ_НИК - имя которое вы ввели в окне регистрации. Если вы видите ваш ник, то всё впоряде! Вот теперь точно всё! Кому и этого хватит, может дальше не читать, а кому нет, то сейчас мы напишем кряк на Delphi7: Пишем в блокноте: PHP код:
Всё! На этом я заканчиваю свои долгие обьяснения. До скорых встреч! (c) KindEcstasy |
Да защита простенькая, вот только зря не привёл что идёт перед вызовом функции, т.к. если ей передаются параметры через стек, то такой способ может привести к не коректному завершению программы.
Я заметил ты немножко путаешь, хоть и результат правельный, а путаница вот в чём, в джамповых инструкциях есть синонимы, пишутся по разному, но после компиляции результат одинаков, это "e" и "z". Тоесть "je" = "jz" и "jne" = "jnz" тогда "test eax, eax" скорее сравнивает eax не с "1", а с "0" и в этом можно убедиться на примере. Код:
je @fДумаю это кому нибудь пригодиться, я как-то скомпилил свою прогу и когда отлаживал увидел что там другие инструкции, тогда полез в мануал за опкодами, там я это и нашел. |
Hidden, ну ты прям как моя мама! За всё пытаешся прицепиться! =)))
|
KindEcstasy а не лучьше просто воспользоватся Отладчиком SoftICE а не OllyDebuger
|
не лу4ше (даже у4итывая 4то ты о нем таки узнал)
|
| Время: 12:18 |