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

作者:SmartBear技术交流 时间:2022-12-05 05:07:55 

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

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

背景

在早期版本的 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,它运行良好且许可证限制较少。

使用 IDAPython 和 PySide 编写 Hello world UI
为了从 IDAPython 编写 UI,您必须继承 idaapi.PluginForm类。这个类本质上包装了 create_tform()/display_tform() 并提供了一些辅助函数(例如将 QWidget* 传递给 Python,PySide 可以将其用作父小部件)。
一个示例代码将使事情更清楚: 运行此脚本后,我们得到了这个表单: 当然,该表单可以像任何其他内置表单一样停靠。虽然这个例子非常简单,但用户现在可以创建更加精细和复杂的 UI。毫不奇怪,但现在使用脚本(IDAPython)的插件开发变得比以前更有趣。

ipq_hello_code

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

来源:https://www.cnblogs.com/SmartBear360/archive/2021/07/13/15006177.html

标签:IDA,Pro,Qt,跨平台
0
投稿

猜你喜欢

  • VUE3中实现拖拽与缩放自定义看板vue-grid-layout详解

    2023-07-02 16:28:59
  • Javascript 注册事件浅析

    2024-04-28 10:20:22
  • 升级到mysql-connector-java8.0.27的注意事项

    2024-01-22 20:52:08
  • 分享最新Sublime Text4 Build 4107注册码(密钥)汉化及完美永久破解方法

    2022-12-17 10:24:53
  • python目标检测SSD算法训练部分源码详解

    2021-08-01 02:23:15
  • python 巡检脚本的项目实践

    2023-10-06 11:54:15
  • Python ldap实现登录实例代码

    2021-03-12 21:38:55
  • 总结SQL执行进展优化方法

    2024-01-13 22:38:44
  • python中xlwt模块的具体用法

    2023-11-08 07:10:15
  • 在Linux系统上同时监控多个Oracle数据库表空间的方法

    2024-01-20 20:29:29
  • asp金额大小写转换完全无错版

    2007-09-26 09:38:00
  • PyTorch实现图像识别实战指南

    2022-01-08 14:27:24
  • MS SQL Server数据库清理错误日志的方法

    2024-01-12 19:22:00
  • 详解scrapy内置中间件的顺序

    2023-10-22 07:13:38
  • sql2008评估期已过的解决办法及序列号

    2024-01-13 10:32:11
  • Python自动登录126邮箱的方法

    2022-11-19 05:01:17
  • Javascript脚本实现静态网页加密实例代码

    2024-04-19 11:04:30
  • Vite中自制mock服务器(不使用第三方服务)

    2024-04-28 09:27:14
  • oracle下加密存储过程的方法

    2009-02-28 10:50:00
  • asp如何使用MsChart制图工具?

    2010-06-05 12:40:00
  • asp之家 网络编程 m.aspxhome.com