junron / auto-enum

IDA/Binary Ninja Plugin to automatically identify and set enums for standard functions
MIT License
335 stars 19 forks source link

Auto Enum

IDA/Binary Ninja Plugin to automatically identify and set enums for standard functions

Demo

Linux

https://github.com/junron/auto-enum/assets/26194273/9e43f3ec-0722-4388-951a-b90bec5ab19b

See demo.c for the source code.

Windows

https://github.com/junron/auto-enum/assets/26194273/0c6a0f69-b9c0-42ea-b97b-5848b6f7c3a1

See demo-win.cpp for the source code.

Plugin Installation

Copy plugin/* to your IDA/Binary Ninja Plugin directory. No dependencies required.

TIL patching for IDA

Auto-enum can be integrated directly into the type library (TIL) files, allowing for enum loading without the plugin's installation. However, per-call analysis will only be available if the plugin is installed.

To modify the TIL files, run the following commands in the plugin/enumlib/scripts directory:

# Generate for linux
python3 apply_to_til.py --platform linux --overwrite
# Generate for Windows
python3 apply_to_til.py --platform windows --overwrite

Note that you must have IDA Pro 9 installed, with idalib activated.

As the TIL files installed with IDA will be modified, ensure that you have a backup of the til directory, as well as sufficient permissions to modify files in the IDA installation directory.