一种安卓APK文件的分类加密方法及系统与流程

文档序号:14653890发布日期:2018-06-08 22:38阅读:302来源:国知局
一种安卓APK文件的分类加密方法及系统与流程
本发明涉及手机应用
技术领域
,尤其涉及一种安卓APK文件的分类加密方法及系统。
背景技术
:目前在安卓系统中运行的APP,普遍安全性较差。android虚拟机运行系统脱胎于java虚拟机运行原理,可被随时反编译;即使进行了混淆如果进行仔细的研究分析,还是有被破解的可能性;市场上可见的APP加密技术都是基于一套加密方法,也就是说每个APP都使用相同的加密方案;这种加密方案无非继续在加密算法上进行深入研究,但是一旦被找到解密方法。所有APP都会被破解。一定的环境和情况下,会存在一定的风险。技术实现要素:本发明提供一种安卓APK文件的分类加密方法及系统,旨在提高安卓应用程序的安全性,加大破解公司旗下所有产品的难度。为了实现上述目的,本发明提出一种安卓APK文件的分类加密方法,包括:获取待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值;将上述常量计数器中固定值和程序使用方法数的固定值与完成训练的KNN分类算法中的训练集数据进行比较,确定待分类安卓应用程序APK所属类型;根据所属类型确定对应已知加密方法,对该安卓应用程序APK进行加密。优选地,在所述获取待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值步骤之前,还包括:利用多种已知安卓应用程序APK的常量计数器中固定值、程序使用方法数的固定值和已知类型,输入KNN分类算法进行训练,构建训练集。优选地,所述的将上述常量计数器中固定值和程序使用方法数的固定值与完成训练的KNN分类算法中的训练集数据进行比较,确定待分类安卓应用程序APK所属类型,具体如下:将待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值作为测试样本数据输入训练好的KNN分类算法;获取测试样本数据与各训练集数据之间的距离;按照距离递增关系进行排序;选取距离最小的K个点;确定前K个点所在类别的出现频率;将前K个点中出现频率最高的类别作为测试数据的预测分类,即确定待分类安卓应用程序APK所属类型。优选地,所述的距离采用欧氏距离或曼哈顿距离。优选地,所述的K,取值为小于等于20的整数。本发明还提出一种安卓APK文件的分类加密系统,包括:数据获取模块:用于获取待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值,并发送至应用程序类型分类模块;应用程序类型分类模块:用于将待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值,与完成训练的KNN分类算法中的训练集数据进行比较,确定待分类安卓应用程序APK所属类型,并发送至加密模块;加密模块:用于根据所属类型确定对应已知加密方法,对该安卓应用程序APK进行加密。优选地,该系统还包括数据训练模块,用于利用多种已知安卓应用程序APK的常量计数器中固定值、程序使用方法数的固定值和已知类型,输入KNN分类算法进行训练,构建训练集。优选地,所述的应用程序类型分类模块,包括:数据输入模块:用于将待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值作为测试样本数据输入训练好的KNN分类算法,并发送至距离获取模块;距离获取模块:用于获取测试样本数据与各训练集数据之间的距离,并发送距离处理模块;距离处理模块:用于按照距离递增关系进行排序,并发送至筛选模块;筛选模块:用于选取距离最小的K个点,并发送至频率确定模块;频率确定模块:用于确定前K个点所在类别的出现频率,并发送至类别确定模块;类别确定模块:用于将前K个点中出现频率最高的类别作为测试数据的预测分类,即确定待分类安卓应用程序APK所属类型。本发明提出的一种安卓APK文件的分类加密方法及系统,本发明对不同类型的APP使用了不同的加密技术这样会保障整个公司的产品不至于在一个APK被破解的情况下,各个都被破解;在理论情况下,如果要破解所有产品,需要将每个不同的算法都破解、极大的增加了成本;增加了安全性;同时如果对KNN分类方法中的K进行不同的取值,可以进一步实现在一定范围内动态加密,也就是说随着K的取值不同,某个APK的预测类型会变动。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。图1为本发明一种实施例中安卓APK文件的分类加密方法流程图;图2为本发明一种实施例中常量池中的数据区示意图;图3为本发明一种实施例中dex文件示意图;图4为本发明一种实施例中步骤S00流程图;图5为本发明一种实施例中步骤S20具体流程图;图6为本发明一种实施例中安卓APK文件的分类加密系统结构框图;图7为本发明一种实施例中数据训练模块结构框图;图8为本发明一种实施例中应用程序类型分类模块结构框图;本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。本发明提出一种安卓APK文件的分类加密方法;本发明一种优选实施例中,参考图1所示,包括:S10、获取待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值;本发明实施例中,由于安卓虚拟机和java本质上原理相同,其中同样包含java虚拟机运行的常量池,而常量池中的数据区是这样的结构,如图2所示;其中,constant_pool_count为常量池计数器,常量池计数器里面统计了本应用程序使用到的常量总量;常量池中会存放两大类常量:字面量和符号引用,所述的字面量是文波字符串、声明为final的常量值等;所述的符号引用是类和接口的完全限定名、字段的名称和描述符、方法的名称和描述符;利用上的常量池计数器可唯一标识这个应用程序(APK),由于每个种类型的程序在开发时复杂程序不同、程序设计水平的差异;会导致每种类型的APK在开发出来之后可以使用常量计数器这个标识进行一个简单的分类;本发明为了应用K-邻近算法,增加了第二个标识,从安卓开发工具在最后打包编译的过程可以统计到整个APK使用的方法数,因此APK使用到的方法数是可以获取的,而且每个应用理论上都不同;本发明一种优选实施例中,分类如表1所示:表1程序名称常量池计数器的值程序使用方法数程序类型值程序类型文字标识微信43547484851IM即时通讯QQ54332423431IM即时通讯V平台2566884561IM即时通讯王者荣耀77887130492游戏淘宝90843640993电商某APP544332455353??根据以表1可以看出,现在如果出现某APP可以获取到此APP的常量计数器中固定值和程序使用方法数的固定值(获取方法为现有的公知常识,此处不进行阐述);S20、将上述常量计数器中固定值和程序使用方法数的固定值与完成训练的KNN分类算法中的训练集数据进行比较,确定待分类安卓应用程序APK所属类型;KNN分类算法是通过测量不同特征值之间的距离进行分类,具体思路为:如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别;KNN算法中,所选择的邻居都是已经正确分类的对象,该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别;S30、根据所属类型确定对应已知加密方法,对该安卓应用程序APK进行加密。本发明实施例中,根据不同的APK类型分别对不同的APK应用加密算法;假设加密部分为安卓APK执行文件dex中的数据区;dex文件主要包含了一些头部校验信息和数据索引,如图3所示;本发明一种优选实施例中,在步骤S10之前,参考图4所示,还包括:S00、利用多种已知安卓应用程序APK的常量计数器中固定值、程序使用方法数的固定值和已知类型,输入KNN分类算法进行训练,构建训练集。本发明实施例中,已知的安卓应用程序例如表1和表2中的微信、QQ、V平台、王者荣耀、淘宝;本发明一种优选实施例中,KNN算法通过依据k个对象中占优的类别进行决策,而不是单一的对象类别决策,这两点就是KNN算法的优势;KNN算法在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,所述S20步骤,参考图5所示,具体如下:S201、将待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值作为测试样本数据输入训练好的KNN分类算法;S202、获取测试样本数据与各训练集数据之间的距离;本发明实施例中,在KNN中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离:欧式距离:曼哈顿距离:S203、按照距离递增关系进行排序;S204、选取距离最小的K个点;本发明实施例中,K取值为小于等于20的整数。S205、确定前K个点所在类别的出现频率;S206、将前K个点中出现频率最高的类别作为测试数据的预测分类,即确定待分类安卓应用程序APK所属类型。本发明一种优选实施例中,某APP预测结果如表2所示;表2本发明还提出一种安卓APK文件的分类加密系统;本发明一种优选实施例中,参考图6所示,包括:数据获取模块:用于获取待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值,并发送至应用程序类型分类模块;本发明实施例中,由于安卓虚拟机和java本质上原理相同,其中同样包含java虚拟机运行的常量池,而常量池中的数据区是这样的结构;其中常量池计数器里面统计了本应用程序使用到的常量总量;常量池中会存放两大类常量:字面量和符号引用,所述的字面量是文波字符串、声明为final的常量值等;所述的符号引用是类和接口的完全限定名、字段的名称和描述符、方法的名称和描述符;利用上的常量池计数器可唯一标识这个应用程序(APK),由于每个种类型的程序在开发时复杂程序不同、程序设计水平的差异;会导致每种类型的APK在开发出来之后可以使用常量计数器这个标识进行一个简单的分类;本发明为了应用K-邻近算法,增加了第二个标识,从安卓开发工具在最后打包编译的过程可以统计到整个APK使用的方法数,因此APK使用到的方法数是可以获取的,而且每个应用理论上都不同;应用程序类型分类模块:用于将待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值,与完成训练的KNN分类算法中的训练集数据进行比较,确定待分类安卓应用程序APK所属类型,并发送至加密模块;KNN分类算法是通过测量不同特征值之间的距离进行分类,具体思路为:如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别;KNN算法中,所选择的邻居都是已经正确分类的对象,该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别;加密模块:用于根据所属类型确定对应已知加密方法,对该安卓应用程序APK进行加密。本发明实施例中,根据不同的APK类型分别对不同的APK应用加密算法;假设加密部分为安卓APK执行文件dex中的数据区;本发明一种优选实施例中,参考图7所示,该系统还包括数据训练模块,用于利用多种已知安卓应用程序APK的常量计数器中固定值、程序使用方法数的固定值和已知类型,输入KNN分类算法进行训练,构建训练集。本发明一种优选实施例中,参考图8所示,所述的应用程序类型分类模块,包括:数据输入模块:用于将待分类安卓应用程序APK的常量计数器中固定值和程序使用方法数的固定值作为测试样本数据输入训练好的KNN分类算法,并发送至距离获取模块;距离获取模块:用于获取测试样本数据与各训练集数据之间的距离,并发送距离处理模块;本发明实施例中,在KNN中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离:欧式距离:曼哈顿距离:距离处理模块:用于按照距离递增关系进行排序,并发送至筛选模块;筛选模块:用于选取距离最小的K个点,并发送至频率确定模块;频率确定模块:用于确定前K个点所在类别的出现频率,并发送至类别确定模块;类别确定模块:用于将前K个点中出现频率最高的类别作为测试数据的预测分类,即确定待分类安卓应用程序APK所属类型。以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的
技术领域
均包括在本发明的专利保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1