SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Бинарный анализ с декомпиляцией и 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

Más contenido relacionado

Destacado

влияние электромагнитного излучения бытовых приборов и сото
влияние электромагнитного излучения бытовых приборов и сотовлияние электромагнитного излучения бытовых приборов и сото
влияние электромагнитного излучения бытовых приборов и сотоAndrei V, Zhuravlev
 
электромагнитное излучение и его влияние на человека
электромагнитное излучение и его влияние на человекаэлектромагнитное излучение и его влияние на человека
электромагнитное излучение и его влияние на человекаAndrei V, Zhuravlev
 
презентация
презентацияпрезентация
презентацияAndrey Fomenko
 
Биологическое действие магнитного поля на организм человека
Биологическое действие магнитного поля на организм человека Биологическое действие магнитного поля на организм человека
Биологическое действие магнитного поля на организм человека amtc7
 
Big Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop InfrastructureBig Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop InfrastructureDmitry Buzdin
 
Негативное воздействие компьютера на здоровье человека и способы защиты
Негативное воздействие компьютера на здоровье человека и способы защитыНегативное воздействие компьютера на здоровье человека и способы защиты
Негативное воздействие компьютера на здоровье человека и способы защитыHakimova_AR
 
Системноинженерное мышление в непрерывном образовании
Системноинженерное мышление в непрерывном образованииСистемноинженерное мышление в непрерывном образовании
Системноинженерное мышление в непрерывном образованииAnatoly Levenchuk
 
влияние компьютера на человека
влияние компьютера на человекавлияние компьютера на человека
влияние компьютера на человекаZavirukhina
 
низкоуровневое программирование сегодня новые стандарты с++, программирован...
низкоуровневое программирование сегодня   новые стандарты с++, программирован...низкоуровневое программирование сегодня   новые стандарты с++, программирован...
низкоуровневое программирование сегодня новые стандарты с++, программирован...COMAQA.BY
 
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0COMAQA.BY
 
В топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стекеВ топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стекеCOMAQA.BY
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Автоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающихАвтоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающихCOMAQA.BY
 
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...COMAQA.BY
 
Влияние компьютера на человека
Влияние компьютера на человекаВлияние компьютера на человека
Влияние компьютера на человекаAlex-11
 
тестовые стратегии
тестовые стратегиитестовые стратегии
тестовые стратегииCOMAQA.BY
 
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...COMAQA.BY
 
Безлюдные организации и их проблемы
Безлюдные организации и их проблемыБезлюдные организации и их проблемы
Безлюдные организации и их проблемыAnatoly Levenchuk
 
Немедикаментозные подходы к активному долголетию
Немедикаментозные подходы к активному долголетиюНемедикаментозные подходы к активному долголетию
Немедикаментозные подходы к активному долголетиюAlex Krol
 

Destacado (20)

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

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

Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системpianist2317
 
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутриHappyDev-lite
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)Sergey Skvortsov
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияAndrew Babiy
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 
Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора Yandex
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковSergey Platonov
 
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019corehard_by
 
BlackBox testing
BlackBox testingBlackBox testing
BlackBox testingbeched
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 
Перспективные исследования и технологии
Перспективные исследования и технологииПерспективные исследования и технологии
Перспективные исследования и технологииAncud Ltd.
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и DjangoTaras Lyapun
 
Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Denis Efremov
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Buffer overflow and other software vulnerabilities: theory and practice of pr...
Buffer overflow and other software vulnerabilities: theory and practice of pr...Buffer overflow and other software vulnerabilities: theory and practice of pr...
Buffer overflow and other software vulnerabilities: theory and practice of pr...Roman Oliynykov
 

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

Tarantool_qs
 Tarantool_qs Tarantool_qs
Tarantool_qs
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и систем
 
Лекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и системЛекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и систем
 
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обучения
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
 
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
 
BlackBox testing
BlackBox testingBlackBox testing
BlackBox testing
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
Перспективные исследования и технологии
Перспективные исследования и технологииПерспективные исследования и технологии
Перспективные исследования и технологии
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
 
Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Buffer overflow and other software vulnerabilities: theory and practice of pr...
Buffer overflow and other software vulnerabilities: theory and practice of pr...Buffer overflow and other software vulnerabilities: theory and practice of pr...
Buffer overflow and other software vulnerabilities: theory and practice of pr...
 

Бинарный анализ с декомпиляцией и 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. ● Частичная трансляция исходного образа ● Частичный анализ программы ● База сигнатур уязвимых программных компонент ● Интерактивное взаимодействие Разделяй и властвуй