Главная » Статьи » Крэкинг |
Исследование программы 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 раза и попадаем в окно кода, как раз на эту сроку. Видим такую картину: 004233BD . E8 9EF9FFFF CALL Aurora_M.00422D60 Смотрим на смещение "004233C7", там стоит условный переход на адрес "004233E1", но он сработает только тогда когда мы введём правильное соотношение "Имя-код"! Но как вы понимаете мы не знаем правильного кода и когда выполнение дойдёт до места перехода, он не сработает и в стек перададуться строки сначала "Sorry", затем "Invalid username..." и затем вызовется функция MessageBox c переданными строками! Лицезреть вы это могли тогда, когда нас "посылали". Но! Так как нам это сообщение не нужно мы попробуем его перескочить заменив оператор "JNZ" на "JMP"! Итак меняем прямо в отладчике. Для этого: На операторе 2 раза мышкой и меняем JNZ на JMP (остальное не трогаем!). Запускаем, вводим любые данные и радуемся что прога нам сказала, что она "ТИПА" зарегана! Но не спешите радоваться! Попробуйте перезапустить прогу без отладчика и вы снова увидите, что прога "UNREGISTERED". Не отчаивайтесь и слушайте меня: Этот способ с JMP - безусловным переходом, прокатывает но не всегда! Дело в том что осуществляются дополнительные проверки, при старте проги! Другое дело пойти 100% путём! И замутить по другому! Как по другому я уже писал в другой статье (ищите на античате). Но для тех кто не читал я повторюсь, так что читаем и вникаем: Посмотрим ещё раз на кусок кода: 004233BD . E8 9EF9FFFF CALL Aurora_M.00422D60 Видите по адресу 004233C5 EAX, сравнивается грубо говоря с единицей! А ниже стоит переход с условием JNZ (Jump Not Zero - перейти если не нуль). Вы поняли? Нам нужно сделать так, чтобы в EAX было бы значение 1 (еденица). Можно конечно перед проверкой (TEST EAX,EAX), а именно по адресу 004233C2 заменить ADD ESP,8 на INC EAX (INC - увеличивает аккамулятор на 1), но при выполнении программе просто сорвёт башню и она может вылететь! А можно сделать так, чтобы функция, которая вызывается перед сравнением (CALL Aurora_M.00422D60), всегда возвращала в регистр EAX - еденицу! Так и делаем: Встаёим по адресу функции (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: Пишем в блокноте: {$D-}Заменяем инфу (ник и т.д.) на свои, сохраняем как crack.dpr и компилим! Всё кряк готов можно выкладывать в сети =)) Всё! На этом я заканчиваю свои долгие обьяснения. До скорых встреч! (c) KindEcstasy | |
Просмотров: 1323 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |