Введение в реверсинг с нуля используя IDA PRO. Часть 15. (Часть 1)

NullX

Участник
Клуб
Студент
Регистрация
30.06.18
Сообщения
141
Лучшие ответы
0
Реакции
320
Баллы
12
В предыдущей части, мы увидели несколько из многих методов, которые существуют для обнаружения и получения OEP в упакованном файле. Сейчас, вернёмся к двум пропущенными шагам: это ДАМП и ВОССТАНОВЛЕНИЕ IAT, стараясь объяснить их в этом туториале.

1.png


Мы снова попадаем в OEP программы и делаем её ПОВТОРНЫЙ АНАЛИЗ. Теперь у нас уже есть всё, чтобы сделать ДАМП.

Сейчас будем использовать IDC скрипт, а не PYTHON.

Код (C++):
  1. Static main()
  2. {
  3. auto fp, ea;
  4. fp = fopen("pepe.bin","wb");
  5. for(ea = 0x400000; ea < 0x40B200; ea++)
  6. fputc(Byte(ea), fp);
  7. }
В скрипте введём IMAGEBASE(БАЗА_ОБРАЗА), адрес, которой равен 0x400000 и наибольший адрес последней секции исполняемого файла, который мы видим в IDA на вкладке SEGMENTS, который нужно СДАМПИТЬ. В этом случае секция OVERLAY, которая является последней секцией исполняемого файла, заканчивается по адресу 0x40B200.

2.png


3.png


Сохраним этот скрипт под каким-нибудь именем, например DUMPER.IDC

4.png


И запускаем его через FILE → SCRIPT FILE. Можно видеть, что IDA принимает скрипты как PYTHON так и свои родные IDC, поэтому тут с этим нет проблем.

5.png


Я делаю копию созданного файла и переименовываю его расширение в EXE. (Если Вы не видите расширения файлов, Вы должны изменить соответствующую опцию в НАСТРОЙКАХ ПРОВОДНИКА)

6.png


7.png


Видим, что у файла нет иконки, потому что некоторые шаги пропущены.

Во вложении приложен PE EDITOR 1.7, распакуем и запустим его.

8.png


Теперь идём в СЕКЦИИ.

9.png


Здесь делаем правый щелчок в каждой из секций и выбираем пункт DUMPFIXER.

10.png


11.png


Видим, что мы уже ближе к победе. По крайней мере, теперь, выводится иконка, хотя программа ещё не запускается, потому что необходимо отремонтировать IAT.

ЧТО ТАКОЕ IAT?

IAT или IMPORT ADDRESS TABLE - это таблица, находящаяся в исполняемом файле, она используется, когда запускается программа. В ней программа сохраняет адреса импортируемых функций, которые она использует, для того, чтобы программа смогла запуститься на любом компьютере.

Если IAT верная и если мы дадим исполняемый файл другому человеку, IAT будет заполнена значениями, соответствующими конкретному компьютеру, независимо от версии WINDOWS, который он имеет, и будет оставаться совместимым, и хорошо работать.

IAT будет находиться в определенном месте, в каждом исполняемом файле, и она будет иметь фиксированные позиции для каждой функции, чтобы заполнять их.

Мы помним из предыдущей части, что я хотел объяснить различие между верхним изображением, которое принадлежит упакованному файлу, когда он был в OEP перед ДАМПОМ и исходного файла.

12.png


Оба изображения показывают адрес 0x403238 и похоже, что они имеют одинаковое содержимое. Сейчас, давайте откроем оригинальный файл.

13.png


Здесь можно видеть ФАЙЛОВОЕ СМЕЩЕНИЕ, которое равно 0x1038, чтобы иметь возможность искать данные в HXD в исходном исполняемом файле.

Давайте откроем с помощью HXD оригинальный файл.

14.png


Видим, что содержимое памяти по смещению 0x1038 равно 0x355E.

Если я прибавлю значение 0x355E к IMAGEBASE, которое равно 0x400000, то получу результат 0x40355E. Что существует по этому адресу?
 
Сверху