美文网首页
Android权限扫描工具

Android权限扫描工具

作者: 无人化之路 | 来源:发表于2016-09-07 17:16 被阅读230次

    1. 背景

    该工具是基于Androguard开源项目修改而成的,仅仅提取了其权限检查的功能(Androguard是一款功能丰富的Apk静态分析工具)。最初是为了方便Android M版本的权限更新和升级而开发,以方便我们查找APK中存在的权限使用位置。

    目前,为了让大家更容易的分析Apk的权限,对原来权限工具进行如下改进:

    • 该工具成功移植到windows环境下(以前Androguard只支持linux环境),并且大大简化了环境配置过程,使用成本大大降低。但是目前只能确保权限检查功能可以正常使用,Androguard的其它功能并没有测试。
    • 解决APK分包后不能全面查找权限的问题,自动匹配多个.dex文件。
    • 生成权限txt文档,同时过滤出危险权限(Dangerous和Signature权限)。

    2. 使用方法

    该工具的使用十分简单,环境配置也很方便,支持win和mac,步骤如下:

    1. 确保系统中Python版本为2.7.x(推荐使用2.7.10,如果是低版本需要另外安装setuptools),一定不能是3.x版本。如果版本不对,可以参考官网进行升级处理。

    2. 拷贝Androguard文件夹至本地,并进入根目录下在cmd中执行:

      python setup.py install

      如果是linux或mac系统,也是同样的方法。

    3. 接下来,只找到需要分析权限的Apk。在cmd中的BaiduAndroguard根目录下执行:

      androlyze.py -i "路径/文件名" -x

      例如:

      androlyze.py -i "TestActivity.apk" -x

    4. 这样就会得到两个txt文件,如下图:


      权限分析文件

      其中,Permissions.txt包含APK的所有权限;Permissions_filtered.txt是过滤出来的重要权限,包含Dangerous和Signature两类危险权限。

    5. 权限分析的结果是使用Smali语言表示,如下图所示:


      权限分析结果

      第一行的ACCESS_NETWORK_STATE指的是使用的权限名称,后面每行表示一个使用该权限的位置。基本语法如下:

      V void
      Z boolean
      B byte
      S short
      C char
      I int
      J long
      F float
      D double

      Landroid/net/ConnectivityManager; 相当于java中的android.net.ConnectivityManager

      L表示这是一个对象类型。;表示对象名称的结束。这些语法可以去Smali官方网站查看。

    3. 存在的问题

    目前来看,该工具还存在一些弊端和不足,在后续的研发中还会持续跟进。

    • 当前的权限分析是基于多伦多大学的PScout开源mapping文件得到,但是目前该mapping仅更新到API22,还没有适配23,因此可能存在一些权限检查的遗漏。
    • 对于某些权限并不能完全检查出来,例如读写SD卡的权限,存在遗漏的情况。

    4. 文件下载地址

    参见Github的AndroPermissions

    相关文章

      网友评论

          本文标题:Android权限扫描工具

          本文链接:https://www.haomeiwen.com/subject/cbgjettx.html