In a previous blog post we mentioned that it is possible to use IDA Pro with PySide (Python + Qt) after applying some minor code patches to PySide.
For convenience purposes, we precompiled the PySide libraries that work with IDA Pro 6.0+ and Python 2.6/2.7. Below is a brief explanation on how to install and use those binaries.
Edit: 2012-06-29 updated links for IDA 6.3/Python 2.7
Installing on Windows
Please download the package matching your IDA and Python version and unpack it to Path_to_Python (e.g. C:\Python27).
Installing on Linux or OS X
Please download the appropriate package and unpack it:
sudo tar xvfz os_package_pyside_python27_package.tgz -C /
Building PySide from the sources
In order to build PySide for IDA Pro you need to use the modified PySide source files. Please note that those modifications only apply to the PySide version indicated. To use newer versions of PySide merge those files with the new files.
Testing the installation
To test if PySide is installed properly, you can try running the following script which creates a tree widget and displays all imports and exports from the opened database:
Mixing C++ and Python
With PySide and IDAPython it is possible to write powerful scripts with a rich UI. Now the question is “how to write a UI in Python (with PySide) and still be able to call C/C++ functions?”
To achieve this, you need to expose your C/C++ functions to Python. It can be done with Ctypes, SIP, SWIG, Shiboken, other Python binding generators or with simple manual wrapping as demonstrated here.
On the Lynxline website you can find two interesting blog posts demonstrating how to mix C++ and Python using SIP or Shiboken.
Happy coding! 🙂