1. 数据准备阶段
软件爬取
恶意应用,待定,从开源项目获取,或者自己搞
非恶意应用:从应用市场爬取,不过目前看来,爬四五个就会被限制,爬虫代码如下
# coding=utf-8
import urllib
import requests
import re
import time
import socket
#timeout = 5
#socket.setdefaulttimeout(timeout)
from bs4 import BeautifulSoup
def parser_apks(self, count=30):
_root_url = "http://app.mi.com" # 应用市场主页网址
res_parser = {}
# 设置爬取的页面,从第一页开始爬取,第一页爬完爬取第二页,以此类推
page_num = 1
while count:
# 获取应用列表页面
wbdata = requests.get("http://app.mi.com/catTopList/27?page=" + str(page_num)).text
print("开始爬取第" + str(page_num) + "页")
# 解析应用列表页面内容
soup = BeautifulSoup(wbdata, "html.parser")
links = soup.find_all("a", href=re.compile("/details?"), class_="", alt="")
for link in links:
# 获取应用详情页面的链接
detail_link = urllib.parse.urljoin(_root_url, str(link["href"]))
package_name = detail_link.split("=")[1]
download_page = requests.get(detail_link).text
#解析应用详情页面
soup1 = BeautifulSoup(download_page, "html.parser")
download_link = soup1.find(class_="download")["href"]
#获取直接下载的链接
download_url = urllib.parse.urljoin(_root_url, str(download_link))
# 解析后会有重复的结果,通过判断去重
if download_url not in res_parser.values():
res_parser[package_name] = download_url
count = count - 1
if count == 0:
break
if count > 0:
page_num = page_num + 1
print("爬取apk数量为: " + str(len(res_parser)))
return res_parser
def craw_apks(self, count=30, save_path="./apk/"):
res_dic = parser_apks(count)
for apk in res_dic.keys():
print("正在下载应用: " + apk)
request = urllib.request.urlretrieve(res_dic[apk], save_path + apk + ".apk")
print("下载完成")
time.sleep(5) #等待一会
if __name__ == "__main__":
craw_apks(30)
IDE
android studio,打开并反编译一个apk,可以看到.xml文件的内容信息,使用的sdk,申请的权限信息等
Xposed使用教程
Xposed 插件开发之一: Xposed入门:https://blog.csdn.net/niubitianping/article/details/52571438
Xposed地址:https://github.com/rovo89/Xposed
Xposed框架实现Android中的Hook一个例子:https://www.jianshu.com/p/372630e37683
Xposed 的一个教程,从模拟器开始:https://juejin.im/entry/5900145b0ce463006146f26b
Android 神器 xposed 框架使用指南:https://blog.csdn.net/fuchaosz/article/details/53143216
xposed开发入门向之入门前准备工作 模拟器安装xposed框架:https://www.52pojie.cn/forum.php?mod=viewthread&tid=912109
Android Studio 3.0.1 编写 Xposed 插件入门记录:https://zhuanlan.zhihu.com/p/35003478
分析工具
DroidBox is developed to offer dynamic analysis of Android applications:https://github.com/pjlantz/droidbox
2. 特征工程
恶意特征
Android恶意软件特征及分类:http://www.voidcn.com/article/p-vmmybefx-cb.html
Android恶意软件检测研究与进展_彭国军:http://gb.oversea.cnki.net/KCMS/detail/detail.aspx?filename=WHDY201501003&dbcode=CJFD&dbname=CJFD2015
卿斯汉. Android安全研究进展[J].软件学报,2016, 27(1): 45-71.http://www.jos.org.cn/1000-9825/4914.html
QING Si-Han. Research Progress on Android Security[J]. Ruan Jian Xue Bao/ Journal of Software, 2016, 27(1): 45-71.http://www.jos.org.cn/1000-9825/4914.html
特征选择
常用特征选择算法综述:https://www.cnblogs.com/heaad/archive/2011/01/02/1924088.html
特征选择及mRMR算法解析:https://www.jianshu.com/p/04d965e35b6d
3. 算法模型
xgboost教程
XGBOOST参数解析与示例:https://www.cnblogs.com/wj-1314/p/9402324.html
XGBOOST从原理到实战二分类 、多分类:https://blog.csdn.net/HHTNAN/article/details/81079257
手把手教写出XGBoost实战程序:https://juejin.im/post/5a1bb29e51882531ba10aa49
机器学习XGBoost算法使用:http://irory.me/blog/16
XGBoost使用教程(纯xgboost方法):https://blog.csdn.net/u011630575/article/details/79418138
XGBoost和LightGBM对GBDT的改进:https://www.jianshu.com/p/4ead72443a58
基于聚类和XGboost算法的心脏病预测:http://www.c-s-a.org.cn/html/2019/1/6729.html
相关项目
微软恶意软件分类挑战,malware-detection:https://github.com/dchad/malware-detection
用机器学习进行恶意软件检测——以阿里云恶意软件检测比赛为例:https://xz.aliyun.com/t/3704 代码地址:https://github.com/Rman0fCN/ML_Malware_detect
天池比赛实践——阿里云安全恶意程序检测(基于机器学习算法XGBoost): https://blog.csdn.net/weixin_41065383/article/details/89175233
3 安装环境
Mac 安装 adb (Android调试桥):https://blog.csdn.net/soindy/article/details/71700745
Android模拟器环境中安装和删除应用程序:https://blog.csdn.net/lincyang/article/details/5794565
Android模拟器下安装APP报INSTALL_FAILED_NO_MATCHING_ABIS错误解决方案:https://blog.csdn.net/stemq/article/details/51502759
不同的cpu架构会有指令集兼容性的问题,导致软件安装的时候不成功,用android stdio安装的时候发现,arm架构的模拟器启动起来特别慢,有可能是android版本问题。
4. 相关研究
多维敏感特征的Android恶意应用检测:http://www.jsjkx.com/CN/10.11896/j.issn.1002-137X.2019.02.015
恶意软件识别方法研究与应用_陈维: http://cdmd.cnki.com.cn/Article/CDMD-10614-1017066685.htm
基于机器学习的高效恶意软件分类系统:http://blog.leanote.com/post/sixiao/%E8%AE%BA%E6%96%87
基于API序列特征和统计特征组合的恶意样本检测框架:http://jst.tsinghuajournals.com/CN/rhhtml/20180510.htm#outline_anchor_21
5. 一些检测网站
Hybrid Analysis 主要是静态和权限:https://www.hybrid-analysis.com/recent-submissions?filter=url&page=67&lang=zh