IDA's Lumina feature, reimplemented for Binary Ninja
CURRENTLY IN ACTIVE DEVELOPMENT - NOTHING IS FULLY STABLE YET
-
Compatible with existing public Lumina databases (both official1 and unofficial), including TLS support
-
Signatures largely match IDA's implementation, enabling cross-diassembler collaboration (~85% accuracy, including discrepancies in analysis between disassemblers)
-
Supported Architectures:
- x86 / x86_64
- ARM / AArch64
and more to come!
-
Supported metadata types:
- function names
- comments
- instruction level comments
- function level comments
- variable comments (unsupported by Binary Ninja)
- function type info (WIP - currently parsing only)
- calling conventions
- generic conventions
- custom conventions (parsed, but unsupported by Binary Ninja)
- spoiled registers
- arbitrary argument locations/storage
- return type
- parameter types
- stack frame info
- variable names
- variable offsets and sizes
- variable types
- calling conventions
-
All type info are supported, except structs and enums due to limitations of the current Lumina specification
- Lumen for most of the RPC protocol reversing
- Synactiv's blog for a high level overview on how Lumina works
Maple Bacon maintainers:
- @nneonneo for metadata reversing and implementation
- @desp for signature generation and tinfo reversing, and stitching everything together
Footnotes
-
Provided that you have specified a valid IDA license file as the key file in the settings, along the valid certificate to connect to
lumina.hex-rays.com
, as obtainable from official sources. ↩