码迷,mamicode.com
首页 > 其他好文 > 详细

开源静态分析工具androguard体验

时间:2014-09-09 12:27:38      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:android   blog   http   os   io   使用   ar   strong   文件   

原文链接:http://blog.csdn.net/xbalien29/article/details/21885297

虽然在windows端免费版的IDA、VTS等工具都可用来静态分析,但相对来说这些工具用来人工分析在合适不过,但对于项目开发,相对来说都忽视很好扩展。而在androguard却很适合进行扩展或者移植成为自己项目的某一模块,虽然早有耳闻,但也最近才动手体验几把。当然,androguard也被很多人再次开发过了,包括一些提供上传入口的检测网站,静态分析部分感觉都有使用该模块,很多静态分析工具都基于它,其中还有一款ApkInspector也很出名。

androguard主要用来进行静态分析,其默认采用ded作为反编译的软件,同时提供了很多模块供分析人员使用。项目地址 https://code.google.com/p/androguard/ 安装方法见wiki部分。如果觉得麻烦可以下载santoku,该系统是订制Ubuntu,主要用于移动设备,包括很多分析工具集合androguard、drozer也在其中,类似于kali。

这次主要是对其中几个模块进行了初步使用:

 

  1. androrisk.py  该模块用于分析apk危险级别
  2. androapkinfo.py 该模块分析apk列出其中的文件类型、权限、4大组件、是否NDK反射等信息
  3. androaxml.py 该模块用于展示apk androidmanifest.xml
  4. androgexf.py 该模块生成函数调用图
  5. apkviewer.py 该模块生成指令级别的调用图
  6. androlyze.py 该模块为交互分析环境
下面篇幅采用一个样本作为分析目标以展示androguard初级使用
 
1.首先我们先使用androrisk.py快速判断该应用是否可以,利用如下命令./androrisk.py -i ./sample.apk
 
bubuko.com,布布扣

 

可以看出该用本 dex中存在反射 权限中有5个为隐私权限 2个与扣费有关1个联网 3个短信等等 而这些权限是根据其自身的配置文件进行分类,位于./tools/permissions/AndroidManifest.xml

2.我们根据简单的特征可以判断出该样本确实权限很大,进而可以采用androapkinfo.py以及androaxml.py进行分析

如下命令./androaxml.py -i ./sample.apk                                 ./androapkinfo.py -i ./sample.apk > ./sample.apk.info

前者就只是androidmanifest.xml的展示而后者内容较多,最好重定向到文本中vim查看,内容列举如下(除了权限、文件以外还多了如下):

bubuko.com,布布扣

当我看到罗列的信息后突然觉得好想有些检测网站的结果也类似,所以估计是整合进了项目里的,列举内容还算详细可以用来参考

3.有时候我们需要分析函数调用流程,那androgexf.py就用上了 ./androgexf.py -i ./sample.apk -o ./sample.apk.gexf 

就生成了一个图片,这个图片我们可以用Gephi打开,下载地址 http://gephi.org/users/download/

打开后选择流程Yifan Hu 运行生成分析图:

bubuko.com,布布扣

从数据资料中进行查找,我们要查找KC2011这个类的调用流程,在数据资料中搜索KC2011然后右键选择之后,点击概览就出现了流程:

bubuko.com,布布扣

 

之后自己拖动一下,函数流程就清晰的出来了,但是我有一些问题,这个好像只判断拿了重这个函数调用了那些函数,调用顺序好像没有体现,看着有点忧伤。。。不知道有人能否指点

bubuko.com,布布扣

 

4.以上是函数级别的调用关系,如果要看指令级别的就需要apkviewer.py这个模块了,这个模块需要networkx,安装详见该博客 http://blog.csdn.net/flydirk/article/details/8506463

命令如下:./apkviewer.py -i ./sample.apk -o ./sample

该模块生成了很多图片,对应于每一个类,当然也有一个汇总的调用关系图,一样可以用gephi打开,虽然看着也一样很忧伤,就不截图了。但是该模块实现的调用流程用来做后期改进还是一个不错的选择

5.剩下就是androlyze.py交互模块了命令./androlyze.py -s 

进入交互窗口后,我们可以采用apk,d,dex = AnalyzeAPK("./sample.apk")

分别获得获得apk对象、dex对象、分析结果对象

对于这些对象的操作.之后tab可以列举出对应的很多方法,d,dex也类似具体大家可以去了解

bubuko.com,布布扣

例如apk对象就可以通过get_xxxx获取对应的信息包括文件,权限,组件等等,其实这些函数正式androguard工作的核心类,有兴趣的可以研究下./androguard/core下的代码

xbubuko.com,布布扣

除了以上列出来的模块,还有几个模块也挺有意思的:androsign.py androcsign.py 一个用于检测apk信息是否在数据库中,一个用于将apk一些特征信息加入数据库中,类似特征库,而androdiff.py用来比较两个APK间的差异

开源静态分析工具androguard体验

标签:android   blog   http   os   io   使用   ar   strong   文件   

原文地址:http://www.cnblogs.com/4-312/p/3962164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!