stringtranslate.com

ninja binario

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]

Historia

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 .

Características y uso

Interfaz de usuario

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]

API y complementos

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.

Lenguajes intermedios Binary Ninja (BNIL)

Binary Ninja ofrece tres lenguajes intermedios (IL).

Análisis central

Binary Ninja realiza automáticamente varios análisis del binario. Algunos ejemplos son:

Edición binaria y parches, compilador de shellcode (SCC)

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.

Arquitecturas compatibles y formatos de archivos ejecutables

Arquitecturas

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]

Formatos de archivos ejecutables

Binary Ninja admite oficialmente los siguientes formatos de archivos ejecutables:

Ver también

Referencias

  1. ^ ab "Vector 35 > inicio". vector35.com . Consultado el 26 de julio de 2020 .
  2. ^ ab Inc, Vector 35. "Binary Ninja > Binary Ninja > registro de cambios". binario.ninja . Consultado el 26 de julio de 2020 . {{cite web}}: |last=tiene nombre genérico ( ayuda )Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  3. ^ "Prueba Binary Ninja". binario.ninja . Consultado el 2 de marzo de 2024 .
  4. ^ ab "Binary Ninja > Preguntas frecuentes". preguntas frecuentes.binary.ninja . Consultado el 26 de julio de 2020 .
  5. ^ Vector35 / obsoleto-binaryninja-python, VECTOR 35, 12 de julio de 2020 , consultado el 26 de julio de 2020
  6. ^ Vector35 / temas-comunitarios, VECTOR 35, 9 de julio de 2020 , consultado el 26 de julio de 2020
  7. ^ "Uso de la API de Binary Ninja: documentación del usuario de Binary Ninja". documentos.binario.ninja . Consultado el 17 de marzo de 2023 .
  8. ^ Vector35/binaryninja-api, VECTOR 35, 22 de julio de 2020 , consultado el 26 de julio de 2020
  9. ^ "Uso y escritura de complementos: documentación del usuario de Binary Ninja". documentos.binario.ninja . Consultado el 26 de julio de 2020 .
  10. ^ Vector35 / complementos oficiales, VECTOR 35, 16 de julio de 2020 , consultado el 26 de julio de 2020
  11. ^ "Uso y escritura de complementos: documentación del usuario de Binary Ninja". documentos.binario.ninja . Consultado el 26 de julio de 2020 .
  12. ^ Vector35 / depurador, VECTOR 35, 25 de julio de 2020 , consultado el 26 de julio de 2020
  13. ^ Vector35 / sigkit, VECTOR 35, 14 de julio de 2020 , consultado el 26 de julio de 2020
  14. ^ "Guía BNIL: LLIL - Documentación del usuario de Binary Ninja". documentos.binario.ninja . Consultado el 26 de julio de 2020 .
  15. ^ "Guía BNIL: MLIL - Documentación del usuario de Binary Ninja". documentos.binario.ninja . Consultado el 26 de julio de 2020 .
  16. ^ "Binary Ninja > Preguntas frecuentes". preguntas frecuentes.binary.ninja . Consultado el 26 de julio de 2020 .
  17. ^ Vector35/community-plugins, VECTOR 35, 22 de julio de 2020 , consultado el 26 de julio de 2020