您的位置:首页 > 移动开发 > Android开发

Android权限扫描工具

2016-04-07 23:21 260 查看

Android权限扫描工具

1. 背景

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

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

该工具成功移植到windows环境下(以前Androguard只支持linux环境),并且大大简化了环境配置过程,使用成本大大降低。但是目前只能确保权限检查功能可以正常使用,Androguard的其它功能并没有测试。

解决APK分包后不能全面查找权限的问题,自动匹配多个.dex文件。

生成权限txt文档,同时过滤出危险权限(Dangerous和Signature权限)。

2. 使用方法

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

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

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

python setup.py install

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

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

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

例如:

androlyze.py -i “TestActivity.apk” -x

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



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

权限分析的结果是使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: