参考看雪作者sonnzy的文章:利用wing ide动态调试ida7 python插件,做了一些完善。 看雪sonnzy的文章:https://bbs.pediy.com/thread-224627.htm 小白一枚,望大牛不要见笑。
0x00 准备工作 (1)安装IDA_Pro_v7.0(勾选安装或自己手动安装python2.7.13-x64)。 (2)安装Wing IDEPro(版本无特殊要求,但要支持python2.7.13-x64)。 (3)将Wing IDE Pro安装目录下的wingdbstub.py复制到X:\xxxxxx\IDA7.0\python目录中。 (4)把本地Windows的"C:\Users\用户名\AppData\Roaming\Wing IDE x\ "目录下的wingdebugpw文件复制X:\xxxxxx\IDA7.0\python目录中,与wingdbstub.py在一个目录。这个文件是密码文件,WingIDE为了安全性而搞的,必需。 (5)python2.7.13-x64安装目录下,在X:\xxx\Python27-x64\Lib\site-packages目录中新建文本文件xxxx.pth(名称任意),该文本文件中的内容为: [Bash shell] 纯文本查看 复制代码 X:\xxxxxx\IDA7.0\python
X:\xxxxxx\IDA7.0\python\lib\python2.7\lib-dynload\ida_32
X:\xxxxxx\IDA7.0\python\lib\python2.7\lib-dynload\ida_64 把IDA自己的Python库文件连到Python2.7中,这样Wing_IDE就能找到IDAPython的库文件了。
0x01 开始测试
1.1 测试用例
在X:\xxxxxx\IDA 7.0\plugins 新建sample_debuggee.py,文件内容如下:
[Python] 纯文本查看 复制代码 [/font][/size]
[size=2][font=Times New Roman]
[/font][/size]
[size=2][font=Times New Roman]# filename: sample_debuggee.py[/font][/size]
[font=Times New Roman]
import idaapi
import ida_idaapi
from idc import *
import wingdbstub
def my_debugged_function():
# Set breakpoint here!
var1='aaa'
var2='bbb'
msg(var1)
msg(var2)
class SamplePlugin(idaapi.plugin_t):
flags = idaapi.PLUGIN_PROC
comment = "Sample Debuggee"
help = "Sample Debuggee"
wanted_name = "Sample Debuggee"
wanted_hotkey = "Shift+D"
def init(self):
return idaapi.PLUGIN_KEEP
def term(self):
pass
def run(self, arg):
wingdbstub.Ensure()
my_debugged_function()
def PLUGIN_ENTRY():
return SamplePlugin()
注意这两句代码: [Python] 纯文本查看 复制代码 import wingdbstub
wingdbstub.Ensure() 被调试代码需要import wingdbstub;Wind_IDE中需要在wingdbstub.Ensure()语句之后下断点,才可以中断下来。
1.2 添加断点
用Wing_IDE打开X:\xxxxxx\IDA 7.0\plugins\sample_debuggee.py,F9下断点(如在“msg(var1)”这行下断),在Wing_IDE左下角选中“accept debug connections”。如下图所示:
1.3 载入文件
启动IDA,随便载入一个idb或PE文件,点击运行前面建的IDAPython文件“sample_debuggee.py”,Edit→Plugins→sample debuggee,点击后你会发现Wing_IDE已经捕捉到并断下来了,现在就可以用Wing_IDE调试了。
|