IDA Pro 6.0使用Qt 框架实现了跨平台的UI

IDA Pro 6.0使用Qt 框架实现了跨平台的UI。它的好处是插件编写者还能够直接使用 Qt 开发跨平台 UI。可是编剧呢?
在这篇博文中,咱们将说明如何使用PySide使用IDAPython为 IDA Pro 建立 UI 界面。
ipq_intro

背景
在早期版本的 IDA Pro 中,可使用create_tform() / display_tform() API建立自定义 UI ,但代码是特定于平台的。在 MS Windows 上,程序员接收父窗体的 HWND,而后用自定义控件填充它,而后处理来自自定义 WindowProc() 的窗口消息。
因为以前只有一个 MS Windows UI 存在,用户没法在其余平台上建立复杂的 UI,而且必须使用ADA Pro SDK/表单相关的函数,例如AskUsingForm()。
借助 IDA Pro 6.0,C++ 插件编写者能够直接使用 Qt SDK 开发跨平台 UI。请参考IDA Pro SDK 中的qwindow。
脚本编写者还可使用 Python Qt 绑定来实现相同的结果。程序员

Qt 框架的 Python 绑定
咱们评估了PySide和PyQt,发现这两个绑定在 IDA Pro 6.0 上均可以正常工做(咱们必须使用 –DQT_NAMESPACE=QT 编译它们,而且必须添加一种方法将 QWidget* 从 C++ 传递到 Python)。
虽然 PyQt 更加成熟并被许多用户采用,但咱们选择了 PySide,它运行良好且许可证限制较少。api

使用 IDAPython 和 PySide 编写 Hello world UI
为了从 IDAPython 编写 UI,您必须继承 idaapi.PluginForm类。这个类本质上包装了 create_tform()/display_tform() 并提供了一些辅助函数(例如将 QWidget* 传递给 Python,PySide 能够将其用做父小部件)。
一个示例代码将使事情更清楚: 运行此脚本后,咱们获得了这个表单: 固然,该表单能够像任何其余内置表单同样停靠。虽然这个例子很是简单,但用户如今能够建立更加精细和复杂的 UI。绝不奇怪,但如今使用脚本(IDAPython)的插件开发变得比之前更有趣。
ipq_hello_code

框架

相关文章
相关标签/搜索