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

Дата публикации 12 фев 2017 | Редактировалось 2 дек 2018
Приветствуя тебя, Гость.
Если тебе не очень понравится данный перевод, хочу сказать, что дальше всё становится лучше. Уже сейчас ты можешь открыть последние главы, например №24 или №25 и увидеть, что всё читается по другому. Как только курс будет переведён и закончен, я вернусь к первым главам и переделаю их.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ВВЕДЕНИЕ В РЕВЕРСИНГ С НУЛЯ ИСПОЛЬЗУЯ IDA PRO


Идея этих серий учебных пособий является обновить наш оригинальный курс по реверсингу, но используя IDA PRO. Будем обучаться использовать ее с нуля и работать будем с последней версией Windows. В моем случае, я использую Windows 10 Anniversary Update x64 со всеми патчами, вплоть до 29 октября 2016.

ПОЧЕМУ ИМЕННО IDA PRO

Потому что, пока OllyDBG просто 32-х битный отладчик режима пользователя, а IDA PRO целая программа для реверсинга, которая может быть использована в 32/64 системах, как и отладчик и как дизассемблер. Она позволяет делать статический реверс, который не может быть выполнен в OllyDBG и которая обучает как использовать ее, не смотря на сложный процесс обучения, она позволяет работать в Windows, Linux или Mac как внутри системы, так и удаленно в следующих операционных системах.

1.png

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

2.png

Как мы можем видеть, обучение как использовать IDA позволяет нам улучшить рабочее окружение, мы сфокусируемся на 32/64 разрядной Windows в пользовательском режиме и иногда в режиме ядра. Это позволит нам легче адаптироваться к любому использованию .

Здесь мы увидим большинство вещей, которые мы видели в Введение в отладку с нуля с использованием OllyDBG, но сейчас будет IDA. Попытаемся идти дальше с самого начала.

В этом курсе будет всё: статический и динамический реверс, крякме, будем учиться исследовать эксплоиты и распаковку. Я постараюсь писать о какой-нибудь важной детали с нуля.

НАЧАЛО

Нам нужна IDA PRO. Проблема в том, что это коммерческая программа и мы должны платить за нее и она того стоит. Мы не можем и не будем распространять её, но вы можете поискать утекшие в сеть версии через Гугл по такому запросу: IDA PRO 6.8 + HEXRAYS. Эта версия с которой мы будем работать. Последняя же версия - IDA 6.95.160808 ( 08 Августа 2016).

3.png

Когда мы скачали, можем увидеть zip файлы и такой установщик

idapronw_hexarmw_hexx64w_hexx86w_150413_cb5d8b3937caf856aaae75 0455d2b4ae

Пароль на установку хранится в файле install_pass.txt.

Также будет установлен Python 2.7.6. Он используется, чтобы избежать проблем используя другие версии IDA. Если вы установили Питон самостоятельно отдельно, он должен быть той же версии, что использует IDA.

4.png

После установки, загрузим крэкме Cruehead, он идет вместе с этим туториалом.

5.png

Так как это 32-х битный исполняемый файл, мы загрузим его в IDA для 32-х битных
файлов напрямую.

6.png

Если мы запустим крэкме вне IDA, мы увидим через Диспетчер Задач, что это 32-х битный процесс. Если мы хотим знать 32-х битный это или 64-х битный файл, без запуска, мы можем использовать 16-тиричный редактор. Например такой.
Загрузите и установите английскую версию

Самый простой способ - это открыть файл в хекс-редакторе, чтобы узнать какой он.

7.png
То, что мы видим - это Snipping Tools. И это 64-х битное приложение. Мы видим, что после слова PE есть следующие значения -> PE..d†

Наш крэкми - 32-х битный, после слова PE видим -> PE..L

8.png
Поэтому мы уже знаем какой мы файл имеем, чтобы загрузить его с использованием IDA 32. Когда IDA покажет окно QUICK START, мы выберем NEW, чтобы открыть новый файл, найдем наш крэкми и выберем его.

9.png

Сейчас не будем трогать настройки, потому что IDA правильно определила версию файла и мы можем нажать OK.

Если дальше нажмем YES на PROXIMITY VIEW, отобразиться дерево просмотра программы.

10.png

Чтобы перейти к графическому режиму или неграфическому - режиму инструкций нужно нажать пробел.

10.png

11.png

Также в OPTIONS - DEBUGGING OPTIONS - LINE PREFIXES мы можем добавить адреса в переднюю часть при графическом представлении.

Когда вы открываете исполняемый файл, первое, что открывается, это окно дизассемблера, которое называется LOADER, оно не запускает программу, а только ее анализирует для реверсинга и создает файл idb или базу данных (database).

Чтобы отладить программу мы должны выбрать среди всех доступных отладчиков включенных в IDA и запустить его в Режиме отладки, который мы разберем позже

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

12.png

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

13.png

То же происходит и в конце, там мы находим начало дизасма, в этом случае инструкция соответствующая 401000 - PUSH 0

В IDA есть возможность настроить интерфейс по умолчанию отдельно для LOADER и для DEBUGGER.

Как только вы привыкнете, например, в LOADER, наиболее часто используемые окна и вкладки можно сохранить, перейдя в WINDOWS-SAVE DESKTOP и отметив «по умолчанию», то же самое можно сделать для режима дебаггера и изменить настройку по умолчанию.

14.png
В любой из вкладок IDA, где есть такие списки, как FUNCTIONS, STRINGS, NAMES можно с помощью CTRL+F открыть поисковую систему, которая фильтрует информацию, в соответствии с тем, что мы набираем.

15.png

В VIEW-OPEN SUBVIEW-STRINGS точно также будут показываться строки, содержащие "try".

16.png

Через VIEW-OPEN SUBVIEW-DISASSEMBLY можно открыть второе дизасм окно, показывающее и выполняющее другие функции.

17.png

В OPEN SUBVIEW в LOADER есть hex представление или через вкладку HEX DUMP.

18.png

В OPEN SUBVIEW я могу показать импортируемые функции или вкладка IMPORTS.

19.png

20.png

Во VIEW можно активировать GRAPH OVERVIEW, он выполняет поиск по графику видимых функций и может двигать и изменять ту часть, которая отображается в данный момент на экране

Также имеются вкладки STRUCTURES, EXPORTS, NAMES, SEGMENTS и другие, которые я объясню позже, когда мы их будем использовать

Верхняя панель навигации с помощью различных цветов отображает разные части исполняемого файла.

21.png

Ниже поясняется, что обозначает каждый цвет, например, серый - .data, и если на него кликнуть, график сдвинется в секцию, соответствующую серому цвету. На рисунке можно увидеть, что розовая часть соответствует внешнему символу или секции .idata, синяя часть – тому, что определяется как функция в кодовой секции.

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

До встречи во второй части.
Ricardo Narvaja

Источник:
http://ricardonarvaja.info/WEB/INTRODUCCION AL REVERSING CON IDA PRO DESDE CERO/EN INGLES/

Перевод на английский: IvinsonCLS
Перевод на русский: Яша_Добрый_Хакер.
27.11.2016

35 121.952
yashechka

yashechka
Ростовский фанат Нарвахи

Регистрация:
2 янв 2012
Публикаций:
90

Комментарии


      1. Isaev 15 янв 2024
        Этот цикл статей, случайно никто не собирал в один документ/архив?
      2. Aoizora 6 янв 2024
        А где можно скачать CrackMe Cruehead'a?
      3. кофейник 22 окт 2019
        13 фев 2017 Вы упомянули Корелан. Это Ваш друг?
        За работу огромное спасибо.
        yashechka нравится это.
      4. yashechka 18 мар 2019
        На win7 Все работает
      5. tkzv 14 мар 2019
        Под какую ОС прилагаемые crackme? Пока HOLA_REVERSER.exe, TEST_REVERSER.exe и VEViewer.exe отказались работать под Windows XP даже после установки рантаймов от VC++ 2017. Нужны какие-то ещё рантаймы? Или более новая ОС?
        yashechka нравится это.
      6. yashechka 2 авг 2018
        Вы очень молодец!!!
      7. Antora 2 авг 2018
        "Также в OPTIONS - DEBUGGING OPTIONS - LINE PREFIXES мы можем добавить адреса в переднюю часть при графическом представлении." -- не, не тут это живет в версии 6.8 точно, а тут: OPTIONS - GENERAL - Disassembly
        yashechka нравится это.
      8. yashechka 14 май 2018
        Я очень рад, что Вы начали читать. Спасибо за то, что Вы есть.
      9. __sheva740 14 май 2018
        Начал изучение курса.
        Нравится все!
        Перед yashechka - снимаю шляпу.
        Рад буду помочь - чем смогу.
        )))
        The Neverhood и yashechka нравится это.
      10. yashechka 12 май 2018
        Спасибо. Странно, что только сейчас заметили. Есть такое дело )
      11. inzu 12 май 2018
        yashechka, вы на втором скриншоте, где список процессоров должен быть, показываете копию первого, с ОСями
        yashechka нравится это.
      12. yashechka 27 янв 2018
        В финальном релизе, все ошибки будут учтены.
      13. texaciri 27 янв 2018
        @yashechka, поставил 6.8 которая рекомендуется.
        Вот сделал гифку, там всё видно, _yadi.sk/i/h6elGxBb3RqbCK
        yashechka нравится это.
      14. yashechka 27 янв 2018
        Может это из-за разницы в версиях?
      15. texaciri 27 янв 2018
        >>Также в OPTIONS - DEBUGGING OPTIONS - LINE PREFIXES мы можем добавить адреса в переднюю часть при графическом представлении.
        должно быть OPTION - GENERALS... Diassembly - LINE PREFIXES
        yashechka нравится это.
      16. Basil_pig 27 ноя 2017
        Нашёл :)
        Просто нужно еще и оригиналы смотреть :dntknw: , что не всегда делаю...
        yashechka нравится это.
      17. yashechka 27 ноя 2017
      18. yashechka 27 ноя 2017
      19. Basil_pig 27 ноя 2017
        Прошу прощения за глупый вопрос, но файл Crackme.exe я не нашел :dntknw: . Какой экзешник открыть я конечно же нашел, но ... наглядности примера нету.
        Может антивирус его убил?
        inginegr и yashechka нравится это.
      20. yashechka 8 сен 2017
        Спасибо.
      21. yashechka 29 авг 2017
        Спасибо.
      22. yashechka 9 июл 2017
        Хороший перевод))
      23. fontbyself 7 июл 2017
        Хорошая статья
        yashechka нравится это.