Бинарный анализ с декомпиляцией и LLVM
Ленар Сафин, Ярослав Александров
к.ф.-м.н. Катерина Трошина, к.ф.-м.н. Александр Чернов
PHDays V, 26 мая 2015
Откуда мы пришли? Кто мы?
Куда мы идем?
● Анализ программ
● Декомпиляция
– IA32/AMD64
– ARM/AArch64
– Custom (VMs, less-known archs...)
● Деобфускация
● Статический анализ
– Поиск по шаблонам
– Taint analysis (dflow)
● Расширяемая база знаний
● Python API
Анализ программ: идеи
Анализ программ: архитектура
Анализ программ: архитектура
● Большое количество качественных фронтендов
● Отлично подходит для представления C-family
программ
● Реализация часто используемых алгоритмов из
коробки + куча сторонних библиотек
– Dominators, loops etc...
– Dataflow
– AA, TBAA
● Либеральная лицензия (University of
Illinois/NCSA – MIT/3-BSD based)
LLVM aka Low Level Virtual Machine
Анализ программ: архитектура
● Больше информации об исходной программе
● Программные компоненты без исходного кода
– Библиотеки
– Исполняемые файлы
● Legacy компоненты без исходного кода
● Другое
● Потому что мы можем
А зачем декомпиляция?
Анализ программ: архитектура
● Утеряно большое количество информации
– Подпрограммы
– Переменные
– Классы и типы данных
● ABI больше, чем пальцев на руках
● Файл может быть упакован
Декомпиляция: проблемы
● Полностью автоматический
● Качественный вывод
● Восстановление высокоуровневой семантики программы
– Подпрограммы, CFG
– Переменные и типы данных
● Поддержка высокоуровневых конструкций C++
– vftables, RTTI
– EH
● Расширяемая база знаний
● Встроенный распаковщик
Декомпиляция: идеи
● Восстановление CFG программы
– Анализ по прологам
– Сигнатурный поиск (like FLIRT)
– vftables, SEH handlers...
● Анализ потоков данных
Декомпиляция: how it works
●
Восстановление переменных
– Временные (стек, регистры)
– Локальные (стек, регистры)
– Глобальные
●
Восстановление типов данных
– Базовые типы (int, float, ptrs...)
– Структурные типы (массивы, структуры)
Декомпиляция: how it works
● Генерация LLVM
● Упрощение IR
– DCE, memprop
● Распознавание встраиваемых функций
● Распознавание регионов CFG (циклы, условия...)
Декомпиляция: how it works
Пример: strbuf
Пример: strbuf
Пример: strbuf
Пример: strbuf
● Поддерживаемые архитектуры
– IA32 (AMD64 in work)
● Поддерживаемые образы программ
– PE/COFF
– ELF
– Mach-O
● База знаний
– LibC
– Stdlib
– Win32 API
– POSIX API
– Linux API
Introducing posx86
● Статический анализ и интерпретация
● Бинарная и не только трансляция
– Бэкэнды: ARM, MIPS, JavaScript
– Платформы: Win, UNIX
– Just for fun
● Классическая декомпиляция в псевдокод
● Графическое отображение CFG программы
Возможные применения
● Частичная трансляция исходного образа
● Частичный анализ программы
● База сигнатур уязвимых программных компонент
● Интерактивное взаимодействие
Разделяй и властвуй
Спасибо за внимание!
smartdec.ru
decompilation.info
github.com/smartdec/smartdec

More Related Content

PPTX
АиСД осень 2012 лекция 8
PPT
построение хранилищ
PPTX
Titanic.csv – Как заметить макушку айсберга в океане багов?
PPT
доклад электромагнитное излучение
PPT
Лекция 11 Действие электрического тока на биологические ткани организма
PPT
презентация савилова
PDF
Reverse engineering of binary programs for custom virtual machines
PPTX
C++ idioms
АиСД осень 2012 лекция 8
построение хранилищ
Titanic.csv – Как заметить макушку айсберга в океане багов?
доклад электромагнитное излучение
Лекция 11 Действие электрического тока на биологические ткани организма
презентация савилова
Reverse engineering of binary programs for custom virtual machines
C++ idioms

Viewers also liked (20)

PPTX
влияние электромагнитного излучения бытовых приборов и сото
PPT
электромагнитное излучение и его влияние на человека
PPTX
презентация
PDF
Java Memory Model
PPT
Биологическое действие магнитного поля на организм человека
PPTX
Big Data Processing Using Hadoop Infrastructure
PPT
Негативное воздействие компьютера на здоровье человека и способы защиты
PPTX
Системноинженерное мышление в непрерывном образовании
PPTX
влияние компьютера на человека
PPTX
низкоуровневое программирование сегодня новые стандарты с++, программирован...
PPTX
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
PPTX
В топку Postman - пишем API автотесты в привычном стеке
PDF
Лекция 3. Распределённая файловая система HDFS
PPTX
Автоматизация тестирования API для начинающих
PPTX
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
PPT
Влияние компьютера на человека
PPTX
тестовые стратегии
PDF
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
PPTX
Безлюдные организации и их проблемы
PPTX
Немедикаментозные подходы к активному долголетию
влияние электромагнитного излучения бытовых приборов и сото
электромагнитное излучение и его влияние на человека
презентация
Java Memory Model
Биологическое действие магнитного поля на организм человека
Big Data Processing Using Hadoop Infrastructure
Негативное воздействие компьютера на здоровье человека и способы защиты
Системноинженерное мышление в непрерывном образовании
влияние компьютера на человека
низкоуровневое программирование сегодня новые стандарты с++, программирован...
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
В топку Postman - пишем API автотесты в привычном стеке
Лекция 3. Распределённая файловая система HDFS
Автоматизация тестирования API для начинающих
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
Влияние компьютера на человека
тестовые стратегии
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Безлюдные организации и их проблемы
Немедикаментозные подходы к активному долголетию
Ad

Similar to Бинарный анализ с декомпиляцией и LLVM (8)

PPTX
Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк
PDF
Построение компилятора на базе LLVM — Павел Сычев
PDF
Обратная разработка бинарных форматов с помощью Kaitai Struct
PPT
Развитие технологий генерации эксплойтов на основе анализа бинарного кода
PDF
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
PPTX
о некоторых вопросах бинарной совместимости в C++
PPTX
«Introduction to malware reverse engineering» by Sergey Kharyuk
PPTX
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
Введение в реверс-инжиниринг вредоносного ПО - Сергей Харюк
Построение компилятора на базе LLVM — Павел Сычев
Обратная разработка бинарных форматов с помощью Kaitai Struct
Развитие технологий генерации эксплойтов на основе анализа бинарного кода
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
о некоторых вопросах бинарной совместимости в C++
«Introduction to malware reverse engineering» by Sergey Kharyuk
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
Ad

Бинарный анализ с декомпиляцией и LLVM

  • 1. Бинарный анализ с декомпиляцией и LLVM Ленар Сафин, Ярослав Александров к.ф.-м.н. Катерина Трошина, к.ф.-м.н. Александр Чернов PHDays V, 26 мая 2015
  • 2. Откуда мы пришли? Кто мы? Куда мы идем? ● Анализ программ ● Декомпиляция – IA32/AMD64 – ARM/AArch64 – Custom (VMs, less-known archs...) ● Деобфускация
  • 3. ● Статический анализ – Поиск по шаблонам – Taint analysis (dflow) ● Расширяемая база знаний ● Python API Анализ программ: идеи
  • 6. ● Большое количество качественных фронтендов ● Отлично подходит для представления C-family программ ● Реализация часто используемых алгоритмов из коробки + куча сторонних библиотек – Dominators, loops etc... – Dataflow – AA, TBAA ● Либеральная лицензия (University of Illinois/NCSA – MIT/3-BSD based) LLVM aka Low Level Virtual Machine
  • 8. ● Больше информации об исходной программе ● Программные компоненты без исходного кода – Библиотеки – Исполняемые файлы ● Legacy компоненты без исходного кода ● Другое ● Потому что мы можем А зачем декомпиляция?
  • 10. ● Утеряно большое количество информации – Подпрограммы – Переменные – Классы и типы данных ● ABI больше, чем пальцев на руках ● Файл может быть упакован Декомпиляция: проблемы
  • 11. ● Полностью автоматический ● Качественный вывод ● Восстановление высокоуровневой семантики программы – Подпрограммы, CFG – Переменные и типы данных ● Поддержка высокоуровневых конструкций C++ – vftables, RTTI – EH ● Расширяемая база знаний ● Встроенный распаковщик Декомпиляция: идеи
  • 12. ● Восстановление CFG программы – Анализ по прологам – Сигнатурный поиск (like FLIRT) – vftables, SEH handlers... ● Анализ потоков данных Декомпиляция: how it works
  • 13. ● Восстановление переменных – Временные (стек, регистры) – Локальные (стек, регистры) – Глобальные ● Восстановление типов данных – Базовые типы (int, float, ptrs...) – Структурные типы (массивы, структуры) Декомпиляция: how it works
  • 14. ● Генерация LLVM ● Упрощение IR – DCE, memprop ● Распознавание встраиваемых функций ● Распознавание регионов CFG (циклы, условия...) Декомпиляция: how it works
  • 19. ● Поддерживаемые архитектуры – IA32 (AMD64 in work) ● Поддерживаемые образы программ – PE/COFF – ELF – Mach-O ● База знаний – LibC – Stdlib – Win32 API – POSIX API – Linux API Introducing posx86
  • 20. ● Статический анализ и интерпретация ● Бинарная и не только трансляция – Бэкэнды: ARM, MIPS, JavaScript – Платформы: Win, UNIX – Just for fun ● Классическая декомпиляция в псевдокод ● Графическое отображение CFG программы Возможные применения
  • 21. ● Частичная трансляция исходного образа ● Частичный анализ программы ● База сигнатур уязвимых программных компонент ● Интерактивное взаимодействие Разделяй и властвуй