Бинарный ниндзя - Binary Ninja

Бинарный ниндзя
Оригинальный автор (ы)Джордан Винс, Расти Вагнер, Питер ЛаФосс
Разработчики)Вектор 35 Inc[1]
изначальный выпуск31 июля 2016 г.; 4 года назад (2016-07-31)[2]
Стабильный выпуск
2.1.2263 / 10 июля 2020 г.; 4 месяца назад (2020-07-10)[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 двоичный файл (через плагин)
  • Необработанный двоичный файл

Смотрите также

Рекомендации

  1. ^ а б "Вектор 35> дом". vector35.com. Получено 2020-07-26.
  2. ^ а б Inc, Вектор 35. "Binary Ninja> Binary Ninja> список изменений". binary.ninja. Получено 2020-07-26.
  3. ^ «Бинарное облако ниндзя». cloud.binary.ninja. Получено 2020-07-26.
  4. ^ а б faq.binary.ninja https://faq.binary.ninja/en/wasnt-this-an-open-source-project-at-first-6r43DzhbkvAzXSM6S. Получено 2020-07-26. Отсутствует или пусто | название = (помощь)
  5. ^ Vector35 / устаревший-binaryninja-python, ВЕКТОР 35, 2020-07-12, получено 2020-07-26
  6. ^ Vector35 / community-themes, ВЕКТОР 35, 2020-07-09, получено 2020-07-26
  7. ^ «Документация по Binary Ninja Python API - Документация Binary Ninja API v2.1». api.binary.ninja. Получено 2020-07-26.
  8. ^ Vector35 / binaryninja-api, ВЕКТОР 35, 2020-07-22, получено 2020-07-26
  9. ^ «Использование и написание плагинов - документация пользователя Binary Ninja». docs.binary.ninja. Получено 2020-07-26.
  10. ^ Vector35 / официальные плагины, ВЕКТОР 35, 2020-07-16, получено 2020-07-26
  11. ^ «Использование и написание плагинов - документация пользователя Binary Ninja». docs.binary.ninja. Получено 2020-07-26.
  12. ^ Vector35 / отладчик, ВЕКТОР 35, 2020-07-25, получено 2020-07-26
  13. ^ Vector35 / sigkit, ВЕКТОР 35, 2020-07-14, получено 2020-07-26
  14. ^ "Руководство BNIL: LLIL - Пользовательская документация Binary Ninja". docs.binary.ninja. Получено 2020-07-26.
  15. ^ "Руководство BNIL: MLIL - Пользовательская документация Binary Ninja". docs.binary.ninja. Получено 2020-07-26.
  16. ^ faq.binary.ninja https://faq.binary.ninja/en/what-cpu-architectures-are-supported-g8KfmMrgnM8LxGrCc. Получено 2020-07-26. Отсутствует или пусто | название = (помощь)
  17. ^ Vector35 / сообщества-плагины, ВЕКТОР 35, 2020-07-22, получено 2020-07-26