When writing and using IDA plugins, configurations tend to be quite a mess. With each plugin having it's own:
- Color scheme
- Hotkeys
- Configuration file format
- Configuration location
(And that's when you have a seprtate configuration, and not some variables in the plugin itself).
In the current situation, each developer works as he sees fit, and the users usually end up with the unmodified defaults,
as well as a large number of .some-plugin-confuguration
files.
To solve this, we need to create standards for plugin configuration, as well as C and Python libraries that follow them.
- Configurations should be easily exportable and modifiable (a YAML file might be a good solution)
- Should allow user/project based heirarcy:
- Global configuration, stored in the IDA directory
- User configuration, in the user directory
- Per-directory config, stored in the same directory as the
.idb
itself - Per-IDB config, stored as net-nodes in the IDB itself.
- Should allow global-defaults, and per-plugin modifications (like default color schemes for highlighting).
If you feel this is relevant to you, please comment so that we can improve on those ideas before going ahead an implementing them.
Regarding the 1024 bytes limit. I find it a bit problematic. The first plugin I wanted to use ida-settings is my plugin-loader. The loader currently holds a list of paths for all the plugins it loads. Paths are naturally long, so the data is easily over 1024 bytes. Any solution that resolves that on the plugin side is bound to be messy.
Any thoughts on that? I am leaning towards letting a JSON dump spread over several nodes.