SlideShare a Scribd company logo
1 of 52
Download to read offline
Radare2 - от A до Z
Radare2 воркшоп (4 часа)
Anton Kochkov (@akochkov), Boris Ryutin (@dukebarman)
18 апреля 2016 г.
SECON 2016
Anton Kochkov
• Москва, Россия
• Хобби - реверс инжиниринг, языки и путешествия
• Участник R2 crew и евангелист radare2
• Security Code Ltd.
1
Boris Ryutin
• Санкт-Петербург, Россия
• Реверсер, blizzard фан
• Участник R0 crew (reverse4you) и евангелист radare2
• Автор журнала “Хакер”
• Digital Security
2
Краткий обзор radare2
Что такое radare2
• radare1 начат в 2006, radare2 в 2009
• Поддерживает много архитектур, OS, файловых форматов, etc
• 10 встроенных утилит
• CLI и Visual (TUI) режимы, GUI (bokken), WebUI
• 149 контрибьюторов со всего мира
• Участие в программе GSoC и проведение своей RSoC
3
Установка
• Правило 1: Всегда использовать версию из git!1
• Или использовать виртуальную машину (radare:radare /
root:radare)
• git clone http://github.com/radare/radare2 && cd radare2
&& ./sys/install.sh
• Для Windows лучше всего работает с Msys2 или ConEmu
1До выхода версии 1.0
4
Утилиты
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
5
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
6
Утилиты: rax2
rax2 — конвертер и калькулятор
$ rax2 10
0xa
$ rax2 33 0x41 0101b
0x21 65 0x5
$ rax2 -s 4142434445
ABCDE
$ rax2 0x5*101b+5
30
7
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
8
Утилиты: rabin2
rabin2 — извлечение информации из бинарных файлов
$ rabin2 -e
Entrypoints
$ rabin2 -i
Shows imports
$ rabin2 -zz
Shows strings
$ rabin2 -g
Show all possible information
9
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
10
Утилиты: rasm2
rasm2 — ассемблер и дизассемблер
$ rasm2 -a x86 -b 32 ’mov eax, 33’
ассемблирование
$ rasm2 -d 9090
дизассемблирование
$ rasm2 -L
вывести список загруженных плагинов
$ rasm2 -a x86 -b 32 ’mov eax, 33’ -C
Вывести в формате C-массива
11
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
12
Утилиты: radiff2
radiff2 — утилита для бинарного сравнения
$ radiff2 original patched
Сравнение кода
$ radiff2 -C original patched
Сравнение с использованием graphdiff алгоритма
$ radiff2 -g main -a x86 -b32 original patched
Сравнение с генерацией графа функции
13
Утилиты: radiff2 — пример с генерацией графа
/bin/true /bin/false
14
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
15
Утилиты: rafind2
rafind2 — утилита поиска и редктирования бинарной информации
$ rafind2 -X -s passwd dump.bin
Поиск строки “passwd”
16
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
17
Утилиты: rahash2
rahash2 — утилита поблочного хэширования и шифрования
$ rahash2 -a all binary.exe
Отобразить хэши файла во всех алгоритмах
$ rahash2 -B -b 512 -a md5
Вычислить md5 для блоков в 512 байт
$ rahash2 -B -b 512 -a entropy
Вычислить энтропию для блоков в 512 байт
$ echo -n "admin" | rahash2 -a md5 -s "
Вычислить md5 для строки “admin”
18
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
19
Командная строка
1 команда <—>1 назначение
Для запоминания команд важно помнить:
1. Каждый символ в команде имеет своё значение (w = write, p =
print)
2. Большинство команд представляют собой аббревиатуры pdf = p
<->print d <->disassemble f <->function
3. Каждая команда имеет короткую помощь: cmd?, например
pdf?,?, ???, ???, ?$?, ?@?
20
Команда # - хэш и скрипты
1. Откроем файл в radare2 radare2 file.exe
2. Распечатать короткую помощь: #? Usage: #algo <size>@ addr
3. Вывести список поддерживаемых алгоритмов ##
4. Расчет SHA1 #sha1
5. Расчет SHA1 с начала #sha1 @ 0
6. Расчет с размером блока равным размеру файла #sha1 $s @ 0x0
Аналог вызова rahash2 -a sha1 file.exe
21
Флаги
• Флаги используются для соответствия offset - имя флага: f?.
• Добавить функцию af+ (требует afb+)
• f. name @ offset добавить “локальный” флаг
• R2 работает с данными по-блочно. Изменить размер блока
можно командой ‘b’.
22
Команда ’i’ — общая информация
1. Получить короткую справку по команде i?
2. Аналог rabin2
3. izj для показа строк в секциях данных в виде JSON
4. Дополнительные команды: ˜, ls, {}, @, . . .
23
Radare2 — использование команды pf
Небольшое демо
24
Radare2 - работа с типами командами t*
Небольшое демо
25
Radare2 — основные команды CLI режима
1. r2 -A или r2 затем aaa : анализ
2. s : перейти по адресу/смещению
3. pdf : вывести дизасм функции
4. af? : анализировать функцию
5. ax? : анализировать XREF
6. /? : поиск
7. ps? : вывод строк
8. C? : работа с комментариями
9. w? : запись данных
26
Radare2 — визуальный режим
Главные команды
1. V? : помощь по визуальному режиму
2. p/P : переключение между режимами
3. перемещение стрелками/hjkl
4. o : перейти по смещению
5. e : r2configurator
6. v : список функций
7. _ : HUD
8. V : ASCII граф
9. 0-9 : перейти по ссылке (функции)
10. u : вернуться назад (seek undo)
27
ASCII граф
28
Radare2 - разбор простого x86 malware
Небольшое демо
29
Radare2 - разбор простого ARM malware
Небольшое демо
30
Radare2 — Отладка
Radare2 — Отладка
1. radare2 -d
2. переключиться в визуальный режим отладки: Vpp
3. горячие клавиши похожи на OllyDBG/IDApro
31
Утилиты
• rax2
• rabin2
• rasm2
• radiff2
• rafind2
• rahash2
• radare2
• r2pm
• rarun2/ragg2/ragg2-cc
32
R2PM
R2PM — radare2 package manager
1. r2pm -s (вывести список доступных плагинов)
2. r2pm -i retdec
33
Виды отладки
• Локальная (нативная) отладка (r2 -d)
• Удаленная с помощью r2 agent (протокол rap://)
• Удаленная отладка по протоколу GDB
• Удаленная отладка по протоколу WinDBG
34
Режим “телескопирования”
• r2 может
показывать
ссылки в
регистрах или
стеке
• очень удобно
для
динамической
отладки
• разрешает
символы,
флаги, строки,
etc.
• drr (регистры)
pxr N @ esp/rsp
(стек) 35
Команды отладчика
• d? - справка по командам
• db addr/flag - установка breakpoint
• dc[u] debug, continue [until]
• visual mode "?"c для курсора, b для breakpoints
• Останавливается на entry, не мэйн, "dcu entry0"перед стартом
анализа.
36
Отладочные “профили”
• r2 -de dbg.profile=file.rr2 exec.elf
• или r2 -R file.rr2 exec.elf
• установать среду выполнения, переназначение stdin/out
• удобны для быстрой репродукции среды выполнения
37
Протокол GDB
Запустить gdbserver где-нибудь
И подсоединить r2 к нему:
• r2 -D gdb gdb://99.44.23.50:4589
38
Протокол GDB в Wine
Winedbg позволяет запускать Windows программы
Режим отладки при этом включает встроенный gdbserver:
• winedbg –gdb –no-start malware.exe
• r2 -a x86 -b 32 -D gdb gdb://localhost:44840
39
WinDBG
r2 может подсоединяться к WinDBG/KD2
Например, для отладки ядра Windows через последовательный порт
(VM):
• bcdedit /debug on
• bcdedit /dbgsettings serial debugport:1 baudrate:115200
И подсоединимся с помощью r2:
• r2 -a x86 -b 32 -D wind windbg:///tmp/windbg.pipe
На данный момент проверена работа с QEMU и VirtualBox
2r2windbg.
40
Скриптование
The t command — types management
1. Get Usage on the command t?3
2. to to load the types from the C header file
3. tl link type to the memory, tf shows it like the pf
4. add j to get the output in the json format
3Radare2 types command (2014).
41
Searching GUIDs
1. We need r2pipe (python) for that #?4
2. . command to load the pipe script
3. >. search_guids.py
4. this script using the EFI guids list from the snarez’s repo5
4R2pipe API (2014).
5ida-efiutils.
42
Документация
• Website: http://rada.re/
• Blog: http://radare.today
• Book: http://radare.gitbooks.io/radare2book/content
• Cheatsheet: https://github.com/pwntester/cheatsheets/
blob/master/radare2.md
43
References
Список литературы I
Список литературы
R2pipe API (2014).
Radare2 types command (2014).
44

More Related Content

What's hot

Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3. Mikhail Shcherbakov
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++Mikhail Shcherbakov
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutinescorehard_by
 
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠ CoreHa...
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠  CoreHa...Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠  CoreHa...
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠ CoreHa...corehard_by
 
Когда в C# не хватает C++ . Часть 2.
Когда в C# не хватает C++. Часть 2.Когда в C# не хватает C++. Часть 2.
Когда в C# не хватает C++ . Часть 2.Mikhail Shcherbakov
 
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...Platonov Sergey
 
Стратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleСтратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleIlya Lapitan
 
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решенияДмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решенияFProg
 
SSL/TLS: история уязвимостей
SSL/TLS: история уязвимостейSSL/TLS: история уязвимостей
SSL/TLS: история уязвимостейPositive Hack Days
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кодаAndrey Karpov
 
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияГригорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияSergey Platonov
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Ontico
 
Как за час сделать недельную работу
Как за час сделать недельную работуКак за час сделать недельную работу
Как за час сделать недельную работуcorehard_by
 
Командная строка Unix
Командная строка UnixКомандная строка Unix
Командная строка UnixYandex
 
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Minsk Linux User Group
 
Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.Alexandr Nox
 

What's hot (20)

Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3.
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
 
C++ exceptions
C++ exceptionsC++ exceptions
C++ exceptions
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutines
 
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠ CoreHa...
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠  CoreHa...Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠  CoreHa...
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠ CoreHa...
 
Когда в C# не хватает C++ . Часть 2.
Когда в C# не хватает C++. Часть 2.Когда в C# не хватает C++. Часть 2.
Когда в C# не хватает C++ . Часть 2.
 
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
Как мы уменьшили количество ошибок в Unreal Engine с помощью статического ана...
 
Стратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleСтратегии выполнения тестов в Gradle
Стратегии выполнения тестов в Gradle
 
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решенияДмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
 
SSL/TLS: история уязвимостей
SSL/TLS: история уязвимостейSSL/TLS: история уязвимостей
SSL/TLS: история уязвимостей
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода200 open source проектов спустя: опыт статического анализа исходного кода
200 open source проектов спустя: опыт статического анализа исходного кода
 
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияГригорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизация
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
 
Как за час сделать недельную работу
Как за час сделать недельную работуКак за час сделать недельную работу
Как за час сделать недельную работу
 
Командная строка Unix
Командная строка UnixКомандная строка Unix
Командная строка Unix
 
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех
 
Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.Недостатки Linux API с точки зрения разработчика веб-сервера.
Недостатки Linux API с точки зрения разработчика веб-сервера.
 

Similar to SECON'2016. Кочков Антон, Рютин Борис, Radare2 - от A до Z

AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON
 
DevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииDevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииAlexey Vakhov
 
DirectX12 Graphics and Performance
DirectX12 Graphics and PerformanceDirectX12 Graphics and Performance
DirectX12 Graphics and PerformanceDevGAMM Conference
 
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений Mail.ru Group
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхVasil Remeniuk
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMTech Talks @NSU
 
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019corehard_by
 
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETMicro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETDev2Dev
 
Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting   Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting Yandex
 
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Ontico
 
Итак, оно тормозит
Итак, оно тормозитИтак, оно тормозит
Итак, оно тормозитVsevolod Polyakov
 
Перехват беспроводных гаджетов — от квадрокоптеров до мышек
Перехват беспроводных гаджетов — от квадрокоптеров до мышекПерехват беспроводных гаджетов — от квадрокоптеров до мышек
Перехват беспроводных гаджетов — от квадрокоптеров до мышекPositive Hack Days
 
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduceRoman Brovko
 
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...Rais Charipov
 
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Ontico
 

Similar to SECON'2016. Кочков Антон, Рютин Борис, Radare2 - от A до Z (20)

AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
 
DevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииDevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компании
 
DirectX12 Graphics and Performance
DirectX12 Graphics and PerformanceDirectX12 Graphics and Performance
DirectX12 Graphics and Performance
 
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
 
Отладка в Python: 2016 edition
Отладка в Python: 2016 editionОтладка в Python: 2016 edition
Отладка в Python: 2016 edition
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
 
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NETMicro orm для жизни. Кожевников Дмитрий D2D Just.NET
Micro orm для жизни. Кожевников Дмитрий D2D Just.NET
 
CUDA Best Practices (2-3)
CUDA Best Practices (2-3)CUDA Best Practices (2-3)
CUDA Best Practices (2-3)
 
Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting   Сергей Еланцев - Troubleshooting
Сергей Еланцев - Troubleshooting
 
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
 
directx
directxdirectx
directx
 
Итак, оно тормозит
Итак, оно тормозитИтак, оно тормозит
Итак, оно тормозит
 
Перехват беспроводных гаджетов — от квадрокоптеров до мышек
Перехват беспроводных гаджетов — от квадрокоптеров до мышекПерехват беспроводных гаджетов — от квадрокоптеров до мышек
Перехват беспроводных гаджетов — от квадрокоптеров до мышек
 
Enter: legacy code
Enter: legacy codeEnter: legacy code
Enter: legacy code
 
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
 
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
 
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)
 

