# Часть 1

[\[Используемые материалы\]](https://github.com/yutewiyof/intro-rev-ida-pro/tree/e1367e11cc661f3d69c02ae5f733b7dd168bc5ab/.gitbook/assets/files/01.zip)

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

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

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

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2B0WPzl6cMMX5pO%2F01.png?generation=1563265875248112\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_GIppd_TYtZMhi%2F01-2.png?generation=1563186169205709\&alt=media)

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

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

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

**НАЧАЛО**

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_IZAwo-clKoJK4%2F01-3.png?generation=1563186171503271\&alt=media)

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

**idapronw\_hexarmw\_hexx64w\_hexx86w\_150413\_cb5d8b3937caf856aaae75 0455d2b4ae**

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

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2Bx9WGQVRmDkrTx%2F04.png?generation=1563265875174526\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_MPGGt66KSyb5O%2F01-5.png?generation=1563186168315111\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_OYJ9LxIyUF38-%2F01-6.png?generation=1563186168146479\&alt=media)

Если мы запустим крэкме вне IDA, мы увидим через Диспетчер Задач, что это 32-х битный процесс. Если мы хотим знать 32-х битный это или 64-х битный файл, без запуска, мы можем использовать 16-тиричный редактор. Например такой. [**https://mh-nexus.de/en/downloads.php?product=HxD**](https://mh-nexus.de/en/downloads.php?product=HxD)​ Загрузите и установите английскую версию [**http://mh-nexus.de/downloads/HxDSetupES.zip**](http://mh-nexus.de/downloads/HxDSetupES.zip)​ Самый простой способ - это открыть файл в хекс-редакторе, чтобы узнать какой он

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2CaE7RL7mzkywCu%2F07.png?generation=1563265875269877\&alt=media)

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

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2CqhGzlBOtlXkUY%2F08.png?generation=1563265875463131\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2DCmrbmivy_vsiL%2F09.png?generation=1563265875847515\&alt=media)

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

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_WMylToLpCxYj1%2F01-10.png?generation=1563186171277718\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2DfOD60MOkW1Mfq%2F11.png?generation=1563265875204920\&alt=media)

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

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

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

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y__CR_WJuNxA0Yv%2F01-12.png?generation=1563186169589673\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_bq7LG-zJp8---%2F01-13.png?generation=1563186169711835\&alt=media)

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

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

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_dkv4zwOir7Eaz%2F01-14.png?generation=1563186170595578\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_f-1UIN0YqBmfq%2F01-15.png?generation=1563186170792957\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_hcMVbiK6FlzFA%2F01-16.png?generation=1563186171662582\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_jpQOLI3IVvw86%2F01-17.png?generation=1563186171102654\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2EsswpKV5uz1ZBg%2F18.png?generation=1563265876027182\&alt=media)

В OPEN SUBVIEW-IMPORTS IDA покажет импортируемые функции.

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-Ljp8rKyZvtadezPe2Vo%2F-Ljp8y_nJa0Jk2htQZFG%2F01-19.png?generation=1563186168839337\&alt=media)

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2FImai6rdOSK0Cx%2F20.png?generation=1563265875089985\&alt=media)

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

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

![](https://333516620-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ljp8Kl9OQ2AqdU_D0G8%2F-LjttkJvbq8Uocl4jWiJ%2F-Ljtu2FS-WQ9QaxPYDcV%2F21.png?generation=1563265875321436\&alt=media)

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

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

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

Источник: [**http://ricardonarvaja.info/WEB/INTRODUCCION AL REVERSING CON IDA PRO DESDE CERO/EN INGLES/**](http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20REVERSING%20CON%20IDA%20PRO%20DESDE%20CERO/EN%20INGLES/)

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