开源静态分析工具androguard体验(一)

虽然在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
 

 

可以看出该用本 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查看,内容列举如下(除了权限、文件以外还多了如下):

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

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

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

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

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

 

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

 

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也类似具体大家可以去了解

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

x

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

 

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值