Бинарный ниндзя - Binary Ninja
Оригинальный автор (ы) | Джордан Винс, Расти Вагнер, Питер ЛаФосс |
---|---|
Разработчики) | Вектор 35 Inc[1] |
изначальный выпуск | 31 июля 2016 г.[2] |
Стабильный выпуск | 2.1.2263 / 10 июля 2020 г.[2] |
Написано в | C ++, C, Python |
Операционная система | Майкрософт Виндоус, Mac OS X, и Linux |
Доступно в | английский |
Тип | Разобрать механизм с целью понять, как это работает, Дизассемблер, Декомпилятор |
Лицензия | Проприетарный |
Интернет сайт | https://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[7] к которому можно получить доступ через Python или же C. 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 официально поддерживает следующие архитектуры ЦП:
- x86 32-разрядный
- x86 64-бит
- ARMv7
- Большой палец2
- ARMv8
- PowerPC
- MIPS
- 6502
Поддержка этих архитектур различается, подробности можно найти в официальном FAQ.[16]
Кроме того, сообщество сделало несколько архитектурных плагинов.[17] которые поддерживают различные другие архитектуры.
Форматы исполняемых файлов
Binary Ninja официально поддерживает следующие форматы исполняемых файлов:
- PE / COFF
- ELF
- Мачо
- .NES двоичный файл (через плагин)
- Необработанный двоичный файл
Смотрите также
Рекомендации
- ^ а б "Вектор 35> дом". vector35.com. Получено 2020-07-26.
- ^ а б Inc, Вектор 35. "Binary Ninja> Binary Ninja> список изменений". binary.ninja. Получено 2020-07-26.
- ^ «Бинарное облако ниндзя». cloud.binary.ninja. Получено 2020-07-26.
- ^ а б faq.binary.ninja https://faq.binary.ninja/en/wasnt-this-an-open-source-project-at-first-6r43DzhbkvAzXSM6S. Получено 2020-07-26. Отсутствует или пусто
| название =
(помощь) - ^ Vector35 / устаревший-binaryninja-python, ВЕКТОР 35, 2020-07-12, получено 2020-07-26
- ^ Vector35 / community-themes, ВЕКТОР 35, 2020-07-09, получено 2020-07-26
- ^ «Документация по Binary Ninja Python API - Документация Binary Ninja API v2.1». api.binary.ninja. Получено 2020-07-26.
- ^ Vector35 / binaryninja-api, ВЕКТОР 35, 2020-07-22, получено 2020-07-26
- ^ «Использование и написание плагинов - документация пользователя Binary Ninja». docs.binary.ninja. Получено 2020-07-26.
- ^ Vector35 / официальные плагины, ВЕКТОР 35, 2020-07-16, получено 2020-07-26
- ^ «Использование и написание плагинов - документация пользователя Binary Ninja». docs.binary.ninja. Получено 2020-07-26.
- ^ Vector35 / отладчик, ВЕКТОР 35, 2020-07-25, получено 2020-07-26
- ^ Vector35 / sigkit, ВЕКТОР 35, 2020-07-14, получено 2020-07-26
- ^ "Руководство BNIL: LLIL - Пользовательская документация Binary Ninja". docs.binary.ninja. Получено 2020-07-26.
- ^ "Руководство BNIL: MLIL - Пользовательская документация Binary Ninja". docs.binary.ninja. Получено 2020-07-26.
- ^ faq.binary.ninja https://faq.binary.ninja/en/what-cpu-architectures-are-supported-g8KfmMrgnM8LxGrCc. Получено 2020-07-26. Отсутствует или пусто
| название =
(помощь) - ^ Vector35 / сообщества-плагины, ВЕКТОР 35, 2020-07-22, получено 2020-07-26