Исследование защиты GetDataBack

Отправлено 30 нояб. 2011 г., 0:22 пользователем Работа КА   [ обновлено 30 нояб. 2011 г., 1:34 ]
Исследование защиты GetDataBack


Доброго времени суток, товарищ!
Сегодня у нас на операционном столе интересный пациент: лучшая программа для восстановления утерянных данных - GetDataBack от компании Runtime Software. Взломать ее хотел уже давно, но никак не получалось. А тут БАЦ - и все получилось. Поэтому встречайте статью!=)

Для взлома нам понадобится:

*GetDataBack - стоимость его 70$. Отдавать столько денежек не хочется;
*Olly Debugger + плагин ODBGScript + скрипт распаковки ASProtect;
*IDR (Interactive Delphi Reconstructor);
*PETools;
*IMPort REConstructor;
*Restorator;
*PEiD;
*Руки + Голова - обязательно!;
*Также рекомендую прочитать мою предыдущую статью по взлому крякмиса с помощью IDR.


ПЕРВАЯ ЧАСТЬ: Распаковка


Для начала определим, чем упакована наша программа:
Для этого запустим PEiD и откроем в нем нашу программу. Мы получим следующее:
ASProtect 1.2x - 1.3x [Registered] -> Alexey Solodovnikov
ASProtect - серьезный протектор исполняемых файлов и вручную его распаковывать мне было сложно. Поэтому я воспользовался скриптом (смотрите необходимый инструментарий).

Как установить плагин, и настроить скрипт - >
Скачайте архив с ODbgScript, найдите в нем файл ODbgScript.dll (остальные файлы здесь нам не нужны) и распакуйте в папку с плагинами Olly Debugger(по-умолчанию это папка plugins - можно изменять в настройках Olly);

Скачайте архив со скриптом распаковки, откройте его. Здесь нам нужны только два файла:

- Aspr2.XX_unpacker_v1.15E.osc (скопируйте в любое место);
- Asprvm8s.bin (по-умолчанию его нужно скопировать в корень диска D:, но это меняется в предыдущем файле - откройте его блокнотом и ищите по названию файла).


Теперь запускаем дебагер, и перетаскиваем на него нашу программу (файл: gdbnt.exe). Появится окно, в котором нужно нажать Нет:
Исследование защиты GetDataBack


Теперь выбираем меню как на рисунке:
Исследование защиты GetDataBack


Ищем файл Aspr2.XX_unpacker_v1.15E.osc и открываем его. Ждем завершения распаковки... Будут появляться информационные сообщения "This API is not emulated" и "There are stolen code, check IAT data in log window". В обоих окнах нужно нажать ОК.

Жмем меню, как показано на рисунке:
Исследование защиты GetDataBack


В появившемся окне нас интересует только следующий блок (точнее строки 2, 3 и 5):
Исследование защиты GetDataBack


Не закрывайте пока дебагер. Откройте PETools и произведите настройку согласно скриншоту и нажмите ОК:
Исследование защиты GetDataBack


В верхнем списке выберите процесс, имя которого совпадает с именем взламываемой программы, нажмите на нем правой кнопкой мыши, и выберите менюDump Full:
Исследование защиты GetDataBack


PETools уведомит нас, что процесс сохранен. Закройте PETools.

Открываем ImpRec и производим настройку согласно скриншоту:
Исследование защиты GetDataBack


Теперь в верхнем списке выбираем процесс программы, которая отлаживается в Olly Debugger, и вводим значения в поля 1, 2 и 3 (рисунок слева) согласно строкам 2, 3 и 5 (рисунок справа):
Исследование защиты GetDataBackИсследование защиты GetDataBack


Жмем Get Imports и Show Invalid:
Исследование защиты GetDataBack


На выделенном программой адресе жмем правой кнопкой мыши и жмем Delete Thunk:
Исследование защиты GetDataBack


Осталось исправить ранее полученный дамп процесса. Для этого жмем кнопку Fix Dump и выбираем файл Dumped.exe, полученный ранее. Программа сообщит нам, что все хорошо. Теперь ImpRec можно закрывать. Первая часть статьи окончена...

ВТОРАЯ ЧАСТЬ: Исследование программы и снятие защиты


