注:
若访问github或Google较慢,可使用加速器:
http://91tianlu.date/aff.php?aff=3468
IDA是一款强大的反汇编和动态调试工具,能够辅助研究人员进行静态分析和动态调试。书中通过开源工具将Windows中的IDA工具运行在了Linux系统中。我也多次尝试使用开源工具wine来安装IDA的不同版本,但由于各种原因,导致安装成功率并不高,总是出现各种各样的问题。后来我在网络上搜索到在Linux系统中直接可以使用的版本。这一小节的内容就是对这一方法的总结。
我在百度云盘中上传了IDA的Linux版本,读者可以复制链接下载:
链接:https://pan.baidu.com/s/1jX7EESn5GvIqpttLE83_Gw
提取码:bl4n
将IDA的压缩包下载到Ubuntu系统中并对其进行解压后,直接在对应的目录中执行./idaq就可以将ida直接启动,因为该版本的IDA是32位的,直接在64位的Ubuntu系统中不能直接启动,所以需要首先在Ubuntu系统中安装启动32位程序需要的依赖库:
$ sudo apt-get install libc6-i686:i386 libexpat1:i386 libffi6:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386 libglib2.0-0:i386 libice6:i386 libpcre3:i386 libpng12-0:i386 libsm6:i386 libstdc++6:i386 libuuid1:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386 libxext6:i386 libxrender1:i386 zlib1g:i386 libx11-xcb1:i386 libdbus-1-3:i386 libxi6:i386 libsm6:i386 libcurl3:i386
依赖库安装完成后,直接在IDA的安装目录下使用./idaq就能启动IDA了,当然也可以直接双击idaq程序完成启动:
test@ubuntu:~/Desktop/IDA_Pro_v6.4$ ./idaq
我使用的IDA是v6.4版本,直接将MIPS-Linux架构的程序使用IDA Pro软件打开,IDA可以自动识别要分析程序的指令集架构信息,你只需要保持一路默认就能对其进行反汇编。但为了方便做分析,还需要安装基于MIPS架构的辅助分析插件。
插件下载地址在GitHub上:
$ git clone https://github.com/devttys0/ida.git
下载完成后,分别进入到plugins目录和modules目录,在命令行下,使用python环境运行install.py即可完成安装:
$ python ./install.py /path/to/your/ida/install/directory
为了测试插件安装是否成功,我们从网络上下载一个别人编译好的MIPS-Linux架构的应用程序,这里以busybox为例:
https://busybox.net/downloads/binaries/1.21.1/busybox-mips
将下载好的busybox-mips程序使用idaq程序打开,然后一路保持默认,就能够顺利的对这个busybox-mips程序进行反汇编了:
完成以上步骤后,依次单击“Edit”->“Plugins”选项,如果在下拉的子菜单中可以出现“MIPS ROP”字样的插件名称,就说明刚刚从GitHub中下载的插件安装成功了。
我们来运行MIPS ROP插件测试一下:
依次单击“Search”->”mips rop gadgets“:
然后搜索”把栈地址赋值给$a0寄存器“的ROP gadgets:
如果你能够成功的搜索到一些ROP gadget指令片段,就说明MIPS ROP插件可以正常工作了。
关于每个插件的详细功能和用法在GitHub中每个插件目录下的README.md中都有详细说明,读者可以进到每个插件目录中逐个阅读:
这一小节中,我们主要介绍了使用IDA Pro对MIPS-Linux架构的应用程序做静态分析前的准备工作。并对“mips rop finder”插件进行了简短的说明。
下一小节,我们将会对使用IDA Pro如何对MIPS-Linux架构的应用程序做动态调试的步骤做出总结。
最后,希望本次的分享能够给你带来帮助。谢谢大家。