在python中直接调用androguard

来源:互联网 发布:网上宿迁网络问政 编辑:程序博客网 时间:2024/04/29 23:22

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 osimport 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 apkfrom androguard.core.bytecodes import dvmfrom 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
2 0
原创粉丝点击