Специальный курс «Основы анализа программных реализаций» (Introduction to Software Reverse-Engineering)
|
Лекторы: доцент, кандидат физ.-мат. наук Падарян Вартан Андроникович, н. с. ИСП РАН Макаров Алексей Николаевич.
Продолжительность: 36 часов лекции.
Семестр: весенний.
Аудитория: для студентов бакалавриата (2-3 курс). Сведения о записи на курс запросите по .
|
Аннотация
|
В курсе рассматриваются подходы и технологии, применяемые для анализа программных реализаций. Теоретическая часть курса рассказывает о базовых подходах, методах и математических моделях, необходимых для проведения анализа программного обеспечения. Будут рассмотрены статические и динамические методы и инструменты для анализа программного обеспечения: применение дизассемблера и отладчика, эмуляторов, инструментов динамического бинарного анализа, инструментов фаззинга (fuzzing) и символьных вычислений для анализа программного обеспечения, а также обзор применения различных вспомогательных утилит. В практической части рассматриваются некоторые задачи из данной предметной области на основе учебных примеров. Выполнение учебных задач позволит студентам получить практические навыки работы с рассматриваемыми утилитами и инструментами для анализа программных реализаций.
|
Тематический план курса
|
1. Введение в курс. Методика анализа ПО. (Комплексный подход к изучению ПО с целью понимания его работы, структуры и функциональности. Архитектурный анализ.)
2. Анализ исполняемых файлов. (Анализ исполняемых и бинарных файлов. Форматы исполняемых файлов ELF и PE. Утилиты для анализа бинарных файлов, Hex-редакторы.)
3. Статический анализ. Основы дизассемблирования. (Обзор популярных дизассемблеров: IDA Pro, RetDec, Ghidra. Базовые блоки в программах. Представление программ в виде графов потока управления (CFG) и памяти (DFG). Плагины для IDA Pro. Декомпилятор Hex-Rays. Автоматизация дизассемеблирования и разработка плагинов для IDA Pro.)
4. Динамический анализ. Создание виртуального стенда. (Построение испытательного стенда. Обзор популярных среды виртуализации. Эмулятор QEMU. Использование контролируемой среды для анализа ПО. Мониторинг поведения ПО.)
5. Динамический анализ. Работа с отладчиком. (Связь отладчиков с аппаратным уровнем. Программные отладочные интерфейс (API) в ОС Windows и Linux. Основные приемы отладки. Обзор анти-отладочных приемов. Удаленная отладка. Отладка с использованием сред виртуализации. Трассировка.)
6. Динамическое бинарное инструментирование (DBI). (Обзор популярных инструментов: PIN, DynamoRio, Frida, Valgrind. Разработка инструментов анализа ПО на основе DBI.)
7. Тестирование безопасности исследуемого приложения. (Фаззинг-тестирование: условия применения и ограничения. Санитайзеры. Генерация входных данных.)
8. Использование символьных вычислений для анализа ПО. (SMT-решатели. Язык SMT-LIB. Решение логических задач с использованием решателей. Динамическая генерации тестовых данных. Символьные вычисления и фаззинг. Символьная виртуальная машина KLEE на основе LLVM.)
9. Анализ Embedded устройств. (Обзор способов и подходов к анализу встраиваемых устройств на основе микроконтроллеров.)
Основная литература:
1) К. Касперски Крис, Е. Рокко. Искусство дизассемблирования. БХВ-Петербург, 2015 г.
2) М. Сикорски, Э. Хониг. Вскрытие покажет! Практический анализ вредоносного ПО. Питер, 2018 г.
3) Д. Эндриесс. Практический анализ двоичных файлов. ДМК Пресс, 2021 г.
Дополнительная литература:
4) П. Амини, А. Грин, М. Саттон. Fuzzing: исследование уязвимостей методом грубой силы. Символ-плюс, 2009 г.
5) А. Усанов. Реверс-инжиниринг встраиваемых систем. ДМК, 2023
|
|
Размещение на других ресурсах, а также коммерческое использование материалов, опубликованных в данном разделе, возможно только с разрешения авторов.
|
© Кафедра системного программирования ВМК МГУ.
Обновлено: 8.II.2025
|
|