IDA Broma support (now real).
Parses a Broma file and exports the bindings into a Broma file/imports the bindings into the current IDA project.
- IDA 7.0 or higher
- IDAPython
- Python v3.10.0+ (tested with v3.11.9)
- PyBroma
- If you want to be able to import types:
- IDAClang
- Importing
- Import function names
- Import types (see Importing Types Requirements). If enabled, will do the following:
- Import Broma classes members, virtual functions, etc...
- Import function return types
- Import function arguments types and names
- On Android binaries, fixes IDA completely messing up the arguments of functions for no reason
- Exporting
- Export function addresses for any platform
- Export function return types (if enabled, see BromaIDA Settings)
- Export function arguments' names (if enabled, see BromaIDA Settings)
- Get python, then
git clone https://github.com/CallocGD/PyBroma --recursive
,cd PyBroma
then finallypython .\setup.py install
to install PyBroma (blame CallocGD for breakingpip install https://github.com/CallocGD/PyBroma/archive/refs/heads/main.zip
) - Download the release/zip file
- Copy
BromaIDA.py
and thebroma_ida
folder intoIDA_DIRECTORY/plugins
Ctrl-Shift-B
, or from the Top Bar (Edit -> Plugins -> BromaIDA) to start importing/exporting- Browse and select the Broma file
- Let the script handle the rest and enjoy free/exported bindings
- To import types:
- You must have IDAClang.
Extras.bro
must be in the same directory as the imported Broma file
You no longer need the STL headers for the given binary, as BromaIDA packages them for Android (android32, android64), Mach-O (imac, m1, ios) and Windows.
Can be accessed through the main popup by clicking on the "Settings" button. This replaces the old "ask everything everytime" method.
Here you will find some options you can set, such as importing types, settings default parser parameters, etc...
The options you chose will be saved into a shelf stored in the $HOME/broma_ida
folder.
This section is meant for people who want to contribute.
In the utils
folder, you can find some utilities that can help in contributing.
- Currently has:
tasks.json
: To be put in/BromaIDA/.vscode
, adds 2 tasks for VSCode. "Install Plugin" will copyBromaIDA.py
and thebroma_ida
to theIDA_DIRECTORY/plugins
directory; And "Launch IDA v8.3" which will launch IDA (shocker). Just be sure to replace IDA's directory with your IDA installation directory.
- Special thanks to:
- The IDAPython API: Used for everything.
- CallocGD's PyBroma: Used to parse imported Broma files.
- @sleepyut: Issuing 3 trillion bug reports. Also for suggesting a bunch of features. (they also made BromaBJ)
- AngelDev06: Contributing features.