Ida PySide

PySide这个鸟东西听起来很牛b的样子,但是折腾起来很蛋疼。其实折腾这个东西主要还是看了hexblog上的一篇文章之后才想折腾的。看别人的文章感觉很简单,但是自己折腾就是折腾死也搞不定。后来又仔细看了下文章才发现原来ida中用的那个pyside是一个修改版本,并不是直接从源码编译过来的。并且提供了一个源码的patch包(http://hex-rays.com/idapro/freefiles/pyside_patch_20110328.zip),但是这个包只是针对 03/28/2011发布的版本。

其实上面的还不是关键,关键是那个源码在Windows下编译各种错误,包括使用官方提供的python脚本也无法正常编译。各种cmake和nmake错误,而网上关于在Windows下编译pyside的教程又少的可怜,如果谁成功编译了,还望不吝赐教。

整体来说,引入pyside之后ida的脚本功能可以说是提升到了一个非常高的高度,可以有Gui的交互界面。当然,单纯用python和ida的一些api也是可以绘制图形界面的,但是这个功能要强大的多。

最后没有办法使用官方提供的补丁,终于可以让ida正常加载了,但是在python中使用的时候却会出现加载失败的错误。也就是说这个鸟东西要么在ida中可以用,要么在python中可以用。如果想一起正常使用,那根本不可能。简直是shit啊。最终插件效果图。

测试代码可以从hexblog获得。

Hello world 测试代码:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from idaapi import PluginForm
from PySide import QtGui, QtCore
class	MyPluginFormClass(PluginForm):
	def OnCreate(self,form):
		self.parent = self.FormToPySideWidget(form)
		self.PopulateForm()
	def PopulateForm(self):
		layout = QtGui.QVBoxLayout()
		layout.addWidget(
			QtGui.QLabel("Hello from <font color=red>PySide</font>"))
		layout.addWidget(
			QtGui.QLabel("Hello form <font color=green>IdaPython</font>"))
		self.parent.setLayout(layout)
	def OnClose(self,form):
		pass
plg = MyPluginFormClass()
plg.Show("PySide Hello world")

效果图:

 

原创文章,转载请注明: 转载自 obaby@mars

本文标题: 《Ida PySide》

本文链接地址: http://h4ck.org.cn/2012/03/ida-pyside/

You may also like

2条评论

  1. 我也遇到了这个问题,请问官方提供的补丁在哪可以下到,我只在官方网上找到了那个patch包,但死活还是没弄出来,还望作者再讲详细点

    1. 官网上的那个包是需要独立编译的,否则是不能用的。你可以从看雪的这个帖子下载编译好的。http://bbs.pediy.com/showthread.php?p=1108219

发表评论

电子邮件地址不会被公开。 必填项已用*标注