GHIDRA. Полное руководство
Book information
Description
Платформа Ghidra, ставшая итогом более десяти лет работы в Агентстве национальной безопасности, была разработана для решения наиболее трудных задач обратной разработки (Reverse Engeneering – RE). После раскрытия исходного кода этого инструмента, ранее предназначавшегося только для служебного пользования, один из лучших в мире дизассембле- ров и интуитивно понятных декомпиляторов оказался в руках всех специа листов, стоящих на страже кибербезопасности. Эта книга, рассчитанная равно на начинающих и опытных пользователей, поможет вам во всеоружии встретить задачу RE и анализировать файлы, как это делают профессионалы. ОБ АВТОРАХ О ТЕХНИЧЕСКОМ РЕЦЕНЗЕНТЕ КРАТКОЕ СОДЕРЖАНИЕ ОГЛАВЛЕНИЕ БЛАГОДАРНОСТИ ВВЕДЕНИЕ Часть I. Введение 1 Введение в дизассемблирование Теория дизассемблирования Что делает дизассемблер Зачем нужен дизассемблер Анализ вредоносного ПО Анализ на уязвимость Анализ интероперабельности Проверка компилятора Отображение команд в процессе отладки Как работает дизассемблер Базовый алгоритм дизассемблирования Алгоритм линейной развертки Алгоритм рекурсивного спуска Резюме 2 Обратная разработка и инструменты дизассемблирования Средства классификации file PE Tools PEiD Обзорные инструменты nm ldd objdump otool dumpbin c++filt Инструменты глубокой инспекции strings Дизассемблеры Резюме 3 Первое знакомство с Ghidra Лицензионная политика Ghidra Версии Ghidra Ресурсы поддержки Ghidra Скачивание Ghidra Установка Ghidra Запуск Ghidra Резюме Часть II. Основы использования Ghidra 4 Начало работы с Ghidra Запуск Ghidra Создание нового проекта Загрузка файла в Ghidra Использование простого двоичного загрузчика Анализ файлов в Ghidra Результаты автоматического анализа Поведение рабочего стола во время начального анализа Сохранение работы и выход Советы по организации рабочего стола Ghidra Резюме 5 Отображение данных в Ghidra Браузер кода Окна браузера кода Окно листинга Создание дополнительных окон дизассемблера Представление графа функции в Ghidra Окно деревьев программы Окно дерева символов Импортируемые объекты Экспортируемые объекты Функции Метки Классы Пространства имен Окно диспетчера типов данных Окно консоли Окно декомпилятора Другие окна Ghidra Окно байтов Окно определенных данных Окно определенных строк Окна таблицы символов и ссылок на символы Окно карты памяти Окно графа вызовов функции Резюме 6 Дизассемблирование в Ghidra Навигация по листингу дизассемблера Имена и метки Навигация в Ghidra Перейти к История навигации Кадры стека Механизмы вызова функций Соглашения о вызове Дополнительные сведения о кадре стека Размещение локальных переменных Примеры кадров стека Представления стека в Ghidra Анализ кадров стека в Ghidra Кадры стека в листинге дизассемблера Анализ кадра стека с помощью декомпилятора Локальные переменные как операнды Редактор кадра стека в Ghidra Поиск Поиск по тексту программы Резюме 7 Управление дизассемблированием Манипулирование именами и метками Переименование параметров и локальных переменных Переименование меток Добавление новой метки Редактирование меток Удаление метки Навигация по меткам Комментарии Концевые комментарии Предварительные и заключительные комментарии Вводные комментарии Повторяемые комментарии Комментарии для параметров и локальных переменных Аннотации Базовые преобразования кода Изменение параметров отображения кода Форматирование операндов команд Манипулирование функциями Преобразование данных в код (и наоборот) Основы преобразования данных Задание типов данных Работа со строками Определение массивов Резюме 8 Типы данных и структуры данных В чем смысл этих данных? Распознавание структур данных в коде Доступ к элементам массива Доступ к полям структуры Массивы структур Создание структур в Ghidra Создание новой структуры Редактирование полей структуры Наложение структур Введение в обратную разработку кода на C++ Указатель this Виртуальные функции и vf-таблицы Жизненный цикл объекта Декорирование имен Идентификация типа во время выполнения Отношения наследования Справочные материалы по обратной разработке кода на C++ Резюме 9 Перекрестные ссылки Базовые сведения о ссылках Перекрестные (обратные) ссылки Пример анализа ссылок Окна управления ссылками Окно перекрестных ссылок Ссылки на Ссылки на символы Дополнительные способы работы со ссылками Резюме 10 Графы Простые блоки Графы функций Графы вызовов функций Деревья Резюме Часть III. Поставить Ghidra себе на службу 11 Коллективная обратная разработка программ Коллективная работа Подготовка сервера Ghidra Разделяемые проекты Создание разделяемого проекта Управление проектом Меню окна проекта Меню File Меню Edit Меню Project Репозиторий проекта Управление версиями Пример Резюме 12 Настройка Ghidra Браузер кода Реорганизация окон Редактирование параметров инструментов Редактирование параметров инструмента Специальные средства редактирования для некоторых инструментов Сохранение конфигурации браузера кода Окно проекта в Ghidra Меню Tools Рабочие пространства Резюме 13 Расширение взгляда на мир Ghidra Импорт файлов Анализаторы Модели слов Типы данных Создание новых архивов типов данных Идентификаторы функций Плагин Function ID Пример применения плагина Function ID: UPX Пример применения плагина Function ID: профилирование статической библиотеки Резюме 14 Основы написания скриптов для Ghidra Диспетчер скриптов Окно диспетчера скриптов Панель инструментов диспетчера скриптов Разработка скриптов Написание скриптов на Java (не JavaScript!) Пример редактирования скрипта: поиск по регулярному выражению Скрипты на Python Поддержка других языков Введение в Ghidra API Интерфейс Address Интерфейс Symbol Интерфейс Reference Класс GhidraScript Функции манипулирования программой Класс Program Интерфейс Function Интерфейс Instruction Примеры скриптов Ghidra Пример 1: перечисление функций Пример 2: перечисление команд Пример 3: перечисление перекрестных ссылок Пример 4: нахождение вызовов функции Пример 5: эмуляция поведения языка ассемблера Резюме 15 Eclipse и GhidraDev Eclipse Интеграция с Eclipse Запуск Eclipse Редактирование скриптов в Eclipse Меню GhidraDev GhidraDevNew Навигация в обозревателе пакетов Пример: проект модуля анализатора Шаг 1: постановка задачи Шаг 2: создать модуль в Eclipse Шаг 3: написать анализатор Шаг 4: протестировать анализатор в Eclipse Шаг 5: добавить анализатор в Ghidra Шаг 6: тестирование анализатора в Ghidra Резюме 16 Необслуживаемый режим Ghidra Приступая к работе Шаг 1: запуск Ghidra Шаги 2 и 3: создать новый проект Ghidra в указанном месте Шаг 4: импортировать файл в проект Шаги 5 и 6: автоматический анализ файла, сохранение и выход Флаги и параметры Написание скриптов HeadlessSimpleROP Автоматизированное создание базы данных FidDb Резюме Часть IV. Дополнительные темы 17 Загрузчики Ghidra Анализ неизвестного файла Загрузка PE-файла Windows вручную Пример 1: модуль загрузчика SimpleShellcode Шаг 0: шаг назад Шаг 1: поставить задачу Шаг 2: создать модуль в Eclipse Шаг 3: разработать загрузчик Шаг 4: добавить загрузчик в Ghidra Шаг 5: протестировать загрузчик в Ghidra Пример 2: простой загрузчик шелл-кода из исходных файлов Обновление 1: изменить ответ на опрос импортера Обновление 2: найти шелл-код в исходном коде Обновление 3: преобразовать шелл-код в байтовые значения Обновление 4: загрузить преобразованный байтовый массив Результаты Пример 3: простой загрузчик шелл-кода в формате ELF Организационные мероприятия Формат заголовков ELF Определение поддерживаемых спецификаций загрузки Загрузить содержимое файла в Ghidra Отформатировать байты данных и добавить точку входа Файлы определений языков Opinion-файлы Результаты Резюме 18 Процессорные модули в Ghidra Знакомство с процессорным модулем Ghidra Процессорные модули в Eclipse SLEIGH Руководства по процессорам Модификация процессорного модуля Ghidra Постановка задачи Пример 1: добавление команды в процессорный модуль Пример 2: модификация команды в процессорном модуле Вариант 1: записать в EAX константу Пример 3: добавление регистра в процессорный модуль Резюме 19 Декомпилятор Ghidra Анализ с помощью декомпилятора Параметры анализа Окно декомпилятора Пример 1: редактирование в окне декомпилятора Пример 2: функции, не возвращающие управление Пример 3: автоматизированное создание структуры Резюме 20 Зависимость от компилятора Высокоуровневые конструкции Предложения switch Пример: сравнение компиляторов gcc и Microsoft C/C++ Параметры компилятора Пример 1: оператор деления по модулю Пример 2: тернарный оператор Пример 3: встраивание функций Реализация зависящих от компилятора особенностей C++ Перегрузка функций Реализации RTTI Нахождение функции main Пример 1: от _start к main с компилятором gcc для Linux x86-64 Пример 2: от _start к main с компилятором clang для FreeBSD x86-64 Пример 3: от _start к main с компилятором Microsoft’s C/C++ Резюме Дополнительные темы Часть V. РЕАЛЬНЫЕПРИЛОЖЕНИЯ 21 Анализ обфусцированного кода Противодействие обратной разработке Обфускация Методы противодействия статическому анализу Обфускация импортированной функции Методы противодействия динамическому анализу Статическая деобфускация двоичных файлов в Ghidra Скриптовая деобфускация Эмуляторная деобфускация Резюме 22 Изменение двоичного кода Планирование заплаты Поиск того, что нуждается в изменении Поиск в памяти Поиск прямых ссылок Поиск командных паттернов Поиск конкретных типов поведения Наложение заплаты Внесение простых изменений Внесение нетривиальных изменений Экспорт файлов Форматы экспорта из Ghidra Двоичный формат экспорта Экспорт с применением скрипта Пример: латание двоичного файла Резюме 23 Определение разности двоичных файлов и отслеживание версий Разность двоичных файлов Инструмент Program Diff Пример: объединение двух проанализированных файлов Сравнение функций Окно сравнения функций Пример: сравнение криптографических функций Отслеживание версий Концепции, относящиеся к отслеживанию версий Резюме Ghidra для пользователей IDA Основы Создание базы данных Основные окна и навигация Дерево символов Скрипты Резюме Предметный указатель Предметный указатель
Similar books
GHIDRA. Полное руководство
2022 · PDF
Методология научных исследований и прикладной аналитики: Учебник. Изд. 5-е, дополн. и перераб. В 2 т. Т.2: Научные исследования: Мастерство и искусство научного мышления и научной работы / Methodology of Scientific Research and Practical Analytics: A Textbook: Fifth Edition. In two volumes. Vol.2: Scientific research: Art of scientific thinking and scientific work / Méthodologie de la recherche scientifique et de l’analytique appliquée: Manuel: Cinquième édition. En 2 tomes. T.2: Recherches scientifiques: Art de la pensée scientifique et du travail scientifique
2025 · PDF
Методы и понятия философии искусства: практикум : уровень подготовки кадров высшей квалификации: ассиснтурв-стажировка : специальности: 54.09.03 "Искусство дизайна (по видам)", 54.09.02 "Мастерство декоративно-прикладного искусства и народных промыслов (по видам)" : укрупненная группа специальностей: 54.00.00 "Изобразительное и прикладные виды искусств" : квалификация выпускника: "Преподаватель творческих дисциплин в высшей школе. Дизайнер", "Преподаватель творческих дисциплин в высшей школе. Художник декоративно-прикладного искусства" : форма обучения: очная
2022 · PDF
Разработка графического интерфейса пользователя информационной системы с использованием библиотеки QT: учебное пособие для студентов 1 курса направлений подготовки 09.04.02 "Информационные системы и технологии", 27.04.03 "Системный анализ и управление" очной формы обучения, 2 курса направления подготовки 10.05.03 "Информационная безопасность автоматизированных систем" очной формы обучения и 3 курса направления подготовки 09.03.02 "Информационные системы и технологии" очной и заочной форм обучения : учебное электронное издание
2021 · PDF
Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.) =: Archaeological Cultures of Siberia in the context of Cross-cultural contacts in Eurasia: dedicated to the 300th anniversary of the first scientific archaeological excavations in Siberia (1722) : материалы Международной археологической конференции молодых исследователей "Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.)" (Новосибирск, 21-25 ноября 2022 г.)
2022 · PDF
Трешниковские чтения - 2023. Современная географическая картина мира и технологии географического образования =: Treshnikov readings - 2023. Modern geographical global picture and technology of geographic education : материалы Всероссийской научно-практической конференции с международным участием, посвящённой памяти знаменитого российского океанолога, исследователя Арктики и Антарктики, академика Алексея Фёдоровича Трёшникова и 60-летию Ульяновского областного отделения Всероссийской общественной организации "Русское гаографическое общество" (13 апреля 2023)
2023 · PDF
Управление объектами интеллектуальной собственности. Искусство изобретать: учебник для обучающихся по направлениям подготовки 23.00.00 , направлениям подготовки 23.03.01 "Технология транспортных процессов", уровень образования-"бакалавриат", 23.03.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования-"бакалавриат", 23.04.01 "Технология транспортных процессов", уровень образования- "магистратура", 23.04.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования- "магистратура"
2022 · PDF
Философия. Учебно-методический комплекс дисциплины по направлениям подготовки: 51.03.03 (071800.62) «Социально-культурная деятельность», профили подготовки: «Социально-культурные технологии в индустрии досуга», «Менеджмент социально-культурной деятельности», «Менеджмент детско-юношеского досуга», «Постановка и продюсирование культурно-досуговых программ», «Социально-культурная анимация и рекреация»; 38.03.02 (080200.62) «Менеджмент», профили подготовки: «Управление человеческими ресурсами», «Управление малым бизнесом», квалификации (степень) выпускника – «бакалавр»
2014 · PDF