本技术涉及数据分析,特别是涉及一种程序识别方法和相关装置。
背景技术:
1、在软件工程技术发展迅速的当下,越来越多的程序被开发出来应用到人们的日常生活中,其中,部分异常程序的应用可能会干扰其它程序的正常应用,例如,对于游戏程序来说,存在开发者为了增强自己的游戏对象在游戏程序中的能力,开发相应的辅助程序来修改游戏程序中游戏对象的能力,或者通过辅助程序自动控制游戏程序中的游戏对象执行一系列高难度操作等。如果不对这部分程序进行管控,会导致使用正常程序的使用者的自身利益被损害,同时也会影响正常程序的发展。
2、在相关技术中,对于异常程序的识别主要是基于每一个程序的使用者在使用这些异常程序时,所产生的程序使用数据来实现,例如,在对于异常的游戏辅助程序进行识别时,可以收集玩家对象在游戏程序中操控游戏对象执行操作时所产生的数据,通过这些数据来分析玩家对象是否在游戏中执行了异常的游戏操作,从而来判断是否使用了异常的游戏辅助程序。
3、然而,相关技术中的程序识别方式需要针对每一个程序进行程序使用数据的获取,来逐一分析是否为异常程序,数据处理量较大,且数据获取的滞后性较强,从而导致程序识别的效率低下,容易给异常程序的传播带来传播时间,影响其他正常程序的发展和使用正常程序的使用对象体验。
技术实现思路
1、为了解决上述技术问题,本技术提供了一种程序识别方法,可以提高程序识别效率。
2、本技术实施例公开了如下技术方案:
3、第一方面,本技术实施例公开了一种程序识别方法,所述方法包括:
4、获取包括多个程序的程序集合,所述多个程序包括多个待识别程序和多个对应目标类型的样本程序,所述多个程序分别具有关联的程序信息,所述程序信息用于体现开发所对应程序的开发对象;
5、根据所述程序与所述程序信息之间的关联关系,生成所述程序集合对应的异构图,所述异构图中包括所述多个程序分别对应的第一类节点,以及所述多个程序分别对应的程序信息对应的第二类节点,所述第一类节点和所述第二类节点之间的连接标识的权重用于标识所述程序与所述程序信息之间的关联程度,相同程序信息在所述异构图中对应相同的第二类节点;
6、对所述异构图中的多个节点进行社区划分,确定所述异构图对应的多个节点社区,目标节点社区中所包括节点之间的连接标识总权重大于所述目标节点社区外的节点与所述目标节点社区所包括节点之间的连接标识总权重,且所述目标节点社区中任意两个节点可以通过连接标识构成的连接路径连接,所述目标节点社区为所述多个节点社区中的任意一个;
7、根据所述多个节点社区中各个节点社区所对应程序中所述样本程序的数量,确定所述多个节点社区中的待分析节点社区;
8、对所述待分析节点社区对应的待识别程序进行识别,确定对应所述目标类型的待识别程序。
9、第二方面,本技术实施例公开了一种程序识别装置,所述装置包括第一获取单元、生成单元、第一确定单元、第二确定单元和第三确定单元:
10、所述第一获取单元,用于获取包括多个程序的程序集合,所述多个程序包括多个待识别程序和多个对应目标类型的样本程序,所述多个程序分别具有关联的程序信息,所述程序信息用于体现开发所对应程序的开发对象;
11、所述生成单元,用于根据所述程序与所述程序信息之间的关联关系,生成所述程序集合对应的异构图,所述异构图中包括所述多个程序分别对应的第一类节点,以及所述多个程序分别对应的程序信息对应的第二类节点,所述第一类节点和所述第二类节点之间的连接标识的权重用于标识所述程序与所述程序信息之间的关联程度,相同程序信息在所述异构图中对应相同的第二类节点;
12、所述第一确定单元,用于对所述异构图中的多个节点进行社区划分,确定所述异构图对应的多个节点社区,目标节点社区中所包括节点之间的连接标识总权重大于所述目标节点社区外的节点与所述目标节点社区所包括节点之间的连接标识总权重,且所述目标节点社区中任意两个节点可以通过连接标识构成的连接路径连接,所述目标节点社区为所述多个节点社区中的任意一个;
13、所述第二确定单元,用于根据所述多个节点社区中各个节点社区所对应程序中所述样本程序的数量,确定所述多个节点社区中的待分析节点社区;
14、所述第三确定单元,用于对所述待分析节点社区对应的待识别程序进行识别,确定对应所述目标类型的待识别程序。
15、在一种可能的实现方式中,所述生成单元具体用于:
16、根据所述多个程序分别关联的程序信息,确定模板程序信息,所述模板程序信息用于体现所述多个程序分别关联的程序信息之间的共有信息特征;
17、生成所述多个程序分别对应的第一类节点和所述模板程序信息对应的目标第二类节点;
18、将所述目标第二类节点确定为所述多个程序分别关联的程序信息中,与所述模板程序信息之间的信息相似度大于相似度阈值的第一目标程序信息所对应的第二类节点;
19、根据所述第一目标程序信息与所述模板程序信息之间的信息相似度,确定所述目标第二类节点与所述第一目标程序信息所对应程序对应的第一类节点之间的目标连接标识的权重,所述目标连接标识的权重与所述第一目标程序信息和所述模板程序信息之间的信息相似度成正相关,且小于所述基准权重;
20、生成所述多个程序分别关联的程序信息中,与所述模板程序信息之间的信息相似度不大于相似度阈值的第二目标程序信息所对应的第二类节点,所述第二目标程序信息所对应的第二类节点与所述第二目标程序信息所对应程序对应的第一类节点之间连接标识的权重为所述基准权重。
21、在一种可能的实现方式中,所述生成单元具体用于
22、确定所述多个程序分别关联的程序信息之间的信息相似度;
23、生成所述多个程序分别对应的第一类节点和所述多个程序分别关联的程序信息对应的第二类节点,目标程序对应的第一类节点和所述目标程序所关联程序信息对应的第二类节点之间的连接标识的权重为基准权重;
24、根据第一程序信息和第二程序信息之间的相似度,确定所述第一程序信息对应的第二类节点与所述第二程序信息对应的第二类节点之间的目标连接标识的权重,所述目标连接标识的权重与所述相似度成正相关,且小于所述基准权重,所述第一程序信息和所述第二程序信息为所述多个程序所关联的程序信息中的任意两个程序信息。
25、在一种可能的实现方式中,所述连接标识用于连接第一目标程序对应的第一类节点和所述第一目标程序所关联程序信息对应的第二类节点,所述异构图中的连接标识具有相同的权重,所述第一目标程序为所述多个程序中的任意一个程序。
26、在一种可能的实现方式中,所述第一确定单元具体用于:
27、将所述多个节点确定为第1次划分对应的多个待划分社区分别对应的节点,不同节点对应的节点社区不同;
28、针对第i次划分,确定所述第i次划分对应的多个待划分社区中的两个相邻的待合并社区,所述两个相邻的待合并社区为所述第i次划分对应的多个待划分社区中的任意两个相邻的待划分社区中,所对应模块度增加值最大的两个相邻的待划分社区,两个相邻的待划分社区对应的模块增加度是指将两个相邻的待划分社区合并为一个待划分社区后,所述异构图对应的模块度的增加值,所述模块度用于体现所述异构图中,处于同一节点社区的多个节点之间的关联程度超出处于不同节点社区的多个节点之间的关联程度的超出程度,所述模块度与所述超出程度成正相关;
29、响应于所述两个相邻的待合并社区对应的模块度增加值大于0,将所述两个相邻的待合并社区合并为一个待划分社区;
30、将合并后所述异构图中对应的多个待划分社区确定为第i+1次划分对应的多个待划分社区;
31、响应于所述两个相邻的待合并社区对应的模块度增加值小于0,将所述第i次对应的多个待划分社区确定为所述异构图对应的多个节点社区。
32、在一种可能的实现方式中,待计算社区为所述异构图包括的多个社区中的任意一个,所述异构图对应的模块度是通过以下方式确定的:
33、确定所述待计算社区中的节点之间的节点标识所对应的第一总权重,以及确定所述待计算社区外的节点与所述待计算社区中的节点之间的节点标识所对应的第二总权重;
34、根据所述第一总权重超出所述第二总权重的超出程度,确定所述待计算社区对应的子模块度,所述子模块度与所述第一总权重超出所述第二总权重的超出程度成正相关;
35、将所述异构图包括的多个社区分别对应的子模块度之和确定为所述异构图对应的模块度。
36、在一种可能的实现方式中,所述第三确定单元具体用于:
37、运行所述待识别程序,获取所述待识别程序对应的第1层程序界面;
38、针对第j层程序界面,对所述第j层程序界面进行识别,确定所述第j层程序界面对应的交互控件;
39、通过触发所述第j层程序界面对应的交互控件,获取所述待识别程序对应的第j+1层程序界面;
40、响应于所述第j层程序界面不具有对应的交互控件,对前j层程序界面进行文本识别,得到所述前j层程序界面中包括的文本信息;
41、根据所述文本信息,确定所述待识别程序是否为对应所述目标类型的待识别程序。
42、在一种可能的实现方式中,所述装置还包括第二获取单元:
43、所述第二获取单元,用于获取所述目标类型对应的关键词集合,所述关键词集合中包括在对应所述目标类型的程序中出现频率大于频率阈值的多个关键词;
44、所述第三确定单元具体用于:
45、响应于所述文本信息中包括所述多个关键词中的任意一个或多个,确定所述待识别程序为对应所述目标类型的待识别程序。
46、在一种可能的实现方式中,所述第三确定单元具体用于:
47、通过所述目标类型对应的程序识别模型,根据所述文本信息,确定所述待识别程序是否为所述目标类型的待识别程序;
48、所述程序识别模型是通过如下方式训练得到的:
49、获取训练样本集合,所述训练样本集合包括多个待训练程序分别对应的样本程序类型和文本信息,所述样本程序类型包括所述目标类型;
50、将所述多个待训练程序分别作为目标待训练程序,通过初始程序识别模型,根据所述目标待训练程序对应的文本信息确定所述目标待训练程序对应的待定程序类型;
51、根据所述目标待训练程序对应的样本程序类型和所述待定程序类型之间的差异,调节所述初始程序识别模型的模型参数,得到所述程序识别模型。
52、在一种可能的实现方式中,所述第一获取单元具体用于:
53、获取初始程序集合,所述初始程序集合包括所述多个程序在内的多个初始程序;
54、确定所述多个初始程序分别对应的首次获取时刻,所述首次获取时刻是指获取过所对应初始程序的所有设备中,首个获取所对应初始程序的设备首次获取所对应初始程序的时刻;
55、将所对应首次获取时刻晚于预设时刻的多个初始程序确定为所述多个程序,得到所述程序集合。
56、在一种可能的实现方式中,所述多个程序分别关联的程序信息是通过以下方式确定的:
57、获取所述多个程序分别关联的初始程序信息,第二目标程序关联的初始程序信息中包括所述第二目标程序关联的程序信息,所述第二目标程序为所述多个程序中的任意一个;
58、确定所述第二目标程序关联的初始程序信息中的通用程序信息,所述通用程序信息不具有体现开发所对应程序的开发对象的能力;
59、将去除所述通用程序信息后,所述第二目标程序关联的初始程序信息确定为所述第二目标程序关联的程序信息。
60、在一种可能的实现方式中,所述多个程序具有分别对应的运行信息,所述运行信息用于体现所对应程序在运行时的运行方式;
61、所述异构图中还包括所述多个程序分别关联的运行信息对应的第三类节点,所述第一类节点和所述第三类节点之间的连接标识的权重用于标识所述程序与所述运行信息之间的关联程度,相同运行信息在所述异构图中对应相同的第三类节点。
62、在一种可能的实现方式中,所述第二确定单元具体用于:
63、将所述多个节点社区中,所对应程序中所述样本程序的数量占比大于占比阈值的节点社区确定为这所述待分析节点社区。
64、第三方面,本技术实施例公开了一种计算机设备,所述计算机设备包括处理器以及存储器:
65、所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
66、所述处理器用于根据所述程序代码中的指令执行第一方面中任意一项所述的程序识别方法。
67、第四方面,本技术实施例公开了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行第一方面中任意一项所述的程序识别方法。
68、第五方面,本技术实施例公开了一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行第一方面中任意一项所述的程序识别方法。
69、由上述技术方案可以看出,在进行程序识别时,本技术所获取的是程序所关联的程序信息,该程序信息用于体现开发所对应程序的开发对象,因此在程序开发完毕后,该程序信息就可以被获取。通常情况下,开发对象之间关联较为密切,所开发的程序之间的相似度也会较高,因此本技术先基于程序与程序信息之间的关联关系构建异构图,该异构图中包括多个程序分别对应的第一类节点,以及多个程序分别关联的程序信息对应的第二类节点,第一类节点和第二类节点之间的连接标识的权重用于标识程序和程序信息之间的关联程度,相同程序信息在异构图中对应相同的第二类节点,从而,通过该异构图中的节点和连接标识,可以基于多个程序所关联的程序信息中的重合部分来使多个程序之间产生关联,由于该程序信息体现的是程序的开发对象,因此程序之间的关联所体现出的为开发对象之间的关联。基于此,通过对异构图进行社区划分,可以将关联较为密切的程序划分到同一节点社区中,节点社区中所包括节点之间的连接标识总权重大于节点社区外的节点与节点社区所包括节点之间的连接标识总权重,即同一节点社区中的多个程序之间的关联程度要高于不同节点社区的多个程序之间的关联程度,从而可以找到开发对象之间关联较为密切的多个程序,即同一节点社区中的多个程序较为相似,因此,通过同一节点社区中目标类型程序的数量,可以判断该节点社区中的多个未知类型的待识别程序对应该目标类型的概率,从而可以确定出大概率会出现目标类型程序的待分析节点社区,通过对该待分析节点社区进行识别可以高效识别出对应该目标类型的程序。本技术在对程序进行识别时依赖的程序信息无需等待程序被应用即可获取,降低了数据获取所需的时间,同时基于异构图进行社区划分,可以精准缩小识别程序的范围,在进行程序识别时无需针对每一个程度都进行识别,在保障程序识别准确度的同时,提高了程序识别效率。