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/python.cfg:

// Should the plugin automatically load a 6.95 bw-compatibility layer?
AUTOIMPORT_COMPAT_IDA695 = YES

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:

AUTOIMPORT_COMPAT_IDA695 = NO

in

Then, please see the following guide for porting code to IDA's 7.x API (this porting guide was initially written for the C/C++ SDK users, but it is of great help for IDAPython users as well.)

How to turn the "IDA 6.x" compatibility layer back ON in IDA 7.4

As mentioned above, when IDA 7.4 is released, it will come with the compatibility layer disabled by default.

In order to turn it back on, you will have to put the following:

AUTOIMPORT_COMPAT_IDA695 = YES

in

…but please understand that this is only a temporary measure, and that later IDA releases will remove that compatibility layer.

On a related note…

Please also see this annoucement regarding IDAPython with Python 3