GrabDuck

Исследование защиты GetDataBack - Работа КА, IT вакансии от 100 т.р.

:

Исследование защиты 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 ). Появится окно, в котором нужно нажать  Нет :

Теперь выбираем меню как на рисунке:

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

Жмем меню, как показано на рисунке:

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

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

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

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

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

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

Жмем  Get Imports  и  Show Invalid :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: Dr. MefistO