IDA 的 PyQt5 中的 QtNetwork

逆向工程 艾达 蟒蛇 Python
2021-06-22 23:57:33

我有兴趣为我的 IDAPython 插件编写一个网络组件,QtNetwork 看起来非常有吸引力,但是它不能从 IDAPython shell 中包含。

有没有一种简单的方法来添加该功能?

谢谢。

1个回答

我从 hex-rays 得到的官方回应说,如果这些库对大多数用户没有帮助,他们宁愿避免运送太多与 IDA 捆绑在一起的第三方库。

他们建议自己编译必要的 Qt 库并将生成的包与插件捆绑在一起,但不幸的是,这将是维护的噩梦(为每个 IDA 版本执行这些包)。

虽然使用 QNetwork 会有一些优势(比如干净的异步操作),但我最初的目标是易于维护,这可以通过使用像请求这样的 python 库来更好地实现。这大概就是我要走的方向。

完整的回应是这样的:

我们不这样做,因为缺点会远远超过好处。也就是说,我们将不得不发布更多的库(没有理由停止使用 QtNetwork),这可能小于我们用户需要的 1%,并且为了这么小的好处而增加这么多的膨胀,对我们来说并没有真正意义。

话虽如此,我们提供说明 + 补丁,以从原始 Qt 5.4.1 源中自己重新构建它:- http://www.hexblog.com/?p=969

对于那些你应该获得一个新的 Qt 版本,它对应于我们正在发布的版本,......加上那些我们没有发布的库(当然还有 PDB。)

他们还继续解释了为什么 Python/PyQt/QtWidgets.pyd 确实出人意料地被发布了:

一个有效的问题是:为什么要发布 python/PyQt5/QtWidgets.pyd 呢?..好吧,真的没有理由。这是个错误。

并通过透露即将推出的新次要版本来结束:

PS:我们距离新版本(IDA 6.95)还有几天时间,它将随 Qt 5.6.0 一起发布,这是一个长期版本(即 3 年支持 + 错误修复。)

请注意将附加 IDA-QT 库与插件捆绑在一起的复杂性:

除非您真的必须专门为 IDA 6.9(以及 Qt 5.4.1)构建,否则最好等待新版本发布,以免重复执行?(我将写一篇类似的博客文章,其中包含 IDA 6.95 的配置选项 + 补丁)