基于python深度学习的apk风险预测脚本

基于python深度学习的apk风险预测脚本

  为了有效判断安卓apk有无恶意操作,利用python脚本,通过解包apk文件,对其中xml文件进行特征提取,通过机器学习构建模型,预测位置的apk包是否有风险。
         在这里插入图片描述

一、APK拆包

一般的方法有两种

由google开发的apktool。
python的androguard包。
网上关于apktool的教程比较多,但是笔者在尝试使用后发现,

  1. apktool是基于java开发的,而机器学习由python控制,虽然可以利用python控制apktool,但有点多此一举。
  2. apktool对apk进行完全解包,浪费太多时间,在我准备构建的模型中有很多内容并不会使用。

固使用快速又强大的androguard。

from androguard.core.bytecodes import apk
import re
def get_permissions_one(filename):
    app = apk.APK(filename)
    permission = app.get_permissions()
    with open(re.sub(r'.apk', '', filename) + '.txt', 'w', encoding='UTF-8')as f:
        for temp in permission:
            f.write(temp + '\n')

通过app.get_permissions()提取所有权限,利用正则写入txt文件。

  关于androguard的更多命令可以看 这篇博客 ,也可以看 官方的API说明文档 ,本脚本只需要get_permissions()函数。、

先使用任意apk进行测试,执行结果如下:
在这里插入图片描述

得到了写入权限的txt文件。

网上有挺多恶意、正常apk例子,笔者是在 网站 下载的。

二、标准权限获取

  之前提到实现类似功能的博客中,采用了动态标准。在解包apk文件的时候,每次遇到了新的权限,就将权限写入标准权限的列表。而笔者在尝试了几个常见apk(qq、微信等)后发现,由于安卓有各类延申的os,而不同软件又有各自生态,有各种各样权限。笔者认为太多的权限会导致最后的模型不准确,固选择直接从网上找了个安卓权限大全,进行正则提取。 大全网址

import re

with open("带安卓权限.txt", "r", encoding='utf-8') as f:  # 打开文件
    data = f.read()  # 读取文件
    temp = re.findall(r'android.permission.(.+?),', data)
    print(len(temp))

with open('带安卓权限简述.txt', 'w')as f1:
    i = 0
    while i < len(temp):
        f1
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值