原文链接: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间的差异

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

  1. AVL Insight 开源情报工具:一站式情报管理服务

    一.概要 AVL Insight 开源情报工具是安天移动安全推出的一款情报收集工具,它是配合AVL Insight移动威胁情报平台的Chrome浏览器扩展程序,用户可以使用该工具,对网站中的公开信息进 ...

  2. Java开源数据库管理工具

    SQuirreL SQL Client   SQuirreL SQL Client 是一个用 Java 编写的程序,它允许您查看数据库的内容.发出 SQL 命令,以及如您将看到的,执行许多其他功能.构 ...

  3. 代码静态分析工具——splint的学习与使用

    引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对其他平 ...

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

    Wrote by mutouyun. (http://darkc.at/cppdepend/) 去年6月份的时候,CppDepend的一位技术社区经理(technical community mana ...

  5. 8个实用的SVG工具,20 个有用的 SVG 工具,五款超实用的开源SVG工具

    8个实用的SVG工具 [导读] 你还在为没有好用的SVG工具而发愁吗?开发人员的福音来啦!小编为大家收集罗列了8款实用的SVG工具,让我们一起来看看吧! SVG可缩放矢量图形(Scalable Vec ...

  6. Jenkins集成源码静态分析工具

    1.static code analysis插件说明 Jenkins提供了插件"static code analysis",该插件搜集不同的分析结果,并集合显示出来. 实际上,我们 ...

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

    1.引言 最近在项目中使用了静态程序分析工具PC-Lint, 体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对 ...

  8. 代码静态分析工具-splint的学习与使用[转]

    代码静态分析工具--splint的学习与使用[转] 引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.window ...

  9. C/C++代码静态分析工具调研

    C/C++代码静态分析工具调研 摘自:https://www.jianshu.com/p/92886d979401 简述 静态分析(static analysis)是指在不执行代码的情况下对其进行分析 ...

随机推荐

  1. 欧拉函数O(sqrt(n))与欧拉线性筛素数O(n)总结

    欧拉函数: 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目. POJ 2407.Relatives-欧拉函数 代码O(sqrt(n)): ll euler(ll n){ ll ans=n; ...

  2. ret2dir:Rethinking Kernel Isolation(翻译)

    前一段时间在网上找ret2dir的资料,一直没找到比较系统的介绍,于是干脆把这篇经典的论文翻译了,当然,第一次翻译(而且还这么长),很多词汇不知道到底该怎么翻译,而且最近事情也比较多, 翻译得挺烂的, ...

  3. Java异常处理机制及两种异常的区别

    java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字.   try 关键字后紧跟一个花括号括起来的代码块,简称try块.同理:下面的也被称为相应的块. ...

  4. [BZOJ 3144] 切糕

    Link: BZOJ 3144 传送门 Solution: 发现要把点集分成不连通的两部分,最小割的模型还是很明显的 首先我们将原图转化为$R+1$层,从而将点权化为边权 关键还是在于建图是怎么保证$ ...

  5. POJ 2559 Largest Rectangle in a Histogram(单调栈)

    [题目链接] http://poj.org/problem?id=2559 [题目大意] 给出一些宽度为1的长方形下段对其后横向排列得到的图形,现在给你他们的高度, 求里面包含的最大长方形的面积 [题 ...

  6. SSH学习——Spring基础

    1.理解什么是Spring框架? spring是J2EE应用程序框架,是轻量级的IOC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框 ...

  7. SQL Server on Linux: How? Introduction: SQL Server Blog

    SQL Server Blog Official News from Microsoft’s Information Platform https://blogs.technet.microsoft. ...

  8. 用友u8数据库表结构

    用友数据库表名参照表1 Accessaries 成套件表2 AccInformation 帐套参数表3 AdjustPVouch4 AdjustPVouchs5 Ap_AlarmSet 单位报警分类设 ...

  9. [原创]用逻辑嗅探破解接触式IC卡口令

    最近两周对接触型IC卡很感兴趣,就动手实践了一下,最终实现的效果是通过破解IC卡口令实现对数据修改,然后就可以随意洗衣服喽~IC卡从数据传递方式上划分为接触型和非接触型两种.接触型的卡片表面有金属贴片 ...

  10. VR/AR工作原理、目前存在的技术问题

    http://blog.csdn.net/liulong1567/article/details/50686558 摘要: 这些挑战,每一个都还需要很多努力才能解决.目前它们很多都还不到量变(只是需要 ...