Binární Ninja - Binary Ninja
Původní autoři | Jordan Wiens, Rusty Wagner, Peter LaFosse |
---|---|
Vývojáři | Vector 35 Inc.[1] |
První vydání | 31. července 2016[2] |
Stabilní uvolnění | 2.1.2263 / 10. července 2020[2] |
Napsáno | C ++, C, Krajta |
Operační systém | Microsoft Windows, Mac OS X, a Linux |
K dispozici v | Angličtina |
Typ | Reverzní inženýrství, Demontážník, Dekompilátor |
Licence | Proprietární |
webová stránka | https://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
- ^ A b „Vector 35> home“. vector35.com. Citováno 2020-07-26.
- ^ A b Inc, vektor 35. „Binary Ninja> Binary Ninja> changelog“. binary.ninja. Citováno 2020-07-26.
- ^ „Binární mrak ninja“. cloud.binary.ninja. Citováno 2020-07-26.
- ^ 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) - ^ Vector35 / zastaralý-binaryninja-python, VECTOR 35, 2020-07-12, vyvoláno 2020-07-26
- ^ Vector35 / komunitní témata, VECTOR 35, 2020-07-09, vyvoláno 2020-07-26
- ^ „Dokumentace API Binary Ninja Python API - Dokumentace API Binary Ninja API v2.1“. api.binary.ninja. Citováno 2020-07-26.
- ^ Vector35 / binaryninja-api, VECTOR 35, 2020-07-22, vyvoláno 2020-07-26
- ^ „Používání a psaní pluginů - binární dokumentace uživatele Ninja“. docs.binary.ninja. Citováno 2020-07-26.
- ^ Vector35 / Official-Plugins, VECTOR 35, 2020-07-16, vyvoláno 2020-07-26
- ^ „Používání a psaní pluginů - binární dokumentace uživatele Ninja“. docs.binary.ninja. Citováno 2020-07-26.
- ^ Vector35 / debugger, VECTOR 35, 2020-07-25, vyvoláno 2020-07-26
- ^ Vector35 / sigkit, VECTOR 35, 2020-07-14, vyvoláno 2020-07-26
- ^ „Průvodce BNIL: LLIL - binární dokumentace uživatele Ninja“. docs.binary.ninja. Citováno 2020-07-26.
- ^ „Průvodce BNIL: MLIL - binární dokumentace uživatele Ninja“. docs.binary.ninja. Citováno 2020-07-26.
- ^ 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) - ^ Vector35 / komunitní pluginy, VECTOR 35, 2020-07-22, vyvoláno 2020-07-26