PRACTICAL
BINARY
ANALYSIS
Build Your Own Linux Tools
for Binary Instrumentation,
Analysis, and Disassembly
Dennis Andriesse
San Francisco
ПРАКТИЧЕСКИЙ
АНАЛИЗ
ДВОИЧНЫХ
ФАЙЛОВ
Как самому создать
в Linux инструментарий
для оснащения, анализа
и дизассемблирования
двоичных файлов
Дэннис Эндриесс
Москва, 2022
УДК 004.451.5
ББК 32.371
Э64
Э64
Эндриесс Д.
Практический анализ двоичных файлов / пер. с англ. А. А. Слинкина. – М.:
ДМК Пресс, 2021. – 460 с.: ил.
ISBN 978-5-97060-978-1
В книге представлено подробное описание методов и инструментов, необходимых для анализа двоичного кода, который позволяет убедиться, что откомпилированная программа работает так же, как исходная, написанная на языке
высокого уровня.
Наряду с базовыми понятиями рассматриваются такие темы, как оснащение
двоичной программы, динамический анализ заражения и символическое выполнение. В каждой главе приводится несколько примеров кода; к книге прилагается
сконфигурированная виртуальная машина, включающая все примеры.
Руководство адресовано специалистам по безопасности и тестированию на
проникновение, хакерам, аналитикам вредоносных программ и всем, кто интересуется вопросами защиты ПО.
ЧАСТЬ I. ФОРМАТЫ ДВОИЧНЫХ ФАЙЛОВ
Глава 1. Анатомия двоичного файла. .......................................................................... 32
Глава 2. Формат ELF...............................................................................................52
Глава 3. Формат PE: краткое введение.................................................................78
Глава 4. Создание двоичного загрузчика с применением libbfd.......................... 88
ЧАСТЬ II. ОСНОВЫ АНАЛИЗА ДВОИЧНЫХ ФАЙЛОВ
Глава 5. Основы анализа двоичных файлов в Linux...............................................109
Глава 6. Основы дизассемблирования и анализа двоичных файлов..................135
Глава 7. Простые методы внедрения кода для формата ELF.................................178
ЧАСТЬ III. ПРОДВИНУТЫЙ АНАЛИЗ ДВОИЧНЫХ ФАЙЛОВ
Глава 8. Настройка дизассемблирования..................................................................212
Глава 9. Оснащение двоичных файлов. .....................................................................244
Глава 10. Принципы динамического анализа заражения.....................................289
Глава 11. Практический динамический анализ заражения с помощью libdft....305
Глава 12. Принципы символического выполнения. ...............................................335
Глава 13. Практическое символическое выполнение с помощью Triton. .........361
ЧАСТЬ IV. ПРИЛОЖЕНИЯ
Приложение A. Краткий курс ассемблера x86..........................................................402
Приложение B. Реализация перезаписи PT_NOTE с помощью libelf..................422
Приложение C. Перечень инструментов анализа двоичных файлов.................443
Приложение D. Литература для дополнительного чтения. ..................................447
Предметный указатель..................................................................................................451
6
Глава
СОДЕРЖАНИЕ
Вступительное слово.............................................................................................. 17
Предисловие................................................................................................................ 20
Благодарности. ........................................................................................................... 21
Введение........................................................................................................................ 22
ЧАСТЬ I. ФОРМАТЫ ДВОИЧНЫХ ФАЙЛОВ
Глава 1. Анатомия двоичного файла............................................................. 32
1.1
1.2
1.3
1.4
1.5
Процесс компиляции программы на C. .......................................................... 33
1.1.1
Этап препроцессирования................................................................... 33
1.1.2
Этап компиляции................................................................................... 35
1.1.3
Этап ассемблирования.......................................................................... 37
1.1.4
Этап компоновки................................................................................... 38
Символы и зачищенные двоичные файлы..................................................... 40
1.2.1
Просмотр информации о символах................................................... 40
1.2.2
Переход на темную сторону: зачистка двоичного файла. ........... 42
Дизассемблирование двоичного файла.......................................................... 42
1.3.1
Заглянем внутрь объектного файла................................................... 43
1.3.2
Изучение
Последние комментарии
3 часов 24 минут назад
5 часов 28 минут назад
1 день 2 часов назад
1 день 2 часов назад
1 день 8 часов назад
1 день 12 часов назад