Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Распаковка Армадилло с IAT Elimination (часть 4)

Обсудить статью на форуме

Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.

Автор: R.Narvaja / estet / MARcoDEN <--- / estet@hotbox.ru / --->


ТАК ЕСТЬ ЛИ МАГИЯ ИЛИ НЕТ?

В предыдущей части мы выяснили, что по адресу DE4240 сохраняются «плохие» значения, но краткий анализ показал, что переход выполнялся, когда имя api равно 0 или когда был пробел, используемый для разделения dlls.

Мы ставили бряк, где сохранялись «хорошие» значения, запускали программу и ловили момент, когда в том же месте будут сохраняться «плохие» значения. Так мы изучали процесс создания таблицы импорта и поведение условных прыжков. Затем мы трейсили до тех пор, пока не обнаружили подозрительный прыжок, который НЕ ПЕРЕХОДИЛ в случае «хорошего» значения и ПЕРЕХОДИЛ в случае «плохого». Где же этот заветный прыжок?



Мы видим CALL, который выполняет функцию GetProcAddress и также, видим, что всегда перед этим прыжком EAX принимает типичное значение зоны armadillo(плохое) и сохраняются «плохие» значения. И наоборот: если переход не выполняется, вызываем GetProcAdress, берем «хорошее» значение и сохраняем. Давайте заNOPим этот прыжок, но попадём ли мы на OEP?
Посмотрим…

Нет, на OEP не попадаем, т.к. АРМа обнаруживает изменение и закрывается. Мы не будем каждый раз менять флаг нуля Z как идиоты, пока не заполнится вся таблица. Вместо этого поставим BPX ON EXECUTION на «магический» прыжок и удалим все остальные Hardware BPX.



Я сделал скрипт, который при каждой остановке на этом прыжке, будет изменять флаг Z и продолжать выполнение, и таким образом, восстановит всю таблицу. Но есть небольшой баг в OllyScript. Когда скрипт останавливается на бряке, и я помещаю 1 во флаг Z, то меняется почему-то флаг P.
(Примечание: этот баг устранен в версии OllyScript 0.62)

SCRIPT №1

eoe LABEL
eob BABEL
run

LABEL:
esto

BABEL:
mov !ZF, 1
run
JMP BABEL



Объясняю:
Первые две строчки

eoe LABEL
eob BABEL


служат для того, чтобы при каждом exception выполнялась метка LABEL, а другая для того, чтобы при каждом breakpoint выполнялась метка BABEL. Далее возобновляется программа.
Первым находим exception, и как полагается, идем в LABEL

LABEL:
Esto

и выполняем это выражение, которое является аналогом SHIFT+F9.
Когда прерывается на нашем прыжке, идем в BABEL и там

BABEL:
cmp eip,0DE43A5
jne FIN
mov !ZF, 0

run
JMP BABEL

FIN:
Ret


Помещаем 0 во флаг Z, чтобы избежать прыжка. Продолжаем выполнение (RUN).

Для корректной работы скрипта надо дополнительно поставить HARDWARE BPX ON EXECUTION в том месте, где нужно изменять базовый адрес таблицы (см. часть 2) – на моем компьютере - это 0DE51C7.





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



Здесь нужно поменять C8 81 3C


на 5CA000 (см. часть 2) - это начало секции rdata



Сейчас удаляем все бряки, а вместо этого ставим один бряк на OEP



Итак, мы остановились на OEP. Сейчас мы должны скопировать таблицу начиная с адреса 3C81C8, который мы заменили выше.



Отлично! Импорт восстановлен благодаря нашему «магическому» прыжку. Будем дампить через
OLLYDUMP.



Попробуем запустить ImpREC и бац… ошибка


Нас этим не запугаешь ;). Выставим эту опцию:



и смело выберем наш процесс в списке



Введем значение OEP, начало таблицы и жмём GET IMPORTS.



Проклятая Арма перемешала нашу табличку, поэтому ImpRec не сможет создать правильный импорт. Смотрите сами: сначала идет kernel32.dll, потом user32.dll, затем опять kernel32, но все функции kernel32 должны идти по порядку, потом разделитель, и только затем функции user32.dll.
Хорошо… будем двигаться дальше. До встречи в следующей части.





Автор: Ricardo Narvaja
Перевод: Estet
Редактор: MARcoDEN


Обсуждение статьи: Распаковка Армадилло с IAT Elimination (часть 4) >>>


Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS