Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

531 views

Published on

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

Published in: Technology
  • Be the first to comment

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

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

×