1. 背景
該工具是基于Androguard開(kāi)源項(xiàng)目修改而成的或舞,僅僅提取了其權(quán)限檢查的功能(Androguard是一款功能豐富的Apk靜態(tài)分析工具)。最初是為了方便Android M版本的權(quán)限更新和升級(jí)而開(kāi)發(fā)捏膨,以方便我們查找APK中存在的權(quán)限使用位置饲趋。
目前腔长,為了讓大家更容易的分析Apk的權(quán)限,對(duì)原來(lái)權(quán)限工具進(jìn)行如下改進(jìn):
- 該工具成功移植到windows環(huán)境下(以前Androguard只支持linux環(huán)境)钢拧,并且大大簡(jiǎn)化了環(huán)境配置過(guò)程拯爽,使用成本大大降低。但是目前只能確保權(quán)限檢查功能可以正常使用碳蛋,Androguard的其它功能并沒(méi)有測(cè)試胚泌。
- 解決APK分包后不能全面查找權(quán)限的問(wèn)題,自動(dòng)匹配多個(gè).dex文件肃弟。
- 生成權(quán)限txt文檔玷室,同時(shí)過(guò)濾出危險(xiǎn)權(quán)限(Dangerous和Signature權(quán)限)。
2. 使用方法
該工具的使用十分簡(jiǎn)單笤受,環(huán)境配置也很方便穷缤,支持win和mac,步驟如下:
確保系統(tǒng)中Python版本為2.7.x(推薦使用2.7.10箩兽,如果是低版本需要另外安裝setuptools)津肛,一定不能是3.x版本。如果版本不對(duì)比肄,可以參考官網(wǎng)進(jìn)行升級(jí)處理快耿。
-
拷貝Androguard文件夾至本地囊陡,并進(jìn)入根目錄下在cmd中執(zhí)行:
python setup.py install
如果是linux或mac系統(tǒng),也是同樣的方法掀亥。
-
接下來(lái)撞反,只找到需要分析權(quán)限的Apk。在cmd中的BaiduAndroguard根目錄下執(zhí)行:
androlyze.py -i "路徑/文件名" -x
例如:
androlyze.py -i "TestActivity.apk" -x
-
這樣就會(huì)得到兩個(gè)txt文件搪花,如下圖:
權(quán)限分析文件
其中遏片,Permissions.txt包含APK的所有權(quán)限;Permissions_filtered.txt是過(guò)濾出來(lái)的重要權(quán)限撮竿,包含Dangerous和Signature兩類危險(xiǎn)權(quán)限吮便。
-
權(quán)限分析的結(jié)果是使用Smali語(yǔ)言表示,如下圖所示:
權(quán)限分析結(jié)果
第一行的ACCESS_NETWORK_STATE指的是使用的權(quán)限名稱幢踏,后面每行表示一個(gè)使用該權(quán)限的位置髓需。基本語(yǔ)法如下:
V void
Z boolean
B byte
S short
C char
I int
J long
F float
D doubleLandroid/net/ConnectivityManager; 相當(dāng)于java中的android.net.ConnectivityManager
L表示這是一個(gè)對(duì)象類型房蝉。;表示對(duì)象名稱的結(jié)束僚匆。這些語(yǔ)法可以去Smali官方網(wǎng)站查看。
3. 存在的問(wèn)題
目前來(lái)看搭幻,該工具還存在一些弊端和不足咧擂,在后續(xù)的研發(fā)中還會(huì)持續(xù)跟進(jìn)。
- 當(dāng)前的權(quán)限分析是基于多倫多大學(xué)的PScout開(kāi)源mapping文件得到檀蹋,但是目前該mapping僅更新到API22松申,還沒(méi)有適配23,因此可能存在一些權(quán)限檢查的遺漏俯逾。
- 對(duì)于某些權(quán)限并不能完全檢查出來(lái)贸桶,例如讀寫(xiě)SD卡的權(quán)限,存在遺漏的情況纱昧。
4. 文件下載地址
參見(jiàn)Github的AndroPermissions