如何在Ubuntu 12.04上安装Android静态分析工具包:Androguard

Androguard是目前大家比较常用的Android静态分析工具,目前最新的版本是1.9。
但是Androguard是通过源码发布的,本身依赖关系很多,安装起来非常复杂。
笔者在Ubuntu 12.04上成功编译安装通过,下面将具体步骤简单叙述一下。
可以从这里下载到Androguard 1.9的源码:https://androguard.googlecode.com/files/androguard-1.9.tar.gz,下载完成后,解压到你想要放的目录下去。
Androguard必须要有Python,并且版本不能低于2.6,且不能高于3.0才能运行。而Ubuntu 12.04自带了Python 2.7,所以就不再需要花心思安装Python了。
其实光有基本的Python,Androguard以及可以完成基本的功能了,例如反汇编apk程序。
但是,如果要想使用Androguard其它的高级功能,除去最基本的Python运行环境提供的基本库之外,还要安装以下一些依赖模块:



  • python-dev
  • ipython:是一个 Python 的交互式 shell,要求版本>0.12,androlyze.py会用到。
  • pygments:是一个用于显示语法高亮的库,反编译的时候可以高亮显示关键字,androlyze.py会用到。
  • pydot:是一个在Python下作图的库,androdd.py在绘制类方法的调用流程图的时候会用到。
  • python-ptrace:专门用来在Python中调用ptrace库的工具库,androdump.py会用到。
  • chilkat:主要用来解压缩apk文件,如果没有这个库的话就会直接用Python中自带的zip模块解压。同时,这个模块还会用来提取apk文件的签名证书。在apk.py会用到。
  • magic:这个库是用来辨别文件类型的,apk.py中的get_files_types方法会用它来视图。
  • pyfuzzy:是一个专门用来处理模糊逻辑的Python库,androrisk.py在分析某个apk时候存在潜在风险的时候会用到这个库。
  • mercury:也是一个专门分析Android应用程序的库,目前改名叫做drozer了,andromercury.py是对其的一个简单封装。

除了这些可选的Python依赖库之外,在Androguard代码目录下还有一个elsim(element similarity)子目录,看了名字应该猜到了,这个库是用来计算元素的相似度的,androcsign.py、androsign.py、androsim.py和andromercury.py都会要依赖这个库。这个库是需要在安装机器上编译的,为了编译这个库,必须要依赖以下一些库:

  • sparsehash
  • muparser
  • snappy
  • bzip2
  • zlib

好了,说清了要哪些依赖库,接下来就是动手安装这些依赖库了。但说起来,做起来有点难度,大致有三种方法可以在Ubuntu上安装库,一是通过apt-get,二是通过Python的pip或者easy_install,最后一种就是直接下载源码过来安装。即使都装上了,有时候还有兼容性问题,有些库通过第一种或第二种方式安装过后,版本过低,还必须要直接下最新源码来安装。笔者饶了不少弯,总结出了以下一些步骤,总体原则是能用第一种就不用第二种,能用第二种就不用第三种。



1)首先,用apt-get安装以下这些库:
sudo apt-get install g++ python-pip python2.7-dev python-bzutils libbz2-dev libmuparser-dev libsparsehash-dev python-ptrace python-pygments graphviz liblzma-dev libsnappy-dev python-pydot python-networkx ipython



2)接下来,用pip来安装magic库:
sudo pip install python-magic
注意,通过apt-get还可以找到python-magic库,但找到库的版本太低了,会有兼容性问题。
通过apt-get和pip都可以找到pyfuzzy库,但问题还是版本太老(0.0.1),只能通过源码来安装。



3)源码安装pyfuzzy库:
可以在这里下载源码:http://sourceforge.net/projects/pyfuzzy/files/pyfuzzy/pyfuzzy-0.1.0/pyfuzzy-0.1.0.tar.gz。
下载完成后,解压缩出来,然后进入解压缩的目录,通过命令安装:
tar -zxf pyfuzzy-0.1.0.tar.gz
cd pyfuzzy-0.1.0
sudo python setup.py install


4)安装chilkat
还是要先下载安装包:http://www.chilkatsoft.com/python.asp 按照Ubuntu的版本选择是32位版本还是64位版本下载。

下载之后解压。安装方法很简单,只需要以root身份,将chilkat.py和_chilkat.so两个文件直接拷贝到Python的“site-packages”目录下就好了。但是,该目录的位置会依赖于Python的安装路径。对于Ubuntu 12.04预装的Python 2.7来说,其“site-packages”目录位于“/usr/local/lib/python2.7/dist-packages”或者“/usr/lib/python2.7/dist-packages”。随便选一个,将两个文件拷贝进去就好了。如果不是这两个目录的话,可以通过以下Python命令来找到:

python

import site;

site.getsitepackages()


5)编译Androguard
在正式编译之前,要修改一下elsim下面的formula和libelsign的Makefile文件。
打开elsim/elsign/formula/Makefile,添加上包含目录,从而使编译器能够找到muParser.h,例如:


       CFLAGS += -I/usr/include/muParser

打开elsim/elsign/libelsign/Makefile,添加上包含目录,从而使编译器能找到muParser.h和Python,例如:


       CFLAGS += -I/usr/include/muParser -I/usr/include/python2.7

        修改完后,进入Androguard的主目录,make一下就好了。




到此,Androguard的安装就已经全部完成了。

另外,如果想加快Androguard的分析速度的话,可以试着安装psyco。这个库是Python上的JIT编译器,可以加快Python代码的运行速度,不需要更改任何源码。

Android的静态分析工具中:ApkTool BakSmali Androguard dex2jar jd-gui中,除了Androguard不能在Windows平台上运行外,其它的都能支持跨平台,可以在Windows平台上良好的运行。如果在Ubuntu12.04下单独的一个个去安装配置这些静态分析工具会十分麻烦,因此我建议大家使用santoku,santoku实质是一款定制的Ubuntu12.04系统镜像,有如下特点:

1 集成了大量主流的Android程序分析工具,为分析人员节省分析环境配置所需的时间。

2 集成移动设备取证工具,支持Android iphone等移动设备的取证工作。

3 集成渗透测试工具

 4 集成网络数据分析工具,在分析Android病毒,木马等程序时非常有用。

        5 采用LXDE作为系统的桌面环境,桌面与windows xp十分相似

        6 正处于beta阶段


版权声明:本文为koozxcv原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。