lumina-binja
lumina-binja copied to clipboard
IDA's Lumina feature, reimplemented for Binary Ninja
lumina-binja
IDA's Lumina feature, reimplemented for Binary Ninja
CURRENTLY IN ACTIVE DEVELOPMENT - NOTHING IS FULLY STABLE YET
Features
-
Compatible with existing public Lumina databases (both official[^1] 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:
- [x] x86 / x86_64
- [ ] ARM / AArch64
and more to come!
-
Supported metadata types:
- [x] function names
- [x] comments
- [x] instruction level comments
- [x] function level comments
- [ ] variable comments (unsupported by Binary Ninja)
- [x] function type info (WIP - currently parsing only)
- [x] calling conventions
- [x] generic conventions
- [ ] custom conventions (parsed, but unsupported by Binary Ninja)
- [ ] spoiled registers
- [ ] arbitrary argument locations/storage
- [x] return type
- [x] parameter types
- [x] stack frame info
- [x] variable names
- [x] variable offsets and sizes
- [x] variable types
- [x] calling conventions
-
All type info are supported, except structs and enums due to limitations of the current Lumina specification
Credits
- 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
[^1]: 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.