前不久IDA7.0发布,这次相较之前来说有很多的改动,首先整个IDA是x86 64位架构,而之前却一直是i386 32位,因此插件同样为64位的dylib。不仅这样,SDK上某些接口也发生了改变,导致很多优秀的插件不得不重新改动源码,很多在IDA7上编译也存在问题。下面我将以IDA的官方插件findcrypt2来说明IDA7的插件编译细节。编译IDA插件是个麻烦事,主要在于网上相关的资料很少,唯一的几篇也是年代久远,Makefile里面很多编译参数都有变化,目前来说,没有一个完整的文章来介绍如何在Mac平台下编译IDA插件的指南。希望这篇文章能够对有这需求的人有所帮助。
在Mac上完全可以用xcode来帮助我们编译IDA插件,其实更常见的是用Makefile编译,但原理一样,所以这里就以xcode来介绍。
我们知道IDA的插件的文件格式为dylib动态库,因此在创建xcode项目时在Framework&Libarry中选择Libarry
然后再选择为Dynamic动态库,并导入C++标准库
接下来项目中自动会生成两个文件。暂时不用管,我们把findcrypt2的源码放入该项目,最后如下图所示
这时你的项目中像ida.hpp这类的头文件肯定会提示找不到,还需要进一步设置。
这里我们将设置头文件和库的搜索路径等等。
首先设置目标架构为x86_64
然后设置头文件和库的搜索路径,依据你IDA及sdk路径改成对应路径
经过上面的设置,此时xcode应该能找到头文件了,这时还需要设置连接的静态库
这里连接的库为-lida64,表示我们编译的是解析64位的插件,若要编译解析32位的插件,这里为-lida即可。
最后我们还需要设置编译参数
其中__EA64__在编译64位插件时才有。
__EA64__
这时候build一下,如果一切顺利,应该就不会报错了。
IDA7相以前版本而言,插件的后缀名统一为dylib格式,之前32位为pmc,64位为pmc64。这里将编译好的插件改为findcrypt264.dylib表示为64位插件,则对应的32位插件名为findcryt.dylib
下面测试下效果,我们打开IDA去解析一个含有md4加密的macho文件,运行插件测试能否识别出其中的加密算法。
上图我们可以看到这里成功找到一处md4加密,反汇编窗口中正是md4加密中用到的常量数组。我顺便为插件注册了Ctrl-Alt-z的快捷键,若没有快捷键,可以在插件的导航栏里点击对应的插件即可。
附上该插件,完。
findcrypt264.dylib_for_ida7_made_by_x1a0
http://newsoft-tech.facebook.com/2014/05/setting-up-ida-sdk-65-on-mac-os-x-109.html
http://www.h4ck.org.cn/2014/09/mac-ida-pro-%E6%8F%92%E4%BB%B6%E7%BC%96%E5%86%99%E6%8C%87%E5%8D%97-v1-0/
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课