More from SECON

SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
 SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем? SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?SECON
 
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя ВнедрятьSECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя ВнедрятьSECON
 
SECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в productionSECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в productionSECON
 
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON
 
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON
 
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компанийSECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компанийSECON
 
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...SECON
 
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленкеSECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленкеSECON
 
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON
 
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?SECON
 
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...SECON
 
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...SECON
 
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...SECON
 
SECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практикеSECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практикеSECON
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON
 
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON
 
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обученияSECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обученияSECON
 
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетологаSECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетологаSECON
 
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателяSECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателяSECON
 
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.SECON
 

More from SECON (20)

SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
 SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем? SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
 
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя ВнедрятьSECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
 
SECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в productionSECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в production
 
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
 
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
 
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компанийSECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
 
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
 
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленкеSECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
 
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
 
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
 
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
 
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
 
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
 
SECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практикеSECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практике
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#
 
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
 
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обученияSECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
 
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетологаSECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
 
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателяSECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
 
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
 

Recently uploaded (9)

CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 

SECON'2016. Кочков Антон, Рютин Борис, Radare2 - от A до Z

  • 1. Radare2 - от A до Z Radare2 воркшоп (4 часа) Anton Kochkov (@akochkov), Boris Ryutin (@dukebarman) 18 апреля 2016 г. SECON 2016
  • 2. Anton Kochkov • Москва, Россия • Хобби - реверс инжиниринг, языки и путешествия • Участник R2 crew и евангелист radare2 • Security Code Ltd. 1
  • 3. Boris Ryutin • Санкт-Петербург, Россия • Реверсер, blizzard фан • Участник R0 crew (reverse4you) и евангелист radare2 • Автор журнала “Хакер” • Digital Security 2
  • 5. Что такое radare2 • radare1 начат в 2006, radare2 в 2009 • Поддерживает много архитектур, OS, файловых форматов, etc • 10 встроенных утилит • CLI и Visual (TUI) режимы, GUI (bokken), WebUI • 149 контрибьюторов со всего мира • Участие в программе GSoC и проведение своей RSoC 3
  • 6. Установка • Правило 1: Всегда использовать версию из git!1 • Или использовать виртуальную машину (radare:radare / root:radare) • git clone http://github.com/radare/radare2 && cd radare2 && ./sys/install.sh • Для Windows лучше всего работает с Msys2 или ConEmu 1До выхода версии 1.0 4
  • 8. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 5
  • 9. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 6
  • 10. Утилиты: rax2 rax2 — конвертер и калькулятор $ rax2 10 0xa $ rax2 33 0x41 0101b 0x21 65 0x5 $ rax2 -s 4142434445 ABCDE $ rax2 0x5*101b+5 30 7
  • 11. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 8
  • 12. Утилиты: rabin2 rabin2 — извлечение информации из бинарных файлов $ rabin2 -e Entrypoints $ rabin2 -i Shows imports $ rabin2 -zz Shows strings $ rabin2 -g Show all possible information 9
  • 13. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 10
  • 14. Утилиты: rasm2 rasm2 — ассемблер и дизассемблер $ rasm2 -a x86 -b 32 ’mov eax, 33’ ассемблирование $ rasm2 -d 9090 дизассемблирование $ rasm2 -L вывести список загруженных плагинов $ rasm2 -a x86 -b 32 ’mov eax, 33’ -C Вывести в формате C-массива 11
  • 15. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 12
  • 16. Утилиты: radiff2 radiff2 — утилита для бинарного сравнения $ radiff2 original patched Сравнение кода $ radiff2 -C original patched Сравнение с использованием graphdiff алгоритма $ radiff2 -g main -a x86 -b32 original patched Сравнение с генерацией графа функции 13
  • 17. Утилиты: radiff2 — пример с генерацией графа /bin/true /bin/false 14
  • 18. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 15
  • 19. Утилиты: rafind2 rafind2 — утилита поиска и редктирования бинарной информации $ rafind2 -X -s passwd dump.bin Поиск строки “passwd” 16
  • 20. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 17
  • 21. Утилиты: rahash2 rahash2 — утилита поблочного хэширования и шифрования $ rahash2 -a all binary.exe Отобразить хэши файла во всех алгоритмах $ rahash2 -B -b 512 -a md5 Вычислить md5 для блоков в 512 байт $ rahash2 -B -b 512 -a entropy Вычислить энтропию для блоков в 512 байт $ echo -n "admin" | rahash2 -a md5 -s " Вычислить md5 для строки “admin” 18
  • 22. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 19
  • 24. 1 команда <—>1 назначение Для запоминания команд важно помнить: 1. Каждый символ в команде имеет своё значение (w = write, p = print) 2. Большинство команд представляют собой аббревиатуры pdf = p <->print d <->disassemble f <->function 3. Каждая команда имеет короткую помощь: cmd?, например pdf?,?, ???, ???, ?$?, ?@? 20
  • 25. Команда # - хэш и скрипты 1. Откроем файл в radare2 radare2 file.exe 2. Распечатать короткую помощь: #? Usage: #algo <size>@ addr 3. Вывести список поддерживаемых алгоритмов ## 4. Расчет SHA1 #sha1 5. Расчет SHA1 с начала #sha1 @ 0 6. Расчет с размером блока равным размеру файла #sha1 $s @ 0x0 Аналог вызова rahash2 -a sha1 file.exe 21
  • 26. Флаги • Флаги используются для соответствия offset - имя флага: f?. • Добавить функцию af+ (требует afb+) • f. name @ offset добавить “локальный” флаг • R2 работает с данными по-блочно. Изменить размер блока можно командой ‘b’. 22
  • 27. Команда ’i’ — общая информация 1. Получить короткую справку по команде i? 2. Аналог rabin2 3. izj для показа строк в секциях данных в виде JSON 4. Дополнительные команды: ˜, ls, {}, @, . . . 23
  • 28. Radare2 — использование команды pf Небольшое демо 24
  • 29. Radare2 - работа с типами командами t* Небольшое демо 25
  • 30. Radare2 — основные команды CLI режима 1. r2 -A или r2 затем aaa : анализ 2. s : перейти по адресу/смещению 3. pdf : вывести дизасм функции 4. af? : анализировать функцию 5. ax? : анализировать XREF 6. /? : поиск 7. ps? : вывод строк 8. C? : работа с комментариями 9. w? : запись данных 26
  • 32. Главные команды 1. V? : помощь по визуальному режиму 2. p/P : переключение между режимами 3. перемещение стрелками/hjkl 4. o : перейти по смещению 5. e : r2configurator 6. v : список функций 7. _ : HUD 8. V : ASCII граф 9. 0-9 : перейти по ссылке (функции) 10. u : вернуться назад (seek undo) 27
  • 34. Radare2 - разбор простого x86 malware Небольшое демо 29
  • 35. Radare2 - разбор простого ARM malware Небольшое демо 30
  • 37. Radare2 — Отладка 1. radare2 -d 2. переключиться в визуальный режим отладки: Vpp 3. горячие клавиши похожи на OllyDBG/IDApro 31
  • 38. Утилиты • rax2 • rabin2 • rasm2 • radiff2 • rafind2 • rahash2 • radare2 • r2pm • rarun2/ragg2/ragg2-cc 32
  • 39. R2PM R2PM — radare2 package manager 1. r2pm -s (вывести список доступных плагинов) 2. r2pm -i retdec 33
  • 40. Виды отладки • Локальная (нативная) отладка (r2 -d) • Удаленная с помощью r2 agent (протокол rap://) • Удаленная отладка по протоколу GDB • Удаленная отладка по протоколу WinDBG 34
  • 41. Режим “телескопирования” • r2 может показывать ссылки в регистрах или стеке • очень удобно для динамической отладки • разрешает символы, флаги, строки, etc. • drr (регистры) pxr N @ esp/rsp (стек) 35
  • 42. Команды отладчика • d? - справка по командам • db addr/flag - установка breakpoint • dc[u] debug, continue [until] • visual mode "?"c для курсора, b для breakpoints • Останавливается на entry, не мэйн, "dcu entry0"перед стартом анализа. 36
  • 43. Отладочные “профили” • r2 -de dbg.profile=file.rr2 exec.elf • или r2 -R file.rr2 exec.elf • установать среду выполнения, переназначение stdin/out • удобны для быстрой репродукции среды выполнения 37
  • 44. Протокол GDB Запустить gdbserver где-нибудь И подсоединить r2 к нему: • r2 -D gdb gdb://99.44.23.50:4589 38
  • 45. Протокол GDB в Wine Winedbg позволяет запускать Windows программы Режим отладки при этом включает встроенный gdbserver: • winedbg –gdb –no-start malware.exe • r2 -a x86 -b 32 -D gdb gdb://localhost:44840 39
  • 46. WinDBG r2 может подсоединяться к WinDBG/KD2 Например, для отладки ядра Windows через последовательный порт (VM): • bcdedit /debug on • bcdedit /dbgsettings serial debugport:1 baudrate:115200 И подсоединимся с помощью r2: • r2 -a x86 -b 32 -D wind windbg:///tmp/windbg.pipe На данный момент проверена работа с QEMU и VirtualBox 2r2windbg. 40
  • 48. The t command — types management 1. Get Usage on the command t?3 2. to to load the types from the C header file 3. tl link type to the memory, tf shows it like the pf 4. add j to get the output in the json format 3Radare2 types command (2014). 41
  • 49. Searching GUIDs 1. We need r2pipe (python) for that #?4 2. . command to load the pipe script 3. >. search_guids.py 4. this script using the EFI guids list from the snarez’s repo5 4R2pipe API (2014). 5ida-efiutils. 42
  • 50. Документация • Website: http://rada.re/ • Blog: http://radare.today • Book: http://radare.gitbooks.io/radare2book/content • Cheatsheet: https://github.com/pwntester/cheatsheets/ blob/master/radare2.md 43
  • 52. Список литературы I Список литературы R2pipe API (2014). Radare2 types command (2014). 44