IDA7.0 Mac 插件编译指南v1

By xia0

#先说两句

前不久IDA7.0发布,这次相较之前来说有很多的改动,首先整个IDA是x86 64位架构,而之前却一直是i386 32位,因此插件同样为64位的dylib。不仅这样,SDK上某些接口也发生了改变,导致很多优秀的插件不得不重新改动源码,很多在IDA7上编译也存在问题。下面我将以IDA的官方插件findcrypt2来说明IDA7的插件编译细节。编译IDA插件是个麻烦事,主要在于网上相关的资料很少,唯一的几篇也是年代久远,Makefile里面很多编译参数都有变化,目前来说,没有一个完整的文章来介绍如何在Mac平台下编译IDA插件的指南。希望这边文章能够对有这需求的人有所帮助。

#搭建xcode环境

在Mac上完全可以用xcode来帮助我们编译IDA插件,其实更常见的是用Makefile编译,但原理一样,所以这里就以xcode来介绍。

我们知道IDA的插件的文件格式为dylib动态库,因此在创建xcode项目时在Framework&Libarry中选择Libarry

xcode_step_1

然后再选择为Dynamic动态库,并导入C++标准库

xcode_step_2

接下来项目中自动会生成两个文件。暂时不用管,我们把findcrypt2的源码放入该项目,最后如下图所示

project_1

这时你的项目中像ida.hpp这类的头文件肯定会提示找不到,还需要进一步设置。

#Build setting

这里我们将设置头文件和库的搜索路径等等。

首先设置目标架构为x86_64

arch_s

然后设置头文件和库的搜索路径,依据你IDA及sdk路径改成对应路径

search_s

经过上面的设置,此时xcode应该能找到头文件了,这时还需要设置连接的静态库

link_s

这里连接的库为-lida64,表示我们编译的是解析64位的插件,若要编译解析32位的插件,这里为-lida即可。

最后我们还需要设置编译参数

macros_s

其中__EA64__在编译64位插件时才有。

这时候build一下,如果一切顺利,应该就不会报错了。

#最后说两句

IDA7相以前版本而言,插件的后缀名统一为dylib格式,之前32位为pmc,64位为pmc64。这里将编译好的插件改为findcrypt264.dylib表示为64位插件,则对应的32位插件名为findcry.dylib

下面测试下效果,我们打开IDA去解析一个含有md4加密的macho文件,运行插件测试能否识别出其中的加密算法。

test

上图我们可以看到这里成功找到一处md4加密,反汇编窗口中正是md4加密中用到的常量数组。我顺便为插件注册了Ctrl-Alt-z的快捷键,若没有快捷键,可以在插件的导航栏里点击对应的插件即可。

#

附上该插件,完。

findcrypt264.dylib_for_ida7_made_by_x1a0

#参考链接