Skip to content

IDA's Lumina feature, reimplemented for Binary Ninja

License

Notifications You must be signed in to change notification settings

ubcctf/lumina-binja

Repository files navigation

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 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
  • 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

Footnotes

  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.