Binary Ninja es una plataforma de ingeniería inversa desarrollada por Vector 35 Inc. [1] Puede desmontar un binario y mostrar el desmontaje en vistas lineales o gráficas. Realiza un análisis automatizado en profundidad del código, generando información que ayuda a analizar un binario. Lleva las instrucciones a lenguajes intermedios y, finalmente, genera el código descompilado.
Binary Ninja admite varias arquitecturas de CPU y formatos ejecutables binarios. Se ejecuta en Windows, macOS y Linux. También tiene una versión nativa y en la nube de uso gratuito. [3]
Binary Ninja era originalmente una herramienta interna [4] para un equipo CTF . Más tarde, los desarrolladores decidieron formar Vector 35 Inc y convertir Binary Ninja en un producto comercial. El desarrollo comenzó en 2015 y la primera versión pública se lanzó en julio de 2016.
El producto comercial no comparte código [4] con la herramienta interna. Este último ahora es de código abierto [5] bajo GPLv2 .
La interfaz de usuario de Binary Ninja está construida con Qt . Su interfaz de usuario principal comprende una lista de símbolos, una ventana de referencia cruzada, una vista lineal/gráfica del desmontaje, un minigráfico y un mapa de características. También puede mostrar un editor hexadecimal, un listado de cadenas y una vista de clasificación.
Binary Ninja genera extensas anotaciones en la interfaz de usuario para ayudar en el análisis binario.
Binary Ninja también admite temas definidos por el usuario. [6]
Binary Ninja ofrece una API a la que se puede acceder a través de Python , C++ o Rust . [7] La API es de código abierto [8] bajo licencia MIT . Puede interactuar con la mayoría de las funciones de Binary Ninja, por ejemplo, interfaz de usuario, análisis, IL (ver más abajo), etc. Puede usarse para agregar soporte para nueva arquitectura o automatizar tareas.
Se pueden crear complementos [9] a través de la API para mejorar Binary Ninja. Vector35 mantiene una colección de complementos oficiales, [10] mientras que la comunidad ha creado numerosos complementos comunitarios. [11]
Algunos complementos notables son el depurador, [12] el kit de firma, [13] etc.
Binary Ninja ofrece tres lenguajes intermedios (IL).
Binary Ninja realiza automáticamente varios análisis del binario. Algunos ejemplos son:
Binary Ninja ofrece funciones de edición y parcheo binario. Puede ensamblar una instrucción en la línea actual, realizar un salto condicional, etc. Las ediciones y los análisis actualizados se reflejan inmediatamente en la interfaz de usuario.
Binary Ninja se puede utilizar como un editor binario general. Admite varias transformaciones y algoritmos de cifrado de uso común.
El compilador Shellcode permite al usuario compilar e insertar código mediante la sintaxis C.
Binary Ninja admite oficialmente las siguientes arquitecturas de CPU:
El soporte para estas arquitecturas varía y los detalles se pueden encontrar en las preguntas frecuentes oficiales. [dieciséis]
Los complementos creados por la comunidad agregan soporte para otras arquitecturas. [17]
Binary Ninja admite oficialmente los siguientes formatos de archivos ejecutables:
{{cite web}}
: |last=
tiene nombre genérico ( ayuda )Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )