System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及软件测试技术,尤其涉及变异测试、android隐私泄露和测试集生成。
技术介绍
1、近年来,android系统是最热门的移动终端系统,许多开发者基于该系统开发出大量的应用程序,但与此同时android应用程序中的隐私泄露问题也日益凸显。针对这一问题,许多研究者就如何检测和预防android程序中的隐私泄露展开研究,出现了像flowdroid、susi等检测android程序中是否存在隐私泄露的工具。
2、但是这些研究在进行结果验证时,对于测试集往往是从android应用商店或者大型数据集随机选取,当下缺少针对隐私泄露研究的测试集,不能充分说明和验证测试工具的性能。变异测试通过程序变异来生成测试集,可以通过少量的代码变动生成多个测试程序,简单高效地产生含有隐私泄露的android程序。
3、生成的测试集对于隐私泄露相关研究存在以下几个方面的帮助:
4、1、作为隐私泄露检测工具的测试集。生成的测试程序均包含隐私泄露这一缺陷,研究者可直接根据检测结果改进研究,不必考虑待测程序本身不存在隐私泄露这一缺陷的可能。
5、2、评估隐私泄露检测工具的检测能力。生成的测试程序基本包含各种类型的隐私泄露,可用于对隐私泄露工具的检测能力进行评估。
技术实现思路
1、本专利技术给出了一种基于变异测试的android隐私泄露测试集的生成方法,将可以获取隐私信息的android程序变异为包含隐私泄露的android程序,作为隐私泄露检测工具的测试集
2、1、一种基于变异测试的android隐私泄露测试集生成方法,其特征在于,该方法包括以下步骤:
3、步骤a、对输入的apk进行解压获取androidmanifest.xml配置文件,并将apk通过soot处理转化为jimple形式的中间代码;
4、步骤b、基于中间代码以及隐私方法库,对各类中的方法进行隐私源分析。隐私方法库以类名和方法名的形式,存储android系统中获取隐私数据的方法,隐私方法库中的部分方法如表1所示。对比赋值语句调用的方法与隐私方法库中的方法,判断被赋值变量是否是隐私数据;
5、步骤c、对方法中存在的隐私源进行传播路径分析。隐私源的传播路径包括隐私源在方法内的传递路径以及隐私源通过组件间通信的方式传播到其他组件的路径;
6、步骤d、结合各方法的传播路径,生成应用程序中整体的隐私变量传播路径,基于传播路径得到程序中可以进行变异操作的语句位置;
7、步骤e、选择不同的变异算子在可变异语句处对中间代码进行变异操作;
8、表1隐私方法库中的部分方法
9、
10、步骤f、将变异后的中间代码通过soot转换回java形式并打包为apk文件作为输出结果。
11、2、根据权利要求1所述的方法,其特征在于,步骤c的具体内容如下:
12、步骤c1、若函数存在隐私源,判断隐私源的变量类型,若隐私源为全局变量,则在全局隐私变量表中记录该变量所属类名以及变量名;
13、步骤c2、确定方法中局部变量与隐私源的关系,若方法中的局部变量使用了隐私源进行定义,或者局部变量为类对象且该对象内部使用隐私源赋值,则局部变量也是隐私变量;
14、步骤c3、分析方法内部的组件间通信情况,若存在通过方法调用、intent、sharedpreferences等通信机制将隐私源的数据传递到其他方法中的情况,记录相应的传递信息,包括作为发送方的信息和作为接受方的信息;
15、步骤c4、对方法内所有的隐私源进行变量存活分析,得到各隐私源在方法中的定义位置以及失效位置。
16、3、根据权利要求1所述的方法,其特征在于,步骤d的具体内容如下:
17、步骤d1、若待处理方法被其他方法调用并传入隐私数据,将相应变量的存活分析结果与该方法的隐私变量存活分析结果合并;
18、步骤d2、若待处理方法能够获取正在传递中的intent、sharedpreferences等广播消息中的隐私数据,那么将相应变量的存活分析结果与该方法的隐私变量存活分析结果合并;
19、步骤d3、在隐私变量的存活周期内的语句都可以进行变异操作,但出于性能方面的考虑,选择以下四种语句进行变异操作:(1)隐私变量定义后的首条语句;(2)隐私变量生命周期结束或重新定义的前一条语句;(3)若存活周期内存在条件语句,则各条件分支的首条语句;(4)存活周期内的数据发送语句。根据以上的条件,对隐私变量的存活分析结果进行处理,标注可以进行变异操作的位置。
20、4、根据权利要求1所述的方法,其特征在于,步骤e的具体内容如下:
21、步骤e1、根据标注位置的类型选择相应的变异算子,变异算子的种类分为两大类,分别是插入类型的变异算子和替换类型的变异算子。
22、步骤e2、若选择插入类型的变异算子,那么还需选择泄露方向。泄露方向包括外部泄露以及内部泄露。外部泄露是指将隐私数据发送到设备之外,例如网络发送、短信发送,内部发送是指将数据打印或写入到设备内部,例如日志打印、写入本地文件。这些泄露方法均以类名和方法名的形式记录在泄露方法库中,隐私方法库的部分内容如表2所示。根据泄露方向的不同从泄露方法库中选择不同方法调用,将要泄露的变量作为调用的参数,组合为语句插入到相应位置完成变异。
23、表2泄露方法库中的部分方法
24、
25、步骤e3、替换类型的变异算子需要方法中存在d3中的第四种语句。通过选择隐私变量替换原数据发送语句中的变量即可完成变异操作。
本文档来自技高网...【技术保护点】
1.一种基于变异测试的Android隐私泄露测试集生成方法,其特征在于,该方法包括以下步骤:
2.根据权利要求1所述的方法,其特征在于,步骤C的具体内容如下:
3.根据权利要求1所述的方法,其特征在于,步骤D的具体内容如下:
4.根据权利要求1所述的方法,其特征在于,步骤E的具体内容如下:
【技术特征摘要】
1.一种基于变异测试的android隐私泄露测试集生成方法,其特征在于,该方法包括以下步骤:
2.根据权利要求1所述的方法,其特征在于,步骤c的具体内容...
【专利技术属性】
技术研发人员:王雅文,谢东东,金大海,朱东明,
申请(专利权)人:北京邮电大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。