
binsync v5.15.4
Плагин для реверс-инжиниринга, обеспечивающий совместную работу между декомпиляторами и построенный на git.
BinSync
BinSync — это инструмент для совместной работы с декомпиляторами, построенный на системе управления версиями Git, который обеспечивает детальную совместную работу при реверс-инжиниринге независимо от декомпилятора. BinSync создан mahaloz, командой angr и исследовательской лабораторией SEFCOM. Его развитию также во многом способствовало использование хакерской командой Shellphish.
Все хорошие декомпиляторы имеют общие объекты, называемые артефактами реверс-инжиниринга (Reverse Engineering Artifacts, REA). Эти артефакты лежат в основе механизма синхронизации BinSync. Поддерживаются следующие REA:
- Заголовки функций (символ, аргументы, тип)
- Переменные стека (символ, тип)
- Структуры
- Перечисления
- Комментарии
Примечание: во всех типах поддерживаются пользовательские типы, такие как структуры.
Присоединяйтесь к нашему Discord-серверу ниже для дополнительной онлайн-помощи:
Быстрый старт
Для всех установок лучше всего использовать наш двухэтапный установщик на Python:
pip3 install binsync && binsync --install
BinSync также доступен в менеджере плагинов Binary Ninja.
Если вы планируете использовать BS с Ghidra, запустите его в режиме PyGhidra.
Если вы планируете использовать дополнительные функции BS, например ChatGPT User, установите пакет так: pip3 install binsync[extras]; при этом будут установлены дополнительные пакеты для поддержки.
Полную информацию об установке читайте в нашей документации по быстрому старту.
Для разработчиков: установите пакет в режиме редактирования (-e) и убедитесь, что pip>=23.0.0.
Поддерживаемые платформы
- IDA Pro: >= 8.4 (если у вас более старая версия, используйте BinSync v4.10.1)
- Binary Ninja: >= 2.4
- angr-management: >= 9.0
- Ghidra: >= 12.0 (режим PyGhidra)
Все версии требуют наличия в системе Python >= 3.10 и Git. Поддержка Ghidra всё ещё находится на раннем этапе, поэтому ожидайте только минимальных функций, таких как синхронизация имён артефактов и комментарии.
Прогресс поддержки декомпиляторов
Хотя мы поддерживаем декомпиляторы из предыдущего раздела, не каждый декомпилятор поддерживается на одном и том же уровне синхронизации. Чтобы понять разницу между поддержкой артефактов, pull, push и авто-push, прочитайте наше введение по использованию декомпиляторов.
IDA Pro
| Операции | Заголовки функций | Переменные стека | Глобальные переменные | Структуры | Перечисления | Комментарии |
|---|---|---|---|---|---|---|
| Символы | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Типы | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pull | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Авто Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Binary Ninja
| Операции | Заголовки функций | Переменные стека | Глобальные переменные | Структуры | Перечисления | Комментарии |
|---|---|---|---|---|---|---|
| Символы | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Типы | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pull | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Авто Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Ghidra
| Операции | Заголовки функций | Переменные стека | Глобальные переменные | Структуры | Перечисления | Комментарии |
|---|---|---|---|---|---|---|
| Символы | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Типы | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pull | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Push | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Авто Push | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
angr-management
| Операции | Заголовки функций | Переменные стека | Глобальные переменные | Структуры | Перечисления | Комментарии |
|---|---|---|---|---|---|---|
| Символы | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Типы | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Pull | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Push | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Авто Push | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
Скриптинг
Для написания скриптов обратитесь к DecLib, который позволяет выполнять весь лифтинг и манипуляции с данными на Python.
Спонсоры
BinSync и связанные с ним проекты были бы невозможны без спонсорской поддержки. В произвольном порядке мы хотели бы поблагодарить все организации, которые ранее или в настоящее время спонсируют один из многочисленных проектов BinSync.