在python中直接调用androguard

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的步骤为:

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
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值