Бинарный ниндзя
Оригинальный автор(ы) | Джордан Винс, Расти Вагнер, Питер ЛаФосс |
---|---|
Разработчик(и) | Вектор 35 Инк [1] |
Первоначальный выпуск | 31 июля 2016 г [2] |
Стабильная версия | 4.1.5747
/ 17 июля 2024 г [2] |
Написано в | С++ , C , Питон , Ржавчина |
Операционная система | Microsoft Windows , Mac OS X и Linux |
Доступно в | Английский |
Тип | Реверс-инжиниринг , Дизассемблер , Декомпилятор |
Лицензия | Собственный |
Веб-сайт | https://binary.ninja |
Binary Ninja — это платформа обратного проектирования, разработанная Vector 35 Inc. [1] Он может дизассемблировать двоичный файл и отображать дизассемблирование в линейном или графическом виде. Он выполняет автоматизированный углубленный анализ кода, генерируя информацию, которая помогает проанализировать двоичный файл. Он переносит инструкции на промежуточные языки и в конечном итоге генерирует декомпилированный код.
Binary Ninja поддерживает различные архитектуры ЦП и форматы двоичных исполняемых файлов. Он работает на Windows, macOS и Linux. У него также есть бесплатная облачная и собственная версия. [3]
История
[ редактировать ]Binary Ninja изначально был внутренним инструментом. [4] для команды CTF . Позже разработчики решили создать Vector 35 Inc и превратить Binary Ninja в коммерческий продукт. Разработка началась в 2015 году, а первая общедоступная версия была выпущена в июле 2016 года.
Коммерческий продукт не имеет общего кода. [4] с внутренним инструментом. Последний теперь находится в открытом доступе. [5] под лицензией GPLv2 .
Особенности и использование
[ редактировать ]Пользовательский интерфейс
[ редактировать ]Пользовательский интерфейс Binary Ninja построен с использованием Qt . Его основной пользовательский интерфейс включает список символов, окно перекрестных ссылок, линейное/графическое представление разборки, мини-график, а также карту объектов. Он также может отображать шестнадцатеричный редактор, список строк и представление сортировки.
Binary Ninja генерирует обширные аннотации в пользовательском интерфейсе для облегчения бинарного анализа.
Binary Ninja также поддерживает пользовательские темы. [6]
API и плагины
[ редактировать ]Binary Ninja предлагает API, доступ к которому можно получить через Python , C++ или Rust . [7] API имеет открытый исходный код [8] по лицензии MIT . Он может взаимодействовать с большинством функций Binary Ninja, например, с пользовательским интерфейсом, анализом, IL (см. ниже) и т. д. Его можно использовать для добавления поддержки новой архитектуры или автоматизации задач.
Плагины [9] можно сделать через API для улучшения Binary Ninja. Vector35 поддерживает коллекцию официальных плагинов. [10] в то время как сообщество создало множество плагинов сообщества. [11]
Некоторые известные плагины — это отладчик, [12] фирменный комплект, [13] и т. д.
Бинарные промежуточные языки ниндзя (BNIL)
[ редактировать ]Binary Ninja предлагает три промежуточных языка (IL).
- IL низкого уровня (LLIL) [14] представляет собой подробный перевод базовых инструкций из различных архитектур в единое представление.
- IL среднего уровня (MLIL) [15] создает переменные с типами и удаляет понятие стека.
- IL высокого уровня (HLIL, также называемый декомпилятором) предлагает представление кода, аналогичное исходному коду C.
Основной анализ
[ редактировать ]Binary Ninja автоматически выполняет различные анализы двоичных файлов. Некоторые примеры:
- обнаружение функции
- перекрестные ссылки на код и данные
- вывод типа
- постоянное распространение
- анализ набора ценностей
- разрешение таблицы перехода
Бинарное редактирование и исправление, компилятор шеллкода (SCC)
[ редактировать ]Binary Ninja предлагает функции бинарного исправления и редактирования. Он может собрать инструкцию на текущей строке, перевернуть условный переход и т. д. Изменения и обновленный анализ немедленно отражаются в пользовательском интерфейсе.
Binary Ninja можно использовать как обычный бинарный редактор. Он поддерживает несколько часто используемых преобразований и алгоритмов шифрования.
Компилятор шелл-кода позволяет пользователю компилировать и вставлять код с помощью синтаксиса C.
Поддерживаемые архитектуры и форматы исполняемых файлов.
[ редактировать ]Архитектуры
[ редактировать ]Binary Ninja официально поддерживает следующие архитектуры ЦП:
- х86 32-бит
- х86 64-бит
- ARMv7
- Большой палец2
- ARMv8
- PowerPC
- МИПС
- РИСК-V
- 6502
- наноМИПС
- Трикор
Поддержка этих архитектур различается, подробности можно найти в официальном FAQ. [16]
Плагины, созданные сообществом, добавляют поддержку различных других архитектур. [17]
Форматы исполняемых файлов
[ редактировать ]Binary Ninja официально поддерживает следующие форматы исполняемых файлов:
- ПЭ/КОФФ
- ЭЛЬФ
- Мачо
- Бинарный файл .NES (через плагин)
- Необработанный двоичный файл
- md1rom
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б «Вектор 35 > дом» . вектор35.com . Проверено 26 июля 2020 г.
- ^ Перейти обратно: а б Inc, Vector 35. «Бинарный ниндзя > Бинарный ниндзя > журнал изменений» . двоичный.ниндзя . Проверено 26 июля 2020 г.
{{cite web}}
:|last=
имеет общее имя ( справка ) CS1 maint: числовые имена: список авторов ( ссылка ) - ^ «Попробуй бинарного ниндзя» . двоичный.ниндзя . Проверено 2 марта 2024 г.
- ^ Перейти обратно: а б «Бинарный ниндзя > Часто задаваемые вопросы» . faq.binary.ninja . Проверено 26 июля 2020 г.
- ^ Vector35/deprecated-binaryninja-python , VECTOR 35, 12 июля 2020 г. , получено 26 июля 2020 г.
- ^ Vector35/community-themes , VECTOR 35, 09 июля 2020 г. , получено 26 июля 2020 г.
- ^ «Использование API Binary Ninja — Пользовательская документация Binary Ninja» . docs.binary.ninja . Проверено 17 марта 2023 г.
- ^ Vector35/binaryninja-api , VECTOR 35, 22 июля 2020 г. , получено 26 июля 2020 г.
- ^ «Использование и написание плагинов — пользовательская документация Binary Ninja» . docs.binary.ninja . Проверено 26 июля 2020 г.
- ^ Vector35/official-plugins , VECTOR 35, 16 июля 2020 г. , получено 26 июля 2020 г.
- ^ «Использование и написание плагинов — пользовательская документация Binary Ninja» . docs.binary.ninja . Проверено 26 июля 2020 г.
- ^ Vector35/отладчик , VECTOR 35, 25 июля 2020 г. , получено 26 июля 2020 г.
- ^ Vector35/sigkit , VECTOR 35, 14 июля 2020 г. , получено 26 июля 2020 г.
- ^ «Руководство BNIL: LLIL — Пользовательская документация Binary Ninja» . docs.binary.ninja . Проверено 26 июля 2020 г.
- ^ «Руководство BNIL: MLIL — пользовательская документация Binary Ninja» . docs.binary.ninja . Проверено 26 июля 2020 г.
- ^ «Бинарный ниндзя > Часто задаваемые вопросы» . двоичный.ниндзя . Проверено 25 июля 2024 г.
- ^ Vector35/community-plugins , VECTOR 35, 22 июля 2020 г. , получено 26 июля 2020 г.