androguard是Android恶意软件分析工具,主要用于APK的静态分析。相比于IDA/VTS之类的工具,androguard的扩展性更强,开发者可以将其作为自己项目中的一个模块。本文详细讲解怎么在自己的py代码中调用androguard。
androguard目前最新的2.0版本还不兼容python3。所以下面的过程都在python2.7上进行。python3的用户可以参考这篇文章配置一个virtualenv的pythong2环境。
安装androguard
本文的环境为:Windows 10 + python 2.7.11 + androguard 2.0
安装androguard的步骤为:
- (1) 下载androguard2.0
- (2) 安装androguard2.0
python setup.py install
- (3) 安装其他依赖
python中导入androguard
从androguard源码中可以看出,其androguard/就是一个包(从目录下含有init.py可以看出)。而包是可以在python导入,并使用其方法的。
从androguard的源码androlyze.py中也可以看到,这个包是可以被导入的。
所以我们只要在代码中声明androguard的位置,并将需要的androguard模块导入,即可使用androguard的函数。
import os
import sys
# 根据自己py代码的位置,确定Androguard-2.0的路径
androguard_module_path = os.path.join( os.path.dirname(os.path.abspath(__file__)), 'Androguard-2.0/androguard' )
if not androguard_module_path in sys.path:
sys.path.append(androguard_module_path)
# 导入核心的三个模块
from androguard.core.bytecodes import apk
from androguard.core.bytecodes import dvm
from androguard.core.analysis import analysis
使用androguard
def get_androguard_obj(apkfile):
a = apk.APK(apkfile, False, "r", None, 2)#获取APK文件对象
d = dvm.DalvikVMFormat(a.get_dex())#获取DEX文件对象
x = analysis.VMAnalysis(d)#获取分析结果对象
return (a,d,x)
sp = '1.apk'
if __name__=='__main__':
ao = get_androguard_obj(sp)
x = ao[2]
pkgs = x.get_tainted_packages()
for pkg in pkgs.get_packages():
print(pkg)#打印package name