开源静态分析工具androguard体验

原文链接: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

可以看出该用本 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间的差异

时间: 2024-11-07 21:36:41

开源静态分析工具androguard体验的相关文章

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

逆向分析dex的话,个人还是比较中意VTS,JEB(穷人买不起),IDA等.之前有尝试使用过androguard,感觉还是不咋习惯,虽然基于其基础上演变的一些项目挺有吸引力.不过作为项目的基础,androguard确实再适合不过了.至少静态分析很多功能直接调用或者在其上修改效果倒是事半功倍.也正因为这个目的,才有了第二篇体验. 其实官网的wiki写的很详细了,包括一些使用方法,api参考,都挺丰富的.但是官网提供的demo不多,我觉得通过对androlyze.py的一些常见功能的使用,可以帮助我

主流开源开发者工具落地阿里云,进一步提升开发者体验

摘要: 在云计算大数据时代,企业的不断上云,业务的不断发展,技术架构的不断演进,导致资源.应用和数据的管理成本不断增加,运维难度不断加大.业务场景的不断和复杂和变化,不得不引起我们更多的思考: 在云计算大数据时代,企业的不断上云,业务的不断发展,技术架构的不断演进,导致资源.应用和数据的管理成本不断增加,运维难度不断加大.业务场景的不断和复杂和变化,不得不引起我们更多的思考: 业务基础设施架构如此复杂,是否可以实现一键搭建?自定义云镜像,能否实现批量生产?数据安全,是企业和个人最关心的事儿- A

一款C++静态分析工具 —— CppDepend

Wrote by mutouyun. (http://darkc.at/cppdepend/) 去年6月份的时候,CppDepend的一位技术社区经理(technical community manager)突然发邮件联系我,赠送了我一份license,并邀请我体验下他们的C++静态分析工具,也就是CppDepend. 在这款软件的官方网站上,我们可以看到使用CppDepend可以帮助我们做些什么: 1. 提高代码质量 2. 可以使用CQLinq来自动化Review代码 3. 帮我们做代码重构

C++代码静态分析工具splint

1.引言 最近在项目中使用了静态程序分析工具PC-Lint, 体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对其他平 台的PC-Lint版本.由于PC-Lint/FlexeLint是商业的程序分析工具,不便于大家对其进行学习和使用,因而下面我将介绍一个针对C语言 的开源程序静态分析工具——splint. 2.静态程序分析 先来说说什么是“静态程序分析(Static program analysis)”,静态

Jenkins集成源码静态分析工具

1.static code analysis插件说明 Jenkins提供了插件"static code analysis",该插件搜集不同的分析结果,并集合显示出来. 实际上,我们可以认为static code analysi和FindBugs等插件组成了一个静态分析代码的套件.仅仅安装static code analysis是不够的,还需要安装其他插件(如FindBugs),才能正确工作. 2.static code analysis支持哪些插件? 官方文档:https://wiki

静态分析工具汇总

静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):“静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码检查代码检查包括代码走查.桌面检查.代码审查等,主要检查代码和设计的一致性,代码对标准的遵循.可读性,代码的逻辑表达的正确性,代码结构的合理性等方面:可以发现违背程序编写标准的问题,程序中不安全.不明确和模糊的部分,找出程序中不可移植部分.违背程序编程风格的问题,包括变量检查.命名和类型审查.程序逻辑审查.程

开源JDBC工具类DbUtils

本篇将会详细地介绍Apache公司的JDBC帮助工具类DbUtils以及如何使用.在上一篇中我们已经通过将以前对dao层使用JDBC操作数据库的冗余代码进行了简易封装形成自己的简单工具类JdbcUtils,而在这过程中很多都是借鉴和参考了DbUtils的代码,因此通过上一篇的学习,会让我们在对DbUtils进行更快速简单的认识. 俗话说学习一个开源的工具最好的方法就是看其官方文档,是的,在Apache官网中对DbUtils进行了详细的介绍:http://commons.apache.org/pr

NLP常用开源/免费工具

一些常见的NLP任务的开源/免费工具, *Computational Linguistics ToolboxCLT http://complingone.georgetown.edu/~linguist/compling.htmlGATE http://gate.ac.uk/Natural Language Toolkit(NLTK) http://nltk.orgMALLET http://mallet.cs.umass.edu/index.php/Main_Page *English Ste

7款优秀的开源数据挖掘工具

7款优秀的开源数据挖掘工具 IDMer说道:本文只对几种流行的开源数据挖掘平台进行了检视,比如Weka和R等.如果您想找寻更多的开源数据挖掘软件,可以到KDnuggets和Open Directory上查看.为了评测这些软件,我们用了UCI Machine Learning Repository上的心脏病诊断数据集. Tanagra Tanagra (http://eric.univ-lyon2.fr/wricco/tanagra/) 是使用图形界面的数据挖掘软件,采用了类似Windows资源管