Binary Ninja

редактировать
Платформа обратного проектирования, разработанная Vector 35 Inc
Binary Ninja
Первоначальный автор (ы) Джордан Винс, Расти Вагнер, Питер ЛаФосс
Разработчик (и) Vector 35 Inc
Первоначальный выпуск31 июля 2016 г.; 4 года назад (31.07.2016)
Стабильный выпуск 2.1.2263 / 10 июля 2020 г.; 3 месяца назад (10.07.2020)
Написано наC ++, C, Python
Операционная система Microsoft Windows, Mac OS X и Linux
Доступен наанглийском языке
Тип Обратное проектирование, Дизассемблер, Декомпилятор
Лицензия Собственный
Веб-сайтhttps://binary.ninja/

Binary Ninja - это платформа обратного проектирования, разработанная Vector 35 Inc. Она может дизассемблировать двоичный файл и отображать разборку в линейном или графическом виде. Он выполняет автоматический глубокий анализ кода, генерируя информацию, которая помогает анализировать двоичный файл. Он переводит инструкции на промежуточные языки и в конечном итоге генерирует декомпилированный код.

Binary Ninja поддерживает различные архитектуры ЦП и двоичные исполняемые форматы. Он работает в Windows, macOS и Linux. У него также есть бесплатная облачная версия.

Содержание
  • 1 История
  • 2 Функции и использование
    • 2.1 Пользовательский интерфейс
    • 2.2 API и плагины
    • 2.3 Бинарные промежуточные языки Ninja ( BNIL)
    • 2.4 Анализ ядра
    • 2.5 Двоичное редактирование и исправление, компилятор шелл-кода (SCC)
  • 3 Поддерживаемые архитектуры и форматы исполняемых файлов
    • 3.1 Архитектуры
    • 3.2 Форматы исполняемых файлов
  • 4 См. Также
  • 5 Источники
История

Binary Ninja изначально был внутренним инструментом команды CTF. Позже разработчики решили создать Vector 35 Inc и превратить Binary Ninja в коммерческий продукт. Разработка началась в 2015 году, а первая общедоступная версия была выпущена в июле 2016 года.

Коммерческий продукт не имеет общего кода с внутренним инструментом. Последний теперь имеет открытый исходный код под GPLv2.

Возможности и использование

Пользовательский интерфейс

Пользовательский интерфейс Binary Ninja построен на основе Qt (программное обеспечение). Его основной пользовательский интерфейс включает в себя список символов, окно перекрестных ссылок, линейное / графическое представление разборки, мини-график, а также карту функций. Он также может отображать шестнадцатеричный редактор, список строк и представление сортировки.

Binary Ninja генерирует обширные аннотации в пользовательском интерфейсе для помощи в двоичном анализе.

Binary Ninja также поддерживает пользовательские темы.

API и плагины

Binary Ninja предлагает API, к которому можно получить доступ через Python или С. API предоставляется с открытым исходным кодом под лицензией MIT. Он может взаимодействовать с большинством функций Binary Ninja, например, пользовательским интерфейсом, анализом, IL (см. Ниже) и т. Д. Его можно использовать для добавления поддержки новой архитектуры или автоматизации задач.

Плагины могут быть созданы через API для улучшения Binary Ninja. Vector35 поддерживает коллекцию официальных плагинов, в то время как сообщество создало множество плагинов сообщества.

Некоторые известные плагины - это отладчик, набор подписей и т. Д.

промежуточные языки Binary Ninja (BNIL)

Binary Ninja предлагает три промежуточных языка (IL).

  • IL нижнего уровня (LLIL) - это подробный подъем базовых инструкций из различных архитектур к унифицированному представлению.
  • IL среднего уровня (MLIL) создает переменные с типами и устраняет понятие
  • IL высокого уровня (HLIL, также называемый декомпилятором) предлагает представление кода, аналогичное исходному коду C.

Анализ ядра

Binary Ninja выполняет автоматически различный анализ на двоичном. Вот некоторые примеры:

  • обнаружение функции
  • перекрестные ссылки для кода и данных
  • вывод типа
  • распространение константы
  • анализ набора значений
  • разрешение таблицы переходов

Двоичное редактирование и исправление, компилятор шелл-кода (SCC)

Binary Ninja предлагает удобный способ редактирования и исправления двоичного файла. Он может собрать инструкцию в текущей строке, перевернуть условный переход и т. Д. Изменения и обновленный анализ немедленно отражаются в пользовательском интерфейсе.

Кроме того, Binary Ninja можно использовать как обычный двоичный редактор. Он поддерживает несколько часто используемых преобразований и алгоритмов шифрования.

Компилятор шелл-кода позволяет пользователю компилировать и вставлять код с помощью синтаксиса C.

Поддерживаемые архитектуры и форматы исполняемых файлов

Архитектуры

Binary Ninja официально поддерживает следующие архитектуры ЦП:

  • x86 32-бит
  • x86 64- бит
  • ARMv7
  • Thumb2
  • ARMv8
  • PowerPC
  • MIPS
  • 6502

Поддержка этих архитектуры различаются, подробности можно найти в официальном FAQ.

Кроме того, сообщество также создало несколько архитектурных плагинов, которые поддерживают различные другие архитектуры.

Форматы исполняемых файлов

Binary Ninja официально поддерживает следующие форматы исполняемых файлов:

  • PE/COFF
  • ELF
  • Mach-O
  • .NES двоичный (через плагин)
  • Исходный двоичный код
См. Также
Ссылки
Последняя правка сделана 2021-05-12 06:24:48
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте