一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于卷积神经网络的微信小程序分类方法及系统

2022-11-30 10:37:34 来源:中国专利 TAG:


1.本发明属于软件技术领域,涉及移动应用的分类方法,具体涉及一种基于卷积神经网络的微信小程序分类系统及其方法。


背景技术:

2.移动设备正在全球范围内流行起来,一种新的移动计算范式——小程序正在激增。阿拉丁研究所(aladdin research institute)在2021年进行的一项调查显示,移动小应用程序的数量已经超过700万款,开发人员超过300万名,日活跃用户为4.5亿。随着小程序的逐步扩展,大多数用户都享受着它们带来的便利和由此带来的好处。
3.众多多样的小程序需要自动分析和分类,以帮助用户决定是否使用,如果决定使用,如何找到合适的小程序使用。例如,如果一个小应用程序包含许多广告促销,它可以被归类为“广告”。然而,现有的小程序应用商店并没有一个全面的类似android的应用商店分类机制。例如微信小程序仅分为教育类、游戏类、办公类三大类,无法准确描述每个小程序的功能。此外,小程序的不完善分类可能会造成用户隐私的侵犯,多个小程序可以在不向用户提供任何警告的情况下访问用户的位置。假设攻击者在游戏类别中开发了一个微信小应用程序;然后,他使用wx.getuserlocation的api。当用户发现小程序被标记为游戏时,他们并没有收到关于这种风险的警告。即使用户关闭了微信小应用程序,攻击者仍然可以实时访问用户的位置。此外,只有少数用户能够根据小程序的分类,准确推断出小程序的功能和权限。因此,应该对小应用进行更精确的分类,为用户提供更细粒度的信息。手工标记是一种传统的分类策略,但其速度慢且容易出错。而当前现有技术尚无法满足需求。


技术实现要素:

4.为解决上述问题,本发明提出了一种基于卷积神经网络的微信小程序分类方法及其系统,基于编译和抽象语法树实现,提取了微信小应用程序的静态特性,包括api和url;还提取了动态特征以利用沙箱和运行时监视技术;最后,基于上述特征设计了一个用于小程序分类的cnn分类模型,将微信小app的特征矩阵以图像的形式输入到cnn中来完成分类任务。本发明能够对微信小程序进行有效、准确、详细的分类,使用户更容易识别小程序功能。
5.为达到上述目的,本发明的技术方案如下:
6.基于卷积神经网络的微信小程序分类系统,包括反编译模块、动态特征提取模块、静态特征提取模块、特征预处理模块、深度学习模块;
7.所述反编译模块用于将多个微信压缩包文件合并,反编译成代码文件并发送至动态和静态特征提取模块;
8.所述动态特征提取模块用于在沙箱中运行小程序,记录动态特征并存储在数据库中;并记录了每个页面的访问频率,发送至静态特征提取模块;
9.所述静态特征提取模块用于从访问频率最高的页面代码中提取静态特征,为获得
的代码文件生成一个抽象语法树,遍历抽象语法树来提取微信小应用程序的api特征和url特征,并将api和url的数量存储在原生数据库中;
10.所述特征预处理模块用于对原生数据库中的缺失、重复、冗余和异常值特征数据进行处理,将数据转换成统一的格式,并存储在特征数据库中;
11.所述cnn深度学习分类模块,基于微信小程序中提取并预处理后的动态特征和静态特征,采用两个深度学习模型cnn进行训练和分类,最终得到分类结果。
12.进一步的,所述动态特征包括文件系统特征、网络流量特征和辅助特征。
13.进一步的,所述api特征通过以下过程提取:
14.从微信打开文档捕获api列表;
15.使用esprima库为小应用的每个json文件构建一个抽象语法树,并遍历所有抽象语法树;
16.当节点类型为函数调用且调用对象为wx时,对应的api值设置为1,由此构造微信小应用的api特征向量。
17.进一步的,所述url特征通过以下过程提取:
18.遍历抽象语法树来提取wx下的url参数;
19.请求节点,其中url被分为四个部分:主机名、路径名、文件名和参数,然后,使用skip-gram模型将url字符串转换为具有更紧凑表示的密集向量。
20.基于卷积神经网络的微信小程序分类方法,包括如下步骤:
21.步骤1,代码反编译模块自动反编译微信小应用程序的代码压缩包,并将源代码发送给动态和静态特征提取模块;
22.步骤2,动态特征提取模块首先运行小应用程序一端时间,然后将动态特性存储到数据库中,同时记录访问每个页面的频率,并将结果发送给静态特征提取模块;
23.步骤3,静态特征提取模块从属于最常访问页面的源代码中提取静态特性,并将原始静态特性写入数据库;
24.步骤4,数据预处理模块从数据库中提取原始特征进行预处理,针对缺失值、重复值或无法区分的常量值进行处理,根据mann-whiteny原理筛选出选择性最高的1300列特征作为最终的特征矩阵,然后输入到cnn分类器中;
25.步骤5,基于动态与静态特征分别训练一个cnn模型,用户输入的微信小程序经模型分类后得到两组标签,取可能性最高的两个标签作为最终分类结果。
26.进一步的,所述步骤2具体包括如下子步骤:
27.(1)首先捕获在启动该小程序前三分钟内,移动设备产生的cpu、内存以及网络特征;
28.(2)再在沙箱中启动微信小程序,并捕获启动后三分钟内产生的动态特征;
29.(3)从后台关闭微信小程序,并捕获小程序关闭后内三分钟的动态特征;
30.(4)将以上动态特征发送至动态特征数据库同时将各个页面的访问频率发送至静态特征提取模块。
31.进一步的,所述步骤3具体包括如下子步骤:
32.(1)用户指定反编译文件的存储目录以及入口页面;
33.(2)筛选出最常访问的五个页面,并构建抽象语法树;
34.(3)遍历抽象语法树提取微信小应用程序的api和url,并记录各api以及url的调用次数;
35.(4)将以上数据作为静态特征发送至静态特征数据库。
36.进一步的,所述步骤5中,基于用户输入进行分类生成最终的分类结果的过程包括如下步骤:
37.(1)用户在主界面搜索框输入待分类小程序的名称;
38.(1)系统从沙箱中启动该微信小程序,并将微信压缩包文件目录发送至反编译接口;
39.(2)从预处理模块取出该微信小程序的动态特征矩阵以及静态特征矩阵,并将其发送至训练好的cnn接口,得到最终的多分类结果;
40.(3)分类器将可能性最高的三个分类结果显示在用户界面,并给予建议性措施。
41.本发明的有益效果为:
42.1.本发明方案能够对微信小程序进行即时、准确的、详细的智能自动分类。
43.2.与现有的专注于单一功能的工作不同,我们的方法可以收集迷你应用的静态特征以及小程序实际运行过程中产生的动态特征,以确保特征提取的完整性。而现有的特征选择方案没有考虑显著性,导致分类速度慢,资源消耗过大。结合mann-whitney方法,我们的方法可以智能地选择最显著的特征进行训练,提高分类效率。
44.3.为了加快分类速度,采用特征选择方法降低特征的冗余度。本发明利用用户访问每个页面的频率,在动态特征提取中记录每个页面的访问次数,在静态特征提取中提取访问次数最多的页面,加速分类过程,将静态分析时间缩短到5s以下。本发明结合现有的动态检测方法,提取尽可能多的动态特征。评价结果表明,本发明的检测准确率达到93%以上,动态检测准确率达到96.5%,具有较强的竞争力。
45.4.本发明能够兼容大部分微信小程序,通过详细的分类,新的分类架构能够帮助用户更好地理解所选择的小程序,有助于用户决定是否使用目标小程序,从而保护他们的移动设备,并有效保护用户的隐私安全。
附图说明
46.图1为本发明提供的基于卷积神经网络的微信小程序分类系统架构示意图。
47.图2为基于静态特征的cnn模型。
48.图3为基于动态特征的cnn模型。
49.图4为系统主界面。
具体实施方式
50.以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
51.本发明首先提取微信小应用的特征,包括静态和动态特征。本发明设计了一个静态特征提取器,通过基于反编译和代码分析识别执行路径来提取api调用和url;同时,在小程序运行时检查cpu和内存开销、网络流量和电力消耗等动态特性。我们将静态和动态特征转换为特征矩阵,在cnn模型的设计中使用它们对微信小应用程序进行分类。将提取的线性
特征转化为二维特征矩阵。采用多层cnn模型,由局部小特征构建高级特征。
52.具体的,本发明提供了基于卷积神经网络的微信小程序分类系统,其架构如图1所示,包括反编译模块、动态特征提取模块、静态特征提取模块、特征预处理模块、深度学习模块。
53.大多数小程序的代码都是封闭式的,为了实现本发明方案,首先要获得小程序的代码文件。当用户第一次启动微信小程序时,模块包以wxapkg格式存储在micromsg/user/appbrand/pkg目录下。为了自动化的获取样本,我们设计了压缩包收集模块,它是一个自动点击脚本,用于解决微信小应用运行时自动获取压缩包的问题,该模块收集了18种1300微信小应用的压缩包,并保存在wxapkg数据库中。我们参考小程序的类别排名提取了目标小程序所有菜单页面下的函数调用。
54.反编译模块优化了现有的微信小程序反编译工具,现有的工具(如wxappunpacker)只能完成小包大小的小应用的反编译工作。例如,当微信小应用的包大小超过2mb时,工具将无法正常运行。针对wxapkg文件反编译问题,本发明对反编译工具进行优化,提高其对wxss文件中变量名的恢复能力,使其能够兼容多个包。该模块将多个微信压缩包文件合并,转换成用户可读可理解的代码文件并发送至动态和静态特征提取模块。
55.动态特征提取模块用于在沙箱中实际运行微信小程序,并收集记录小程序在此期间产生的动态行为特征。本模块记录小程序启动前三分钟、小程序启动后并正常运行三分钟以及停止运行后三分钟产生的行为数据,以确定完整的动态特征。记录每个页面的访问频率,以保证下一次静态特征提取能够快速进行。本模块记录的特征有:
56.1)文件系统特征:android内核运行一系列特殊的文件,这些文件存储在文件系统中。通过这些文档,用户可以查看当前运行进程影响的设备状态信息,包括cpu占用率、内存占用率、网络负载等资源消耗情况。这些数据来自/proc/stat、/proc/net/dev和/proc/meminfo。从cpu、内存、网络带宽等检测指标26类原始数据中提取动态特征向量。
57.2)网络流量特征:微信小程序在运行过程中,也有大量的网络流量,可以帮助识别小程序的类别。在avd上运行迷你应用程序以捕获这些特性,并使用tcp dump捕获小程序运行期间生成的pcap文件。使用pcap文件格式存储网络流特征,随后使用cicflowmeter框架将其转换为特征矩阵。cicflowmeter是一个网络流量生成器和分析器。包含80多个特性的网络流量用源ip地址和端口、目的ip地址和端口、协议类型5列表示。
58.3)辅助特征:为了充分获取微信小应用运行过程中的动态特征,利用开源的android动态特征提取框架(即androidapplyzer)提取额外的动态特征。例如耗电量等。
59.静态特征提取模块用于从访问频率最高的页面代码中提取静态特征。本模块为获得的代码文件生成一个抽象语法树。然后,它遍历抽象语法树来提取微信小应用程序的api和url,并将api和url的数量存储在数据库中。微信api(应用程序编程接口)描述了小程序如何与android内核交互,这对于执行任务至关重要,并提供了关于小程序行为的基本信息。此外,小程序使用的url(uniform resource location)也可以提高分类效率。api调用和url都被视为小程序的静态特性。因此,本模块提取的特征具体包括:
60.1)api特征:微信小应用提供一系列后端服务器https请求调用的api,帮助开发人员完成各种数据分析、管理、查询操作。api特性是预测迷你应用功能的好方法,例如,如果小程序的代码包含
61.wx.createrewardedvideoad,wx.createinterstitialad,wx.creategridad,wx.createcustomad和wx.createbannerad,它被归类为“广告”。如果它包含
62.wx.creategameportal,wa.creategameicon和wx.creategamebanner,它被归类为“游戏娱乐”。api的提取基于多级权限提取方法。首先,从微信打开文档捕获api列表。然后,使用esprima库为小应用的每个json文件构建一个抽象语法树,并遍历所有抽象语法树。当节点类型为函数调用且调用对象为wx时,对应的api值设置为1。由此构造了微信小应用的api特征向量。正则表达式不能用于提取api,因为反编译文件会有变量名冲突。例如,student的原始对象名可能在反编译后被压缩为wx,在这种情况下,student下面的方法将被错误地标识为微信api。
63.2)url特征:通过访问internet应用程序,可以利用知名网站的域名作为预测小程序类别的依据。因此,遍历抽象语法树来提取wx下的url参数。请求节点,其中url被分为四个部分:主机名、路径名、文件名和参数。然后,使用skip-gram模型将url字符串转换为具有更紧凑表示的密集向量。
64.特征预处理模块,用于将特征矩阵进行预处理后发送至分类器。这些模块生成的数据仍然包含很多缺失、重复、冗余和异常值。如果直接使用原始特征数据来训练模型,模型精度较低,损失较大。因此,该模块将数据转换成统一的格式,为模型训练做准备,并存储在特征数据库中。在获得微信小程序的特征集后,首先对缺失的值进行处理。例如,如果某个微信小程序的所有api特性都为空,那么这个小程序就会被直接删除。此外,如果一个小应用多次调用相同的api或url,相同的功能就会从功能列表中删除,以保持唯一性。为了处理数据集中的异常值,删除了包含数千个url调用的微信小应用程序的特性列表。最后,对特征列表进行规范化处理,删除特征列表中的空白字符。经过数据预处理,以统一的格式获得了微信小程序的特性列表,没有缺失值、重复值或无法区分的常量值。
65.经过数据预处理,仍然保留了2000多个特征。首先,选取低频特征。例如,小程序cps联盟使用https://p.mybei.cn/api完成交易支付;但是,在剩下的139个示例中没有出现这个url特性。因此,该低频特征被去除。但是,如果移除所有低频功能,小程序的有用功能,如新冠肺炎防控小程序也会被移除。其次,考虑了高频特征的选择。例如,api特性征wx.redirectto,频繁出现在各种跳转页面的示例中,但这样的功能对小程序的分类贡献不大。为了解决这一问题,我们提出了一种基于mann

whitney检验的低冗余静态特征选择方法,以及一种频率分布算法。mann-whitney是对独立样本进行的无正态要求的非参数检验,主要思想为:在决定是否要选择i特征时,首先假设第i特征在类别1、类别2中不存在分布偏差,如果统计量u小于给定阈值a=0.5,则接收原假设,反之拒绝原假设。首先根据特征i在两种样本的存在情况构造输入矩阵,i特征存在记为1,不存在则记为0。上述构造的两组独立样本n1,n2排秩,观测值为0分配秩,1,观测值为1分配秩2,求出两个样本秩的和r1,r2,计算mann-whitney统计量u的计算方法为u=min(r1-n(n 1)2,r2-m(m 1)2),通过mann-whitney得到存在分布偏差的特征,再采用频率分布来衡量分布偏差的程度。之后再计算特征i在两种样本间的频率分布比与平均频率分布e,若特征i的频率分布比小于阈值tmin或大于阈值tmax表明该特征在两种样本的分布有显著差异,可以加入特征集,若特征i的频率分布比位于阈值tmin与tmax之间,表明该特征的两种分布没有显著差异,此时再来判断平均频率分布是否小于阈值td,若小于阈值表明该特征是低频出现的非显著特征可以加入特
征集,若大于阈值表明该特征是高频出现的非显著特征即冗余特征可以剔除。根据以上方法筛选出选择性最高的1300列特征作为最终的特征矩阵。
66.cnn深度学习分类模块,采用两个深度学习模型cnn对微信小程序中提取的特征进行训练进行分类。在基于静态特征的cnn模型中,由于采用了一维卷积池化,所以特征矩阵的高度与样本数保持不变。在第一卷积层,使用32个滤波器将特征矩阵的深度转换为32。在第二层卷积层,64个滤波器将特征矩阵的深度转换为64。然后,在全连接层之前,使用一个扁平化层将64深度特征矩阵扁平化到1深度。最后,一个全连接层完成分类任务。批大小设为100,模型训练40轮。模型的总体结构如图2所示。如图3所示,在基于动态特征的cnn模型中,选择126个显著性高的特征来训练cnn模型。通过添加0,特性的数量增加到144个。然后将该特征向量变换为14
×
14的二维特征矩阵。通过两次卷积和池化操作提取矩阵的抽象特征。然后,扁平化层将三维数据转换为一维数据,然后输入到两个完全连接的层中。第一个完全连接的层有256个节点,而第二个有18个节点。第一卷积层滤波器个数为32个,卷积核大小为3
×
3。第一池化层使用2
×
2的最大滤波器,第二层使用64个大小为3
×
3的滤波器卷积核。第二层池化层的最大过滤大小为2
×
2。最后,利用全连通层和softmax层完成分类任务。本模块选取小程序中访问频率最高的页面代码进行训练,将上述模块获得的用户输入小程序的特征数据输入到预训练好的cnn模型中,动态cnn与静态cnn会分别输出一组微信小程序属于不同类别的概率。最后综合两个分类结果选取最高可能性的前两个类别作为最终的分类结果。
67.本发明还提供了基于卷积神经网络的微信小程序分类方法,包括如下步骤:
68.步骤1,代码反编译模块自动反编译微信小应用程序的代码压缩包,并将源代码发送给动态和静态特征提取模块;
69.步骤2,动态特征提取模块首先运行小应用程序大约3分钟,然后将原始的网络流量、内存、cpu等动态特性存储到数据库中,同时记录访问每个页面的频率,并将结果发送给静态分析器;本步骤具体包括如下子步骤:
70.(1)首先捕获在启动该小程序前三分钟内,移动设备产生的cpu、内存以及网络特征。
71.(2)再在沙箱中启动微信小程序,并捕获启动后三分钟内产生的动态特征。
72.(3)从后台关闭微信小程序,并捕获小程序关闭后内三分钟的动态特征。
73.(4)将以上动态特征发送至动态特征数据库同时将各个页面的访问频率发送至静态特征提取模块。
74.步骤3,静态特征提取模块从属于最常访问页面的源代码中提取静态特性,并将原始静态特性写入数据库;具体包括如下子步骤:
75.(1)用户指定反编译文件的存储目录以及入口页面。
76.(2)筛选出最常访问的五个页面,并构建抽象语法树。
77.(3)遍历抽象语法树提取微信小应用程序的api和url,并记录各api以及url的调用次数。
78.(4)将以上数据作为静态特征发送至静态特征数据库。
79.步骤4,数据预处理模块从数据库中提取原始特征进行预处理,针对缺失值、重复值或无法区分的常量值进行处理,根据mann-whiteny原理筛选出选择性最高的1300列特征
作为最终的特征矩阵,然后输入到cnn分类器中;
80.步骤5,基于预处理后的动态特征和静态特征进行cnn模型训练,根据用户每次输入小程序后产生的特征向量生成最终的分类结果。
81.基于用户输入进行分类的过程包括:
82.(1)用户在图4所示的主界面搜索框输入待分类小程序的名称。
83.(2)系统从沙箱中启动该微信小程序,并将微信压缩包文件目录发送至反编译接口。
84.(3)从预处理模块取出该微信小程序的动态特征矩阵以及静态特征矩阵,并将其发送至训练好的cnn接口,得到最终的多分类结果。
85.(4)分类器将可能性最高的三个分类结果显示在用户界面,并给予建议性措施。用户可以查看小程序分类结果,并决定是否继续使用该小程序。
86.我们在真实世界的测试台上对本发明系统的有效性进行了评估。除了cnn,我们还对比了gan(生成对抗网络),lstm(长短期记忆)和传统的机器学习算法在微信小程序的分类中的应用效果。评价结果表明,我们的cnn模型优于所有被测试模型。
87.需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献