Открываем IDR, а в нем полученный в конце первого этапа файл Dumped_.exe. Ждем завершения анализа... Пока IDR анализирует, откроем этот же файл еще и в Olly Debugger.

До написания статьи я уже исследовал эту программу, поэтому буду сразу писать: что, где и куда.

На вкладке Units ищем юнит license. В нем находятся основные функции и процедуры защиты программы. Жмем по этой строке двойным щелчком мыши. Снизу в списке вы увидите ранее заблокированные ключи (нашелся даже ключ от TSRh-Team). Чуть ниже появятся строковые ресурсы этого модуля. По ним и будем ориентироваться:
Исследование защиты GetDataBack


Переключаемся на вкладку Strings (клавиша F8), жмем правой кнопкой мыши и ищем первую строку про пиратскую версию:
This might be a pirated version. Press OK to report to piracy@runtime.org
При выделении данной строки справа в столбце XRefs будет отображен зеленый адрес, который нам говорит, откуда вызывается данная строка. Щелкнем два раза по этому адресу:
Исследование защиты GetDataBack


Желтым я выделил переход, который, в случае верного сравнения чего-то с чем-то, перебрасывает нас за вызов сообщения о пиратской версии и последующего сообщения "Thank you!". Чтобы вас не смущало это сообщение благодарности, скажу, что благодарят здесь именно за возможное ваше сообщение саппорту о том, что вам попалась пиратская версия.

Сделаем так, чтобы при любом раскладе переход осуществлялся. Для этого в Olly Debugger заменим этот переход с условного на безусловный, т.е. на JMP. Для этого, в столбце слева от данной команды, запоминаем адрес, обозначенный серым, и переходим по нему в дебагере (комбинация Ctrl+G). Два раза щелкаем по строке с командой, и вместо JE вводим JMP. Жмем ОК.

Возвращаемся в IDR.
Следующие строки: статусы Licensed и Not Licensed.
Опять ищем их на вкладке Strings и переходим по адресу в XRefs. Сначала разберемся с Licensed:
Исследование защиты GetDataBack


Синим на картинке выделена строка с загрузкой "хорошей фразы". Ищем какие-нибудь переходы мимо этого куска... Ага, видим чуть выше переход, который нас перебрасывает через загрузку нужной фразы, на загрузку "плохой фразы" - Not Licensed. Значит что нам нужно сделать? Правильно - исправить переход JE АДРЕС на противоположный - JNZ АДРЕС в отладчике.

Теперь программа зарегистрирована. Но это не все! Ведь при нажатии About... в меню программы, высвечивается красная надпись "Unlicensed evaluation copy". От нее и будем плясать...

Ищем эту строку на вкладке Strings и переходим по адресу вызова данной строки:
Исследование защиты GetDataBack


Нам, как оказалось, интересна только выделенная желтым процедура. Раз переходов нет, одни вызовы, значит смотрим, что она делает. Для этого жмем правой кнопкой мыши по этому вызову, и выбираем GoTo Adress, а затем ОК.
Исследование защиты GetDataBack


Чтобы вы не мучились, я выделил для вас искомую процедуру сравнения. Меняем ее на противоположную - JE.

Теперь сохраняем все изменения. Для этого жмем правой кнопкой мыши, Copy to Executable -> All modifications, и сохраняем под новым именем.

Можете запустить, проверить. Круто, не правда ли?! Осталось дело за малым...
Уберем пункт меню Registration, и припишем регистрацию на себя.

Для этого: открываем Restorator, выбираем в нем нашу модифицированную программу. Заходим в раздел RCData, ищем в списке TMAINFORM (окно главной формы), переключаемся в режим редактирования (читайте в указанной в самом начале статье), и ищем (клавиши Ctrl+F) текст "Register". Видим следующий текст:

Исследование защиты GetDataBack


Теперь просто берем и удаляем выделенные желтым строки. Далее...
Ищем снова, но уже текст "Licensed to". Находим, и вместо %s пишем свой ник.

Сохраняем изменения (клавиша F8) и сохраняем файл.

Наслаждаемся проделанной работой:

Исследование защиты GetDataBack

Подобным образом ломается и FAT32-версия программы.

Это все! Спасибо за внимание...


Автор: Dr. MefistO

Comments