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 测试代码:

 

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 PySide"))
		layout.addWidget(
			QtGui.QLabel("Hello form IdaPython"))
		self.parent.setLayout(layout)
	def OnClose(self,form):
		pass
plg = MyPluginFormClass()
plg.Show("PySide Hello world")

效果图:

 

☆版权☆

* 网站名称:obaby@mars
* 网址:https://oba.by/
* 个性:https://oba.by/
* 本文标题: 《Ida PySide》
* 本文链接:https://zhongxiaojie.com/2012/03/3819
* 短链接:https://oba.by/?p=3819
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


You may also like

2 comments

  1. Level 1
    Google Chrome 21 Google Chrome 21 Windows XP Windows XP cn湖北省武汉市江夏区 电信

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

    1. 公主 Queen 
      Opera IBIS 12 Opera IBIS 12 Windows XP Windows XP cn福建省厦门市 电信

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

发表回复

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