Turning off IDA 6.x compatibility in IDAPython
IDA 7.0: ABI/API changes
When we released IDA 7.0 back in November 2017, we switched from i386 (i.e., 32 bits) to x86_64 (i.e., 64-bits) binaries.
That switch completely changed the ABI, causing older C/C++ compiled plugins to not work anymore. We thus decided to take that as an opportunity to do some API cleanup.
Python code, however, would not be affected by ABI changes, which is why, since version 7.0, IDA provides a compatibility layer that lets users run older scripts (mostly) unmodified.
The problem
The IDAPython “IDA 6.x” compatibility layer makes the IDAPython code more complex to maintain, and is often in our way when evolving IDAPython.
We will eventually have to get rid of it.
The road ahead
Since IDA 7.0 up to IDA 7.3, the compatibility layer has been turned ON BY DEFAULT, as you can see in /path/to/ida-install/cfg/idapython.cfg
:
IDA 7.4: “IDA 6.x” compatibility layer OFF by default
In the next release (7.4), IDA will come with the compatibility layer turned OFF BY DEFAULT.
It will still be possible, of course, to turn it back on (keep reading!)
IDA 7.?: “IDA 6.x” compatibility layer removed
In a future release (it’s unclear which one exactly at the moment), IDAPython will come without compatibility layer at all. At that point, it will simply be impossible to turn it back on.
Python coders
If you are writing IDAPython code, we recommend that you turn the compatibility layer OFF now, regardless of whether you are using IDA 7.3, 7.2, 7.1 or 7.0.
You can do so by overriding the configuration directive, in your own configuration file. Simply put the following:
in