Binární Ninja - Binary Ninja

Binární Ninja
Původní autořiJordan Wiens, Rusty Wagner, Peter LaFosse
VývojářiVector 35 Inc.[1]
První vydání31. července 2016; Před 4 lety (2016-07-31)[2]
Stabilní uvolnění
2.1.2263 / 10. července 2020; Před 4 měsíci (2020-07-10)[2]
NapsánoC ++, C, Krajta
Operační systémMicrosoft Windows, Mac OS X, a Linux
K dispozici vAngličtina
TypReverzní inženýrství, Demontážník, Dekompilátor
LicenceProprietární
webová stránkahttps://binary.ninja/

Binární Ninja je platforma pro reverzní inženýrství vyvinutá společností Vector 35 Inc.[1] Může demontovat binární soubor a zobrazit demontáž v lineárním nebo grafickém zobrazení. Provádí automatizovanou hloubkovou analýzu kódu a generuje informace, které pomáhají analyzovat binární soubory. Zvedne instrukce do intermediálních jazyků a nakonec vygeneruje dekompilovaný kód.

Binární Ninja podporuje různé architektury CPU a binární spustitelné formáty. Funguje na Windows, macOS a Linux. Má také bezplatnou cloudovou verzi.[3]

Dějiny

Binární Ninja byl původně interní nástroj[4] pro CTF tým. Vývojáři se později rozhodli založit Vector 35 Inc a vyvinout Binary Ninja do komerčního produktu. Vývoj začal v roce 2015 a první veřejná verze byla vydána v červenci 2016.

Komerční produkt nesdílí kód[4] s interním nástrojem. Druhá z nich je nyní otevřená[5] pod GPLv2.

Vlastnosti a použití

Uživatelské rozhraní

Uživatelské rozhraní Binary Ninja je postaveno na vrcholu Qt (software). Jeho hlavní uživatelské rozhraní zahrnuje seznam symbolů, okno křížových odkazů, lineární / grafický pohled na demontáž, minigraf a mapu funkcí. Může také zobrazit hexadecimální editor, výpis řetězců a zobrazení třídění.

Binární ninja generuje v uživatelském rozhraní rozsáhlé anotace, které pomáhají binární analýze.

Binární Ninja také podporuje uživatelsky definovaná témata.[6]

API a pluginy

Binary Ninja nabízí API[7] ke kterému lze přistupovat prostřednictvím Krajta nebo C. API je open-source[8] pod Licence MIT. Může komunikovat s většinou funkcí binárního ninja, např. Uživatelské rozhraní, analýza, IL (viz níže) atd. Lze jej použít k přidání podpory pro novou architekturu nebo k automatizaci úkolů.

Pluginy[9] lze provést pomocí API k vylepšení Binární ninja. Vector35 udržuje sbírku oficiálních pluginů,[10] zatímco komunita vytvořila řadu komunitních pluginů.[11]

Některé pozoruhodné pluginy jsou debugger,[12] podpisová sada,[13] atd.

Binární ninja meziprodukty (BNIL)

Binary Ninja nabízí tři mezilehlé jazyky (ILs).

  • Nízkoúrovňový IL (LLIL)[14] je podrobné zvednutí podkladových pokynů od různých architektur k jednotnému znázornění.
  • Střední úroveň IL (MLIL)[15] vytváří proměnné s typy a odstraňuje představu o zásobníku.
  • IL-úroveň na vysoké úrovni (HLIL, nazývaná také dekompilátor) nabízí reprezentaci kódu podobnou zdrojovému kódu C.

Základní analýza

Binární Ninja automaticky provádí různé analýzy binárních souborů. Některé příklady jsou:

  • detekce funkcí
  • křížové odkazy na kód a data
  • odvození typu
  • konstantní šíření
  • analýza sady hodnot
  • rozlišení skokové tabulky

Binární úpravy a opravy, kompilátor shellcode (SCC)

Binary Ninja nabízí pohodlný způsob úpravy a opravy binárního souboru. Může sestavit instrukci na aktuálním řádku, převrátit podmíněný skok atd. Úpravy a aktualizovaná analýza se okamžitě projeví v uživatelském rozhraní.

Kromě toho lze Binary Ninja použít jako obecný binární editor. Podporuje několik běžně používaných transformací a šifrovacích algoritmů.

Kompilátor shellcode umožňuje uživateli kompilovat a vložit kód pomocí syntaxe C.

Podporované architektury a formáty spustitelných souborů

Architektury

Binary Ninja oficiálně podporuje následující architektury CPU:

  • x86 32-bit
  • x86 64-bit
  • ARMv7
  • Palec2
  • ARMv8
  • PowerPC
  • MIPS
  • 6502

Podpora těchto architektur se liší a podrobnosti najdete v oficiálních FAQ.[16]

Kromě toho komunita také vytvořila několik doplňků architektury[17] které podporují různé jiné architektury.

Spustitelné formáty souborů

Binární Ninja oficiálně podporuje následující formáty spustitelných souborů:

  • PE / COFF
  • ELF
  • Mach-O
  • .NES binární (prostřednictvím pluginu)
  • Raw binární

Viz také

Reference

  1. ^ A b „Vector 35> home“. vector35.com. Citováno 2020-07-26.
  2. ^ A b Inc, vektor 35. „Binary Ninja> Binary Ninja> changelog“. binary.ninja. Citováno 2020-07-26.
  3. ^ „Binární mrak ninja“. cloud.binary.ninja. Citováno 2020-07-26.
  4. ^ A b fa.binary.ninja https://faq.binary.ninja/en/wasnt-this-an-open-source-project-at-first-6r43DzhbkvAzXSM6S. Citováno 2020-07-26. Chybějící nebo prázdný | název = (Pomoc)
  5. ^ Vector35 / zastaralý-binaryninja-python, VECTOR 35, 2020-07-12, vyvoláno 2020-07-26
  6. ^ Vector35 / komunitní témata, VECTOR 35, 2020-07-09, vyvoláno 2020-07-26
  7. ^ „Dokumentace API Binary Ninja Python API - Dokumentace API Binary Ninja API v2.1“. api.binary.ninja. Citováno 2020-07-26.
  8. ^ Vector35 / binaryninja-api, VECTOR 35, 2020-07-22, vyvoláno 2020-07-26
  9. ^ „Používání a psaní pluginů - binární dokumentace uživatele Ninja“. docs.binary.ninja. Citováno 2020-07-26.
  10. ^ Vector35 / Official-Plugins, VECTOR 35, 2020-07-16, vyvoláno 2020-07-26
  11. ^ „Používání a psaní pluginů - binární dokumentace uživatele Ninja“. docs.binary.ninja. Citováno 2020-07-26.
  12. ^ Vector35 / debugger, VECTOR 35, 2020-07-25, vyvoláno 2020-07-26
  13. ^ Vector35 / sigkit, VECTOR 35, 2020-07-14, vyvoláno 2020-07-26
  14. ^ „Průvodce BNIL: LLIL - binární dokumentace uživatele Ninja“. docs.binary.ninja. Citováno 2020-07-26.
  15. ^ „Průvodce BNIL: MLIL - binární dokumentace uživatele Ninja“. docs.binary.ninja. Citováno 2020-07-26.
  16. ^ fa.binary.ninja https://faq.binary.ninja/en/what-cpu-architectures-are-supported-g8KfmMrgnM8LxGrCc. Citováno 2020-07-26. Chybějící nebo prázdný | název = (Pomoc)
  17. ^ Vector35 / komunitní pluginy, VECTOR 35, 2020-07-22, vyvoláno 2020-07-26