基于多特征融合和集成学习的涉诈 APP 智能识别分析系统
第十三届“中国软件杯”大学生软件设计大赛 A 组赛题 A2 -涉诈APP智能识别分析系统 落榜作品。
采用前后端分离架构,前端基于 vue-element-admin 二次开发,当前版本后端基于 Django 框架开发(比赛版本使用的是 Flask 框架)。
我们基于 Django 框架和 vue-element-admin,开发了一套能将 APK 从采集到分析至可视化分析和研判信息的全过程自动化的 web 系统。该系统不仅能将 APK 的基本信息(如 APP 名称、包名、版本、大小)、权限列表、四大组件、签名证书、通联地址等信息提取并可视化呈现,还能基于集成学习模型研判 APK 的类别(涉黄、涉赌、涉诈、黑灰产、正常)。
- AppAnalysisSystem:项目后端文件夹
- AppAnalysisSystem-web:项目前端文件夹
-
Python 3.9.7
-
MySQL 8.4.0
-
Node 16.5.1
-
JDK 1.8(必须)
-
SDK
注:建议多下几个版本的 API 以扩大兼容性,防止使用本系统时出现意外错误。
SDK 安装后测试:
# cmd窗口输入 adb若正常回显,则说明安装配置成功。
-
雷电模拟器最新版
如果电脑曾经安装了其他版本的 JDK,即使切换到 JDK 1.8,在使用本系统时,仍然会出现由于 JDK 版本不匹配而产生的问题。
具体表现为:测试多个 APK 时,在系统首页中,签名证书那一项的 MD5 和 有效期 字段总为空。因为非 JDK 1.8 版本,如 JDK 11,使用 JDK 内置 keytool 工具解析的 APK 签名证书,在格式上有所不同。
一种较为有效的解决方法:方法。
-
进入后端目录,AppAnalysisSystem/AppAnalysisSystem;
-
找到 apktool 文件夹,右键,选择”复制文件地址“;
-
添加环境变量:进入 Windows 系统设置 → 搜索”查看高级系统设置“ → 点击”环境变量“ → 找到系统变量“Path” → 点击“编辑” → 点击“新建” → 输入上一步复制的 apktool 文件地址 → 保存;
-
验证环境变量是否配置成功:
# cmd窗口 apktool如果正常回显,说明安装成功。
-
进入 MySQL 命令行工具;
-
检查 client 字符集:
show variables like'character_set_%';; -
如果
character_set_client不是utf8mb4,则输入set names utf8mb4;; -
导入后端项目中的 mysql.sql 文件:
source <path-to-mysql.sql>;。 -
更改项目相关配置:进入后端项目文件夹,找到 AppAnalysisSystem/AppAnalysisSystem/settings.py,将数据库用户名和密码替换。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'app-analysis-system', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 'root', } }
启动模拟器 → 点击“设置” → 其他设置 → ROOT权限 → 开启 → 重启模拟器。
# 进入前端目录
cd AppAnalysisSystem-web
# 安装依赖
npm install
# 启动前端
npm run dev# 进入后端目录
cd AppAnalysisSystem
# 安装依赖
pip install -r requirements.txt
# 启动后端
python manage.py runserver 0.0.0.0:8000-
启动雷电模拟器,完全启动成功后在 cmd 窗口输入
adb devices,确保命令的结果为如下格式:List of devices attached emulator-5554 device即存在设备且设备状态不是
offline,否则,多输入几次adb devices。下图为
offline的情况: -
启动后端。
-
启动前端。
-
在浏览器输入
http://localhost:8080/,即可使用本系统。
使用本系统时请不要打开 VPN 工具。
前端基于 vue-element-admin 二次开发,因为它本身是一个仓库,不好一起放上来,所以打包成了压缩包。
作品还有很多可以改进和完善的地方,目前相当于只是做了一个壳出来。
可优化的点如下:
-
整个前端。做成数据可视化平台的样子,而不是像现在这样的管理系统。
-
增加黑白名单配置和展示功能。如果采集的 APK 不在数据库的名单中,则可自动向数据库里增加这个 APK 的条目,并且能够在前端增删改查和展示数据库中 APK 名单。
-
图片涉黄检测模型自己写一个。当初花了很长时间找的一个比较满意的开源模型,结果无法集成到系统中使用,原因无法得知。也尝试过购买商用接口,但单张图片的检测时间太长了,无法接受,所以最好的方法就是自己写一个模型。
-
研判模型改进。系统中使用的研判模型的精确度实在太低了,如下:
-
特征提取和特征工程改进。关于特征提取,自认为已经做得挺好了。这一块是我做的,参考了很多文献,基本上能提的都提出来了,印象中只用 API 调用情况和 small 字节码分析没有做,可能还有一些动态特征?特征工程的话,怎么编码、保留哪些特征都是可以改进的,当然要配合研判模型一起做。
-
尝试做文本语义类别划分。这是当初想要做的点,但似乎技术难度比较大就搁置了。就是将静态存在于 APK 反编译后的文件中的所有字符串,加上从 APK 图片中 OCR 识别出来的字符串,先做一个预处理,然后做标签划分。
⚠本仓库已停止维护!
现在看到的代码是在比赛版本上改进过的,但是文书中没有对改进进行同步更新,还是比赛时的版本。
比赛数据集为已按照五个类别整理好的 APK 文件,总共 684 个(gamble涉赌 67| sex涉黄 145| scam涉诈 145| black黑灰产 140| normal正常 187)。Issue 中的分享链接已失效!且可能由于安全因素有些文件不支持分享。如有需要,请联系 [email protected] 。
最后,感谢蒋老师、袁同学、谭同学和两个研究生学长,以及曾经努力的自己🎉。
Copyright©2024 JCYT










