Paimei是什么? 一个反向工程的框架,框架使用Python语言。
可以从 http://www.openrce.org/downloads/download_file/208 或者 http://code.google.com/p/paimei/下载,解压即可.
Paimei的整个安装配置过程是比较繁琐的,并且项目也有段时间没有更新了,很多是针对Python旧版本。
预先条件:
- IDA Pro, 我装的是 IDA Pro 5.2
- WxPython http://www.wxpython.org/
- 安装mysql-python,直接下载一个build好的,自己build比较麻烦,需要先装setuptools,还会有一大堆错误,需要一个一个fix
- MySql,我安装的是MySql5.5.8
- uDraw http://www.informatik.uni-bremen.de/uDrawGraph/en/home.html
- GraphViz http://www.graphviz.org
- Oreas GDE http://www.oreas.com/gde_en.php
- 安装pydasm和pydbg
- IDA Python, idapython-0.9.55_ida5.1_py2.5_win32.zip from http://code.google.com/p/idapython/downloads/detail?name=idapython-0.9.55_ida5.1_py2.5_win32.zip&can=2&q=
由于IDA Python没有Python2.7 for IDA Pro5.2的版本,只好又装了一个Python2.5,好在IDA里使用IDA Python Plugin.
在Paimei解压目录运行__install_requirements.py会提示什么东西还没安装,是否需要安装,输入y会自动下载安装。但是我试了很多次,我的机器上不会自动安装,只有一个个自己手动安装了.当所有的预装条件满足,执行setup.py build和setup.py install进行Paimei安装.
在安装过程中我的机器import pydbg会出错,可以在python安装目录下的lib/site-packages/pydbg目录下,编辑my_ctypes.py,在c_types = (Structure, c_char, c_byte, c_ubyte, c_short, c_ushort, c_int, c_uint, c_long, c_ulong, c_longlong, 。。这一行所在代码的上面加上以下语句:
class Structure(Structure):
pass
所有东西安装好了,运行console目录里的PAIMEIconsole.pyw,如果ok,一个白眉大侠出现,恭喜你Paimei安装好了。
Paimei使用
1.启动Paimei,然后连接MySql和uDraw,点击菜单Connections->MySql connect;输入Passwd,点击connect, Connections->uDraw(Graph) connect,安装的时候会在MySql中建一个Paimei的数据库。
2.如何使用PAIMEIpstalker(PE漫步者):以notepad.exe为例进行指令追踪。
- IDA加载notepad.exe,IDA菜单中Edit——>Plguins——>IDApython中打开Paimei安装目录下的“pida_dump.py”,将IDA分析结果保存成pida文件,选择full。
- 选择Paimei左侧的“PAIMEIpstalker”。
- 连接uDraw和MySQL。
- 单击“Add Module”,将刚才IDA导出的pida文件加载到Paimei,“Avaliable Targets”,选择“Add targets”,新建一个Target,取名notepad。
- 右键单击新添加的Target,选择“Add Tag”。取名Sample.
- 右键单击新添加的Tag,选择“Use for Stalking”
- 加载进程,有两种方式:可以单击“Browse”按钮来选择PE文件直接加载,也可以单击“Refresh Process List”按钮来选择已经启动的进程进行Attach。
我这里直接选择PE文件加载会出错,不能设置断点,可能是由于PyDbg不能设置Deferred Breakpoint导致的,还没找到解决方法,只有通过Attach了。 - 单击“Start Stalking”按钮,开始Track模块。
- 右键单击当前的tag选择“load hits”,Paimei会将执行到的指令块加载并显示详细的信息;如果选择“Sync with uDraw”,Paimei会在uDraw的界面下绘制刚刚执行过的指令块及其之间的调用关系。