Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Майкл_Сикорски,_Эндрю_Хониг_Вскрытие_покажет!_Практический_анализ.pdf
Скачиваний:
18
Добавлен:
19.04.2024
Размер:
17.17 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

.

 

 

 

 

5

 

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

IDA Pro

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

IDA Pro (Interactive Disassembler Professional — интерактивный дизассемблер для профессионалов) является чрезвычайно мощным инструментом от компании HexRays. Он имеет множество разных функций, но нас прежде всего интересует его дизассемблер, который многие аналитики безопасности и специалисты по обратному проектированию считают лучшим в своем роде.

Существует две коммерческие версии IDA Pro. Обе поддерживают архитектуру x86, но в продвинутой версии имеется поддержка намного большего количества процессоров, чем в стандартной (в первую очередь x64). IDA Pro также умеет работать с несколькими форматами файлов, такими как PE (Portable Executable), COFF (Object File Format), ELF (Executable and Linking Format) и a.out. Мы сосредоточимся на архитектурах x86/x64 и формате PE.

В этой книге мы используем коммерческую редакцию IDA Pro. На странице www.hex-rays.com/idapro/idadownfreeware.htm можно загрузить бесплатный вариант, IDA Pro Free, но его функциональность ограничена, к тому же на момент написания этих строк он «застрял» на версии 5.0. Не стоит использовать IDA Pro Free для серьезного дизассемблирования, но вы можете его попробовать, если хотите «поиграться» с IDA.

IDA Pro дизассемблирует всю программу целиком, выполняя обнаружение функций, анализ стека, определение локальных переменных и многое другое. В этой главе мы покажем, как данные возможности помогают подобраться ближе к исходному коду. IDA Pro поддерживает технологию FLIRT (Fast Library Identification and Recognition Technology), позволяющую распознать и пометить дизассемблированные функции, особенно в библиотечном коде, который вставил компилятор.

Программа IDA Pro изначально задумывалась интерактивной, и все аспекты процесса дизассемблирования в ней можно изменить, откорректировать, поменять местами или переопределить. Одной из самых полезных особенностей IDA Pro является возможность сохранять процесс анализа: вы можете добавить комментарии, пометить данные и дать имена функциям, а затем поместить свою работу в базу данных (известную как idb), чтобы вернуться к ней позже. IDA Pro также имеет развитую систему плагинов — вы можете написать свой собственный или воспользоваться одним из сторонних.

Эта глава содержит подробное введение в использование IDA Pro для анализа вредоносного ПО. Если хотите узнать больше о данном инструменте, лучшим выбором для вас будет второе издание книги Криса Игла The Unofficial Guide to the World’s Most Popular Disassembler (No Starch Press, 2011). Это отличное руководство как по IDA Pro, так и по обратному проектированию в целом.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

112  Часть II  •  Продвинутый статический анализ

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Загрузка исполняемого файла

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

На рис. 5.1 показан первый этап загрузки исполняемого файла в IDA Pro. Вначале IDA Pro пытается распознать формат файла и архитектуру процессора. В этом примере распознаны формат PE и архитектура Intel x86 . Вам нечасто придется изменять тип процессора, разве что при анализе вредоносного ПО на мобильном телефоне (многие мобильные вредоносы создаются для разных платформ).

Рис. 5.1. Загрузка файла в IDA Pro

При загрузке файла в IDA Pro (например, PE-файла) он отображается на память так, как будто он был открыт загрузчиком операционной системы. Чтобы дизассемблировать его как простой двоичный файл, выберите пункт Binary file (Двоичный файл) в верхнем списке . Это может пригодиться в случаях, когда вредонос вставляет код командной оболочки, дополнительные данные, параметры шифрования или даже отдельные исполняемые файлы внутрь обычной программы формата PE: так эта информация не будет загружена в память при запуске файла системой Windows или открытии его в IDA Pro. Кроме того, если открытый таким образом файл содержит код командной оболочки, вы должны загрузить его в двоичном виде и затем дизассемблировать.

PE-файлы скомпилированы так, чтобы загружаться по предпочтительному базовому адресу в памяти, и, если Windows не удастся это сделать (например, если

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 5. IDA Pro  113

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

адрес уже занят), загрузчик выполнит операцию, известную как перебазирование. Чаще всего это происходит с библиотеками DLL, так как место их загрузки обычно отличается от предпочтительного адреса. Перебазирование будет подробно рассмотрено в главе 9. Пока что вам достаточно знать, что, если DLL загружается не в тот процесс, который показан в IDA Pro, это может быть результатом перебазирования файла. В таких случаях следует установить флажок Manual load (Ручная загрузка) (пункт на рис. 5.1), после чего появится поле ввода, где вы сможете указать новый виртуальный базовый адрес, по которому нужно загружать файл.

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

Интерфейс IDA Pro

Загрузив программу в IDA Pro, вы увидите перед собой окно для дизассемблирования, показанное на рис. 5.2. Это основная часть интерфейса для редактирования и анализа двоичных файлов и то место, где выводится код на ассемблере.

Рис. 5.2. Графический режим окна дизассемблирования в IDA Pro

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

114  Часть II  •  Продвинутый статический анализ

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Режимы отображения

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Окно дизассемблирования можно отображать в двух режимах: графическом (показан на рис. 5.2 и используется по умолчанию) и текстовом. Для переключения между ними достаточно нажать клавишу Пробел.

Графический режим

В графическом режиме IDA Pro опускает определенную информацию, которую мы рекомендуем выводить на экран (например, номера строк и операционные коды). Чтобы это изменить, откройте меню Options General (Параметры Общие), выберите Line prefixes (Строковые префиксы) и задайте в поле ввода Number of Opcode Bytes (Количество байтов у опкодов) значение 6. Большинство инструкций занимают не больше 6 байт, поэтому данный параметр позволит вам просматривать адреса памяти и значения опкодов для каждой инструкции в листинге кода. Если при этом все содержимое окна сместилось вправо, попробуйте ввести 8 в поле Instruction Indentation (Отступы для инструкций).

При анализе в графическом режиме поток выполнения программы можно проследить по цвету и направлению стрелок. Цвет стрелки говорит о том, зависит ли данный маршрут от конкретного принятого решения: выполненные и невыполненные условные переходы выделяются соответственно зеленым и красным, а безусловный переход окрашен в синий цвет. Направление стрелки обозначает поток выполнения программы: стрелка вверх обычно описывает цикл. Если выбрать текст в графическом режиме, каждое его вхождение будет выделено в окне дизассемблирования.

Текстовый режим

Текстовый режим окна дизассемблирования является более традиционным, и его следует использовать для просмотра разделов данных двоичного файла. На рис. 5.3 показано текстовое представление дизассемблированной функции. Вы можете видеть адрес памяти (0040105B) и название раздела (.text), внутри которого опкоды (83EC18) будут храниться в памяти .

Левая часть представления называется «окном стрелок» и отображает нелинейный поток выполнения программы. Сплошные линии обозначают безусловные переходы, а условные выделены пунктиром. Стрелки, направленные вверх, описывают цикл. В нашем примере выводится структура стека для функции и комментарий (начинается с точки с запятой), который IDA Pro добавляет автоматически .

ПРИМЕЧАНИЕ

Если вы все еще изучаете ассемблер, вам должна пригодиться функция автокомментариев в IDA Pro. Чтобы ее включить, выберите пункт меню Options General (Параметры Общие) и установите флажок Auto comments (Автокомментарии). После этого в окне дизассемблирования появятся дополнительные комментарии, которые помогут вам в вашем анализе.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 5. IDA Pro  115

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис. 5.3. Текстовый режим окна дизассемблирования в IDA Pro

Окна, полезные для анализа

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

Окно функций. Выводит все функции исполняемого файла и их длину. Вы можете сортировать их по длине и оставить только самые большие и сложные функции, которые могут представлять какой-либо интерес. Каждая функция в этом окне связана с флагами (F, L, S и т. д.), самым интересным из которых является L — он используется для обозначения библиотечных функций. Флаг L может сэкономить вам время в ходе анализа, позволяя определять и пропускать функции, сгенерированные компилятором.

Окно имен. Перечисляет все адреса с именами, включая функции, именной код, именные данные и строки.

Окно строк. Выводит все строки. По умолчанию в этот список попадают только строки в формате ASCII длиннее пяти символов. Вы можете изменить данный порог, щелкнув на окне правой кнопкой мыши и выбрав пункт Setup (Настроить).

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

116  Часть II  •  Продвинутый статический анализ

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Окно импорта. Выводит все элементы, импортированные файлом.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Окно структур. Выводит схему всех активных структур данных и дает возможность создавать собственные структуры, на основе которых можно строить шаблоны памяти.

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

Возврат к исходному представлению

Интерфейс IDA Pro настолько развит, что после нажатия нескольких клавиш на клавиатуре или мыши вам может быть трудно сориентироваться. Чтобы вернуться к исходному представлению, выберите пункт меню Windows Reset Desktop (Окна Сбросить рабочий стол). Этим вы не отмените создание меток или проделанное вами дизассемблирование, а лишь вернете окна и элементы интерфейса в их начальное состояние.

Если же вы изменили параметры окна и вам понравился результат, вы можете точно так же сохранить новое представление с помощью пункта меню Windows Save desktop (Окна Сохранить рабочий стол).

Навигация в IDA Pro

Как мы только что отметили, в интерфейсе IDA Pro можно запутаться. С окном дизассемблирования связано много других окон. Например, мы можем перейти непосредственно к элементу, если дважды щелкнем на нем в окнах импорта или строк.

Использование простых и перекрестных ссылок

Еще одним способом навигации в IDA Pro является использование ссылок внутри окна дизассемблирования, как показано в листинге 5.1. Выполните двойной щелчок на любой из представленных ниже ссылок , чтобы вывести в окне дизассемблирования соответствующий участок.

Листинг 5.1. Навигационные ссылки в окне дизассемблирования

00401075

jnz

short

loc_40107E

 

00401077

mov

[ebp+var_10], 1

 

0040107E

loc_40107E:

; CODE XREF:

sub_401040+35j

0040107E

cmp

[ebp+var_C], 0

 

00401082

jnz

short

loc_401097

 

00401084

mov

eax, [ebp+var_4]

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

00401087

0040108B

00401092

00401097

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

Глава 5. IDA Pro  117

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

mov

[esp+18h+var_14], eax

 

 

 

 

 

 

 

 

 

 

 

mov

[esp+18h+var_18], offset

aPrintNumberD ; "Print Number= %d\n"

 

 

 

 

 

 

 

 

 

call

printf

 

 

 

 

 

 

 

 

 

 

 

call

sub_4010A0

 

 

 

 

 

 

 

 

 

 

 

Ниже перечислены самые популярные виды ссылок.

Подссылки. Ссылки на начало функций, таких как printf и sub_4010A0.

Адресные ссылки. Ссылки для перехода в определенное место, например loc_40107E

и loc_401097.

Ссылки сдвига. Ссылки на сдвиг в памяти.

Перекрестные ссылки используются для перехода по заданному адресу — в нашем примере это 0x401075. Поскольку строки обычно являются ссылками, по ним тоже можно переходить. Так, aPrintNumberD позволяет перейти к объявлению этой строки в памяти.

Исследование истории переходов

В IDA Pro есть кнопки Вперед и Назад (рис. 5.4), которые позволяют перемещаться по истории изменений, — это похоже на навигацию по истории посещений в браузере. Каждое новое место, куда вы переходите в окне дизассем-

блирования, добавляется в вашу историю.

Рис. 5.4. Кнопки навигации

 

Полоса навигации

 

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

Светло-синим обозначается библиотечный код, распознанный по технологии FLIRT.

Код, сгенерированный компилятором, выделен красным.Темно-синий цвет отведен для кода, написанного вручную.

Анализ безопасности следует выполнять на темно-синем отрезке. Если вы начинаете теряться в запутанном коде, полоса навигации может помочь вам найти верный путь. По умолчанию IDA Pro выделяет импорт розовым, объявленные данные — серым, а неопределенную информацию — коричневым.

ПРИМЕЧАНИЕ

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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

118  Часть II  •  Продвинутый статический анализ

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Переход в определенное место

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Чтобы перейти по любому адресу виртуальной памяти, просто нажмите на клавиа­ туре клавишу G, находясь в окне дизассемблирования. На экране появится диалоговое окно, в которое нужно ввести адрес виртуальной памяти или именованное местоположение, такое как sub_401730 или printf.

Чтобы перейти к обычному файловому сдвигу, выберите пункт меню Jump Jump to File Offset (Переход Перейти к файловому сдвигу). Например, если вы просматриваете PE-файл в шестнадцатеричном редакторе и заметили что-то интересное (строку или код командной строки), то можете воспользоваться данной функцией, чтобы попасть в этот сдвиг, поскольку файл, загруженный в IDA Pro, отображается на память так, как если бы он был запущен операционной системой.

Поиск

Меню Search (Поиск) предлагает несколько разных способов перемещения курсора по окну дизассемблирования.

Выберите пункт Search Next Code (Поиск Следующий код), чтобы переместить курсор на следующий участок с заданной вами инструкцией.

Выберите пункт Search Text (Поиск Текст), чтобы найти в окне дизассемблирования определенную строку.

Выберите пункт Search Sequence of Bytes (Поиск Последовательность байтов), чтобы выполнить двоичный поиск определенной цепочки байтов в окне с шестнадцатеричным представлением. Эту функцию можно использовать при поиске определенных данных или сочетания опкодов.

В следующем примере показан анализ двоичного файла password.exe, выполненный в командной строке. Для продолжения работы этот вредонос требует пароль, и после неудачной попытки (ввод строки test) мы видим, как он выводит сообщение Bad key:

C:\>password.exe

Enter password for this Malware: test

Bad key

Откроем этот файл в IDA Pro и воспользуемся функцией поиска и ссылками, чтобы разблокировать программу. Для начала поищем все вхождения строки Bad key, как показано на рис. 5.5. Эта строка используется по адресу 0x401104 ; дважды щелкните на соответствующем элементе, чтобы перейти по этому адресу в окне дизассемблирования.

Ниже показан дизассемблированный код в районе адреса 0x401104. Сверху от "Bad key\n" можно заметить операцию сравнения (адрес 0x4010F1), которая прове-