
angr v9.3.0
Мощная и удобная платформа для анализа бинарных файлов!
angr
angr — это платформенно-независимый фреймворк для анализа бинарных файлов. Он создан лабораторией компьютерной безопасности Калифорнийского университета в Санта-Барбаре, SEFCOM в Университете штата Аризона, их командой CTF, Shellphish, сообществом открытого кода и @rhelmot.
Ссылки на проект
Домашняя страница: https://angr.io
Репозиторий проекта: https://github.com/angr/angr
Документация: https://docs.angr.io
API документация: https://docs.angr.io/en/latest/api.html
Что такое angr?
angr — это набор библиотек Python 3, которые позволяют загрузить бинарный файл и делать с ним множество интересных вещей:
- Дизассемблирование и поднятие до промежуточного представления
- Инструментирование программ
- Символическое выполнение
- Анализ потока управления
- Анализ зависимостей данных
- Анализ множества значений (VSA)
- Декомпиляция
Самая распространённая операция angr — загрузка бинарного файла: p = angr.Project('/bin/bash'). Если сделать это в улучшенной REPL, например IPython, можно использовать автодополнение по табуляции для просмотра методов, доступных на верхнем уровне, и их строк документации.
Краткая версия «как установить angr»: mkvirtualenv --python=$(which python3) angr && python -m pip install angr.
Пример
angr выполняет много задач по анализу бинарных файлов. Для начала приведём простой пример использования символического выполнения для получения флага в задании CTF.
import angr
project = angr.Project("angr-doc/examples/defcamp_r100/r100", auto_load_libs=False)
@project.hook(0x400844)
def print_flag(state):
print("FLAG SHOULD BE:", state.posix.dumps(0))
project.terminate_execution()
project.execute()
Быстрый старт
- Инструкция по установке
- Документация в формате HTML и исходники в репозитории angr на Github
- Погружение сразу: методы, доступные на верхнем уровне
- Примеры использования angr для решения задач CTF
- Ссылка на API
- Репозиторий awesome-angr