Исследование Badcopy Pro v3.71 build 0720
Перейти на главную страницу, индексную страницу.
Автор : TITBIT мыло: TITBIT
Подопытный кролик BadCopy Pro v3.71 biuld 0720
Язык проги : Borland Delphi 6.0
Инструменты:WinDasm32 v8.xx-9.xx,
PEid v0.8-0.9,
SoftIce v3.xx-4.xx,
CASPR v1.1,
EmEditor v3.xx, (для написания этой статьи)
Hexplorer v2.12b,
Reshacker v3.4.0.79,
и холодное пиво, как без него....
ВСТУПЛЕНИЕ
Эта статья посвящена всем кто только только начинает изучения такого ТАИНСТВА как КрЭкинГ :)))))))
Здорова Пиплы!!! Вот решил написать свою первую статью о исследовании
прог. Комп даст не последнею :))
О программе ...
BadCopy Pro прога для восстановления данных с поврежденных дискет, компактов, zip дисков и т.д.
Как и все хорошие проги она требует плату за её использование, а точнее 39.50$.
Без бабла она работает в триал режиме, т.е. файлы восстанавливает, но не сохраняет.
Вообще можно в инете надыбать ключ к ней, но мы ща займемся взломом. Начнем-с...
Иследование
Сразу замечу, что это только один способ взлома проги, есть и другие.
Помоему он является самым простым.
Сначала посмотрим в PEid'e запакована ли наша прога.
Он показал что эта ASPack 1.02a->Alexey Solodnikov.Этот аспак распаковывается CASPR'ом.
Кстате насчет CASPR'a: как известно он не имеет GUI меню, поэтому нужно использовать консоль,
что по-моему неудобно. Так вот я предлагаю в папке с CASPR'ом создать при помощи Блокнота
вот такой файл с содержанием:
@ECHO OFF
caspr *.exe
и сохранить его с расширением *.bat (например unpacked.bat)
Теперь можно помещать в папку с CASPR'ом любой запакованый файл и нажимать на
UNPACKED.BAT, и CASPR его распакует автоматически!!!
После распаковки получаем файл ==Badcopy.ex_==. Меняем название на ==Badcopy.exe== и ложем
этот файл в папку ../Program Files/Juftsoft/Badcopy/. Заранее сделав копию оригинального
фала *ЕХЕ*. Теперь кидаем прогу в WInDASM32, кстати советую сделать копию распакованного
файла ==Badcopy.exe==. Это делаем для того, чтобы при правке байтов не нужно было бы вырубать
WInDAsm32. Я например делаю так: копирую файл и вставляю его в той же папке.
Ну вот теперь получив файл ==Копия BadCopy.exe== диссамблируем его с WInDasm'ом.
Затем в WinDasm'е открываем SDR (вторая кнопка с конца на панеле инструментов) ищем там
строчку ==SAVEFILE==. Почему эту? Все просто.. Прога восстанавливает файлы, но при попытке
сохранить их выбрасывает окно о том, что мы мол бабла не платили и поэтому хер сохраним файлы.
Поэтому меня и заинтересовала строка SAVEFILE. Ну вот щелкнув два раза по этой строчке
мы оказываемся в коде проги:
* Possible StringData Ref from Cоde obj ->"SaveFile"
:004EE34C BAECE94E00 mov edx, 004EE9EC
:004EE351 E8066BF1FF call 00404E5C
:004ee356 0F857D010000 jne 004EE4D9
:004EE35C A1BC4D5000 mov eax, dword ptr [00504DBC]
:004EE361 803800 cmp byte ptr [eax], 00
:004EE364 75D0 jne 004EE373 <<<Прыжок (если JNE попадаем на окно облома, если JE прыгаем)
:004EE366 8B45FC mov eax, dword ptr [ebp-o4]
:004EE369 E85E1C0000 call 004EFFCC <<<Вызов окна "Облома" при попытке сохранить файлы>>>
:004EE36E E90F060000 jmp 004EE982
* Reference by a (U)nconditional or (C)onditional Jump at Address:
|:004EE364(C)
|
:004EE373 8D55E4 lea edx, dword ptr [ebp-1C] <<<Прыгаем сюда>>>
:004EE376 8B45FC mov eax, dword ptr [ebp-04]
:004EE379 8B8098040000 mov eax, dword ptr [eax+00000498]
:004EE37F E8AC24F6FF call 00450830
:004EE384 8B45E4 mov eax, dword ptr [ebp-1C]
:004EE387 8D55E8 lea edx, dword ptr [ebp-18]
:004EE38A E891ADF1FF call 00409120
:004EE38F 837DE800 cmp dword ptr [ebp-18], 00000000
:004EE393 751A jne 004EE3AF
:004EE395 8D55ED lea edx, dword ptr [ebp-20]
* Possible StringData Ref from Cоde obj ->"0gP"
:004EE398 B81CCB4Е00 mov eax, 004ECB1C
:004EE390 E80A8AF1FF call 00406DAC
:004EE3A2 8B45E0 mov eax, dword ptr [ebp-20]
:004EE3A5 E84EBCF5FF call 0044FF8
:004EE3AA E9D3050000 jmp 004EE982
* Reference by a (U)nconditional or (C)onditional Jump at Address:
|:004EE393(C)
|
:004EE3AF E83CCFF1FF call 0040B2F0
:004EE3B4 D81DF8E94E00 fgomp dword ptr [004EE9F8]
:004EE3BA DFE0 fstsw ax
:004EE3BC 9E sahf
:004EE3BD 7223 jb 004EE3E2
:004EE3BF 8B1578595999 mov edx, dword ptr [00505078]
:004EE3C5 8B12 mov edx, dword ptr [edx]
* Possible StringData Ref from Cоde obj ->"ID="
:004EE3C7 B804EA4E00 mov eax, 004EEA04
:004EE3CC E8836CF1FF call 00405054
:004EE3D1 85C0 test eax, eax
:004EE3D3 750D jne 004EE3E2
:004EE3D5 8B45FC mov eax, dword ptr [ebp-o4]
:004EE3D8 E8EF1B0000 call 004EFFCC <<<Еще один вызов функции окна "Облома" >>>
:004EE3DD E9A0050000 jmp 004EE982
* Reference by a (U)nconditional or (C)onditional Jump at Address:
|:004EE3BD(C), :004EE303(C)
|
:004EE3E2 66BA0500 mov dx, 0005
:004EE3E6 A1EC918600 mov eax, dword ptr [00B691EC]
:004EE3EB E8C8F6FFFF call 004EDAB8
:004EE3F0 8D55DC lea edx, dword ptr [ebp-24]
* Possible StringData Ref from Cоde obj ->"0gP"
:004EE3F3 B824CB4E00 mov eax, 004ECB24
:004EE3F8 E8AF89F1FF call 00406DAC
:004EE3FD 8B55DC mov edx, dword ptr [ebp-24]
:004EE400 A1EC91B600 mov eax, dword ptr [00B691EC]
:004EE405 E866F7FFFF call 004EDB70
* Possible StringData Ref from Cоde obj ->"Fine" <<<Интересная строчка!!! Видимо отсюда начинается сохранение файлов>>>
:004EE40A BA10EA4E00 mov edx, 004EEA10
|
Теперь думаем.. Если мы заменим в этой строчке (:004EE364) переход т.е.
JNE на JE мы опять дальше попадём на второй CALL (Окно "Облома") :004EE3D8 но оно нам
на хрен не нужно. Что бы избавиться от этого можно занопить CALL'ы или сделать безусловный
переход в нужное нам место. Мне больше нравиться второе решение.
Итак приступим....Вот здесь :004EE364 меняем JNE 004EE373 на JMP 004EE40A.
Тем самым мы пропустим окна "Oблома" и окажемся в том месте кода где видимо начинается
сохранения файлов. Теперь запускаем SoftIce (далее Айс) нажав CTRL+D. Ставим прерывание
для останова проги bpx getversion, поставив выходим из Айса F5 далее запускаем
прогу BadCopy. Ну вот прога остановилась и мы очутились в Айсе.
Сейчас можем убрать прерывание bpx getversion командой bc * и ставим новое
bpx 004EE364, тем самым мы окажемся в нужном нам месте, т.е. на переходе JNE.
Теперь нам нужно переписать hex значения для последующего нахождения их в HEX редакторе.
Смотрим значения напротив JNE, в моем случае это 750D8B45FC, сочитание из
таких байтов в НЕХ редаторе может присутствовать несколько раз, поэтому для нахождения этих
5-и байтов я заодно переписываю и другие 803800 750D8B45FC E8.
Запишем эти байты на листок, затем включаем командой а режим ассамблера и вводим с
клавы jmp 004EE40A. Hex цифры изменились на 803800 Е9А1000000
Е8 запишем и эти цифры...
Далее нажмем два раза ENTER для выхода из режима ассамблера, потом вводим команду
BC * для удаления прерывания и выходим из Айса F5.
И вновь оказываемся в проге Badcopy и что мы видим?!!! Восстановленные файлы успешно
сохранены, прога повержена!!!
Теперь осталось только открыть любым HEX редактором файл Badcopy.exe и изменить байты.
Я использовал Hexplorer, кстати неплохой редактор (оформление в стиле Матрицы и многое другое).
В Hexplorer'е нажав CTRL+F оказываемся в окне где вводим 803800750D8B45FCE8
и нажимаем FIND. Байты нашлись, после нажатия F3 убеждаемся что они больше
не встречаются в проге. Теперь выделяем нужный нам байт грызуном и изменяем
750D8B45FC на Е9А1000000.
Сохраняем изменения File=>Save. Для проверки запускаем прогу и пытаемся восстановить файлы...
Норма, файлы восстановлены. Правда еще не все, заголовок у окна проги какой-то недобитый
==EVALUATION VERSION==. Вот скажите какая это евалюшен?
Эта уже не евалюшен а, не побоюсь этого слова, фул вершен :))) Открываем файл badcopy.exe
в Reshacker'е и в String Table под номером 4057 находим нужную нам строчку и изменяем
ее например на Cracked By TITBIT.
ЗАКЛЮЧЕНИЕ
В конце хочу заметь что программа великолепная, не раз она спасала мне файлы из (;:%;№"%;
"урезано цензурой") флопиков и CD/CD-RW!!!!
Но что касается зашиты, то скажу так: полная ЖОПА :)))))
Вот вам наглядный пример того, как не надо делать защиту. А теперь будем ждать очередного релиза
этой проги, быть может защита изменится и тогда ...
Далее хочу поделиться одной фишкой. Например нам нужно в Reshacker'е загрузить нужный нам файл,
для этого мы нажимаем Open file или перетаскиваем сам файл в окно Reshacker'а что поверьте
неудобно. Скопируйте этот текст в мастдайский блокнот :
|
+++++++++РЕЗАТЬ ЗДЕСЬ+++++++++++++++
REGEDIT4
[HKEY_CLASSES_ROOT\dlfile\Shell\ResHACKer]
//Замени слово ResHACKer на любое слово. Оно будет отображено в контекстном меню//
[HKEY_CLASSES_ROOT\dllfile\Shell\ResHACKer\command]
//Здесь также замени слово ResHACKer на слово которое вписал в первой строчке//
@="f:\\Crack\\Reshack\\Reshacker.exe \"%1\""
//Эта строчка отвечает за расположение программы, т.е. файл лежит здесь: F:\crack\reshack\reshaker.exe//
[HKEY_CLASSES_ROOT\exefile\Shell\ResHACKer]
//тоже самое только для файлов с расширением *.ЕХЕ//
[HKEY_CLASSES_ROOT\exefile\Shell\ResHACKer\command]
@="f:\\Crack\\Reshack\\Reshacker.exe \"%1\""
++++++++++РЕЗАТЬ ЗДЕСЬ+++++++++++++++
|
изменив содержание на свое (расположение проги) сохраните его с
расширением REG. Запустив полученный файл, появиться окно с вопросом, нажмите ДА.
Ну вот теперь нажав правой кнопкой на *.EXE и *.DLL файлах вы увидите новую команду
ResHACKer, нажав на которую вы окажитесь в Reshacker'е. Удобно, не правда
ли?!
Такое можно проделать для многих прог просто замените в файле *.reg
значения.
Повторяю еще раз, эта статья была предназначена для начинающий
крекеров!!!
[Дата: ++15.10.2003++]
Материалы находятся на сайте
http://cracklab.narod.ru/doc/
|