I Анализ бинарного кода
Утилиты пакета GNU binutils: ar, strings, strip, nm, size, readelf, objdump. Отладка ошибок, отладчик gdb, основные приемы работы. Отладочная информация в объектных файлах. Позиционно независимый код.
Задачи анализа бинарного кода: восстановление алгоритмов, форматов данных, протоколов, поиск дефектов. Формы представления результатов анализа (граф вызов, CFG). Дизассемблирование, восстановление меток. Интерактивный дизассемблер IDA Pro.
Вспомогательные данные, используемые в анализе бинарного кода. Символы системных функций и данных. Распознавание в машинном коде конструкций языка Си.
Динамический анализ: отладка и трассировка. Дополнение статического анализа результатами трассировки.
II Архитектура Intel64
Краткий обзор архитектуры Intel64, ее отличия от IA32. Соглашение о связях, используемое в 64-разрядном коде.
Регистры общего назначения. Примеры команд. Регистры XMM. Примеры скалярных команд. Примеры векторных команд.
Режимы работы процессора: 64-разрядный режим, режим совместимости, 32-разрядный режим. Различия между ними. Стек в 64-разрядном режиме.
Соглашение о связях System V AMD64. Соглашение о связях Microsoft.
III Анализ кода ОС на примере MS Windows
Использование аппаратуры процессоров семейства x86 для организации многозадачного режима в ОС Windows. Адресные пространства, процессы и потоки. Пространство имен диспетчера объектов. Взаимосвязь основных объектов ядра. Прохождение запроса в/в между user и kernel mode. Основы построения драйверов ядра.
Средства анализа кода в ОС Windows. Примеры проведения динамического анализа с использованием трассировщика.
IV Архитектура ARM
Обзор архитектуры ARM. Соглашение о связях. Регистры общего назначения. Примеры команд. Кодирование команд в виде ARM и Thumb. Векторная архитектура NEON: векторные регистры, примеры команд.
Оптимизации компилятора, полезные для архитектуры ARM. Рассмотрение практических задач: оптимизация программ на языке Си для платформы ARM, автонастройка компилятора для данной программы, оптимизация энергосбережения.
Pingback: Программа факультатива | Архитектура ЭВМ и язык ассемблера