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,它运行良好且许可证限制较少。
使用 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的插件keypatch
关于ida pro的插件keypatch 来源 https://blog.csdn.net/fjh658/article/details/52268907 关于ida pro的牛逼插件keypatch ...
- C++ Qt 框架静态编译 操作记录
谁愿意写个程式出来之后还附带一堆DLL,尤其是名字如此明显的名字. 于是在网上看了看,是需要下载源代码然后进行编译的,但是看了看别人说的编译时间,长达几个小时,瞬间就感觉不想做了.因为我还需要抓紧时间 ...
- IDA Pro使用技巧
DA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window). IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头 ...
- IDA Pro Disassembler 6.8.15.413 (Windows, Linux, Mac)
IDA: What's new in 6.8 Highlights This is mainly a maintenance release, so our focus was on fixing b ...
- IDA Pro基本简介
IDA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window). IDA图形视图会有执行流,Yes箭头默认为绿色,No箭 ...
- IDA Pro使用技巧及大杂烩
IDA Pro使用技巧及大杂烩 IDA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window). IDA图形视图会有执行 ...
- Qt5的插件机制(1)--Qt 框架中的插件载入机制概述
概述 Qt的源代码中通过 Q<pluginType>Factory.Q<pluginType>Plugin 和 Q<pluginType> 这三个类实现了Qt的插件 ...
- IDA Pro - 使用IDA Pro逆向C++程序
原文地址:Reversing C++ programs with IDA pro and Hex-rays 简介 在假期期间,我花了很多时间学习和逆向用C++写的程序.这是我第一次学习C++逆向,并且 ...
- IDA PRO:庆祝成立创新 30 周年
今天,IDA 已经三十岁了.为了纪念周年纪念,我们将描述史诗旅程的开始和主要里程碑. 背景 在 1990 年代初期,DOS 是最流行的 PC 操作系统,主要是 8086,偶尔有 80286(80386 ...
随机推荐
- 为何使用thrift-rpc与http的选择
在工作中偶然看到公司旧架构在loaclserver中使用的是thrift,遂记录一下 thrif作为一种rpc框架 接口描述语言和二进制通信协议,至于为何使用thrift 其问题本质是为何在已有htt ...
- 文件包含之包含了Linux文件描述符
0x00 原理 文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符. 翻译成人话- 可以认为是指向文件的一个指针,如果有文件 ...
- SystemVerilog数组(一)
- scrapy奇技淫巧1
Request传递值到callback回调函数 def parse(self, response): request = scrapy.Request('http://www.example.com/ ...
- 【补档_STM32单片机】脉搏波采集显示硬件设计
一.脉搏波简介 脉搏一般情况下指的都是动脉脉搏.每分钟的脉搏次数称为脉率,正常情况下与心率是一致的.心脏的一次收缩和舒张成为一个心动周期.在每个心动周期内,心室的收缩和舒张会引起脉内压力的周期性波 ...
- [LeetCode] 231. 2 的幂
位运算 231. 2 的幂 ``` class Solution { public boolean isPowerOfTwo(int n) { int cnt = 0; while (n>0) ...
- 在命令行模式下查看Python帮助文档---dir、help、__doc__
在命令行模式下查看Python帮助文档---dir.help.__doc__ 1.dir函数式可以查看对象的属性,使用方法很简单,举str类型为例,在Python命令窗口输入 dir(str) 即 ...
- Jmeter- 笔记10 - 在GUI生成html报告
步骤1.在聚合报告,浏览一个存放jtl文件的路径,输入不存在的jtl文件,确定后会出现如下图弹窗,不用理会,关掉 步骤2.运行脚本 步骤3.打开工具 -> Generate HTML repor ...
- Maven execution terminated abnormally (exit code 1) 完美解决
https://www.pianshen.com/article/1477185745/ 找到本地仓库这个包中, 删掉,重新导入,,完美解决
- 用java实现图书管理系统。
图书管理系统. 一.项目设计到的知识 1.MVC设计模式思想(分包) >项目分包 >MVC简单介绍 2.GUI(图形化界面) 3.JDBC连接MySql数据库 4.I/O流 5.面向对象思 ...