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 中,可以使用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
来源:https://www.cnblogs.com/SmartBear360/archive/2021/07/13/15006177.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
十分钟轻松掌握dataframe数据选择
asp常用的SQL命令操作
Tensorflow中使用cpu和gpu有什么区别
![](https://img.aspxhome.com/file/2023/9/82769_0s.png)
Python基于pyCUDA实现GPU加速并行计算功能入门教程
![](https://img.aspxhome.com/file/2023/2/85332_0s.jpg)
Python中使用MELIAE分析程序内存占用实例
jquery AJAX 三个发送状态 posting, error, success
如何从IP获知其所在地?
python实现简单俄罗斯方块
![](https://img.aspxhome.com/file/2023/2/113052_0s.jpg)
Jupyter Notebook添加代码自动补全功能的实现
![](https://img.aspxhome.com/file/2023/5/86435_0s.png)
Python3常见函数range()用法详解
几个javascript显示加载进度条代码
利用python/R语言绘制圣诞树实例代码
![](https://img.aspxhome.com/file/2023/5/93715_0s.png)
基于Pygame中Pygame模块的大战外星人实战
![](https://img.aspxhome.com/file/2023/5/123555_0s.jpg)
Python可视化库之HoloViews的使用教程
![](https://img.aspxhome.com/file/2023/4/117544_0s.jpg)
Python和GO语言实现的消息摘要算法示例
![](https://img.aspxhome.com/file/2023/2/93792_0s.png)
js 玩转正则表达式之语法高亮
详解Python如何巧妙实现数学阶乘n!
![](https://img.aspxhome.com/file/2023/6/59466_0s.png)
使用python对多个txt文件中的数据进行筛选的方法
![](https://img.aspxhome.com/file/2023/5/110545_0s.jpg)
2010 图标设计趋势
![](https://img.aspxhome.com/file/UploadPic/201012/17/01-45s.jpg)
Jmeter通过OS进程取样器调用Python脚本实现参数互传
![](https://img.aspxhome.com/file/2023/8/68958_0s.png)