Дополнение к 45-ой главе «Введения в крэкинг, используя OllyDbg» — Архив WASM.RU

Все статьи

Дополнение к 45-ой главе «Введения в крэкинг, используя OllyDbg» — Архив WASM.RU

От переводчика: приложении к 45-ой главе находился PDF на испанском языке, и эта статья является его переводом на русский язык.

В этой статье показан другой способ противостоять упаковщику из вышеуказанной главы единственно с помощью щелчков по кнопкам мыши без необходимости делать что-то ещё.

Замечание: используемый Ollydbg - это обычная версия, единственные модификации - это Ollyghost и плагин Ollydump для дампа процесса.

• Также используется PE Editor, LordPE и две утилиты из списка - Estricina и Pokemon Anti_Attach.

Сводная информация

Первым делом до того, как атаковать программу в памяти, посмотрим на данные файла, для чего откроем программу в LordPE.

Эти данные нам понадобятся, так как упаковщик может изменить их во время распаковки, и мы ничего не сможет сделать. Как видим, данные NumberOfRvaAndsizes были изменены, так как знаем, что это поле содержало 10 в шестнадцатеричной системе. Изменим его, для чего необходимо его смещение, так что открывает редактор PE. Видим, что смещение равно B4.

Следующее, что нам необходимо знать - это OEP, и с этим нам поможет плагин PEID.

Ок, теперь у нас есть все сведения, которые нам нужны, чтобы начать... Стало быть, идём в атаку.

Полученые данные:

  1. OEP 00401000
  2. SizeOfImagen 00006000
  3. NumberOfRvaAndSizes Находится по смещению b4 и было изменено на 10

Атака

Запускаем упаковщик вне OllyDbg, и он работает.

Чтобы работать с большим удовольствием, будем использовать утилиту Marciano, которая называется Estricina, с помощью которой остановим третью нить, которая содержит упаковщик (этот шаг не является необходимым, но делает работу более удобной).

Если мы делаем это, то загрузка процессора нитью падает с 99 процентов до нуля.

Теперь мы можем спокойно использовать нашу машину.

Атака в памяти, чтобы нас не обнаружили

После использования Pokemos'а, чтобы избежать возможных противоприсоединительных и тому подобных приёмов, восстанавливаем значение NumberOfRvaSizes, которое, как мы помним, находится по смещению B4.

Хорошо, если была защита против присоединения, то она исчезла. Продолжаем атаковать упаковщик в памяти. Открываем LordPE, и ищем упаковщик в списке процессов.

Как видим, у него размер образа равна 0001000, и мы знаем, что он должен быть равен 0006000, и это запутывает OllyDbg и любой дампер, поэтому у нас на выходе и не получается хорошего исполняемого файла, кроме того это мешает использовать программу Import для восстановления таблицы импорта.

Вывод: нужно починить его, это понятно. Кликаем по нёму в LordPE правой кнопкой мыши и исправляем

И как видим на скриншоте справа, размер стал 0006000, каким он и должен быть.

Уже починили часть программы в памяти, теперь подсоединяемся с помощью OllyDbg и видим, что она сообщает нам о том, что заголовок неверен.

Жмём на "Oк" и программа аттакуется, останавливается на API-функции.

Теперь так как знаем его OEP, идём в окне кода в 00401000 и оказываемся на OEP программы.

И видим, что с ней всё в порядке... Нажимаем правую кнопку мышью.

И видим в регистре EIP, что остановились на OEP, так что теперь переходим к сдампливанию с помощью плагина.

Осталось только добавить таблицу, которую подготавливаем с помощью Import. Вводим OEP и нажимаем три кнопки по порядку, выбираем сдампленный ранее файл и не выходим из окна, в котором заголовок находится в плохом состоянии. Об этом нам ещё ранее сказал OllyDbg.

Реконструируем заголовок с помощью какой-нибудь программы, у которой есть такая функция, в данном случае это LordPE, и программа становится нормальной.

И если посмотрим в администраторе задач Windows, увидим, что программа больше не пожирает ресурсов - упаковщик исчез.

Ок, достаточно на сегодня.

2002-2013 (c) wasm.ru