当前位置: 首页 > 专利查询>南京大学专利>正文

一种针对安卓动态加载的隐私泄露检测的方法技术

技术编号:20680552 阅读:26 留言:0更新日期:2019-03-27 18:45
本发明专利技术公开了一种针对安卓动态加载的隐私泄露检测的方法,包括步骤如下:步骤10:输入待检测的安卓应用,将应用逆向成为字节码文件;步骤11:对字节码文件进行静态分析,获取可以到达动态加载的控制流路径;步骤12:对待检测的应用进行插桩,插入获取动态加载文件和用于记录动态加载信息的代码;步骤13:根据控制流路径中的事件及约束,生成动态执行所输入的事件,并让插桩后的应用执行这些事件来触发动态加载;步骤14:动态执行后,得到动态加载的外部文件及动态加载的信息,使用数据流分析方法对敏感数据在路径和动态加载的方法中进行追踪;步骤15:得到最终的针对动态加载隐私泄露检测结果。

【技术实现步骤摘要】
一种针对安卓动态加载的隐私泄露检测的方法
本专利技术涉及一种针对安卓动态加载的隐私泄漏检测方法,利用静态分析,动态执行和污点分析的结合对利用动态加载进行对隐私泄漏行为进行检测,从而更好的保护安卓用户的隐私。
技术介绍
安卓动态加载目前安卓中很常用的一种技术,使程序在运行时加载外部资源,动态的修改程序行为,同时还可以减少安装包体积,方便开发者维护更新等。目前动态加载技术已经得到了广泛的应用,但同时恶意应用也会利用它隐藏恶意行为。静态分析是在不运行程序的前提下进行代码的分析工作,对代码的行为进行分析和理解,静态分析常用的技术包括词法分析、语法分析、调用图分析等。本专利技术利用静态分析对从安卓应用逆向出的字节码文件进行分析,抽取出可以到达动态加载行为的路径,而且保存路径上的信息;而动态分析则是通过执行程序,对程序动态的行为进行分析。动态分析可以保证分析结果的准确性,但需要大量的输入测试,开销比较大,本专利技术利用静态分析得到的信息生成相应的时间输入来动态的触发动态加载行为,从而减少动态执行的开销。Soot是目前最主流的Java字节码分析工具,目前Soot主要用于对Java应用和Android应用进行分析、插桩、优化、可视化等多种操作,是Java和Android分析领域最著名和权威的工具之一。本专利技术利用Soot进行了Android应用的分析与插桩。污点分析是目前最主流的检测隐私泄漏的方法,它是信息流分析技术的一种实践方法,该技术通过对系统中敏感数据进行标记,继而跟踪标记数据在程序中的传播,以检测系统安全问题。其中FlowDroid是目前最常用的污点分析工具,我们在FlowDroid为基础实现了对隐私数据在应用App与动态加载代码之间的追踪。
技术实现思路
鉴于上述问题,本专利技术旨在提供一个针对通过安卓动态加载机制所隐藏的隐私泄露的检测方法,该方法结合了传统静态分析和动态分析的技术,解决了原有安卓分析方法对于动态加载所引发问题的无法很好处理的缺陷,从而提高安卓应用隐私泄露的准确性,更好的保护安卓用户的安全。本专利技术是通过以下的技术方案实现的:一种针对安卓动态加载的隐私泄露检测的方法,其特征在于,包括如下步骤:步骤10:输入待检测的安卓应用,将应用逆向成为字节码文件;步骤11:对字节码文件进行静态分析,获取可以到达动态加载的控制流路径;步骤12:对待检测的应用进行插桩,插入获取动态加载文件和用于记录动态加载信息的代码;步骤13:根据控制流路径中的事件及约束,生成动态执行所输入的事件,并让插桩后的应用执行这些事件来触发动态加载;步骤14:动态执行后,得到动态加载的外部文件及动态加载的信息,使用数据流分析方法对敏感数据在路径和动态加载的方法中进行追踪;步骤15:得到最终的针对动态加载隐私泄露检测结果;其中步骤10中利用开源工具对安卓应用文件进行逆向,实现过程包括:步骤20:使用Apktool工具对安卓App进行解包,得到安卓App的资源文件;步骤21:使用dex2jar工具对dex文件反编译为jar包文件;其中步骤11中利用Android静态分析获取可以到达动态加载的控制流路径,实现过程包括:步骤30:根据Manifest.xml文件中配置信息,识别安卓应用的Component组件信息;步骤31:将安卓组件的生命周期函数以及组件中的响应事件函数作为静态分析的入口点,进行调用图分析;步骤32:首先,以反射调用invoke方法作为分析的目标点,得到到达反射调用的路径集合reflectPaths;步骤33:然后,判断reflectPaths中的路径是否包含动态加载的初始化调用;步骤34:筛选出包含动态加载调用模式的路径dexPaths,则我们将dexPaths认为是到达动态加载调用的路径集合;步骤35:将dexPaths中每条路径上的控制流rCF和约束rCon作为中间结果保存下来,为后续分析执行作准备;并提取dexPaths中相关的响应事件序列,作为步骤13中动态执行的事件;其中步骤12中,对待检测的应用中的特定位置进行插桩,实现过程包括:步骤40:在DexClassLoader初始化语句后插入代码,用于保存动态加载的外部文件,以及记录加载的文件路径;步骤41:在loadClass语句后插入代码,用于记录被加载的类名;步骤42:在getMethod语句后插入代码,用于记录被加载的方法名;其中步骤13中,根据控制流路径中的事件及约束,生成动态执行所输入的事件,并让插桩后的应用动态执行这些事件,实现过程包括:步骤50:首先,对步骤11中提取的路径上的约束rCon进行求解,求解出事件的输入值;步骤51:获取步骤11中保存的路径上的安卓触发事件序列;步骤52:利用ADB工具按照事件序列依次执行事件,执行事件时,为需要输入值的事件提供步骤50求解出的值;步骤53:在动态执行事件之后,可以触发动态加载的位置,步骤12中插入的代码会将动态加载的相关信息进行保存;其中步骤14中,实现了一种面向路径的污点分析方法,在应用路径与动态加载调用方法之间对隐私数据进行追踪,实现过程包括:步骤60:首先,利用步骤11中提取的路径控制流rCF,从路径的入口点开始进行数据流分析,对隐私数据进行污点传播;步骤61:当在路径上分析到动态加载调用时,获取步骤13中动态执行所保存的动态加载相关信息;步骤62:基于FlowDroid实现的污点分析工具FlowDroid-M对动态加载方法进行污点分析,FlowDroid-M扩展了FlowDroid的功能,利用动态加载相关信息可以实现在应用控制流路径与外部方法之间对隐私数据的追踪;步骤63:在FlowDroid-M分析结束后,返回控制流路径继续进行步骤60对路径上的数据流分析。有益效果:本专利技术的针对安卓动态加载的隐私泄露检测的方法,主要特点是可以对安卓动态加载所引发的隐私泄露问题进行更好的检测,解决了传统分析工具的一些问题,从而更好的保护安卓用户的隐私。附图说明图1本专利技术实施例的针对动态加载的隐私泄露检测方法示意图。图2本专利技术实施例的逆向生成文件的目录结构图。图3本专利技术实施例的安卓动态加载模式的实例示意图。图4本专利技术实施例的代码插桩的实现示意图。图5本专利技术实施例的面向路径污点分析的过程流程图。具体实施方式以下结合附图和具体实施例对本专利技术作进一步详细阐述。本专利技术方法工作流程如图1-图5所示。图1所示为本方法实施的整体结构和工作原理。本方法的目的是提供一个针对通过安卓动态加载机制所隐藏的隐私泄露的检测方法,该方法结合了传统静态分析和动态分析的技术,解决了原有安卓分析方法对于动态加载所引发问题的无法很好处理的缺陷,从而提高安卓应用隐私泄露的准确性,更好的保护安卓用户的安全。如图1所示,本专利技术方法包括步骤:步骤10:输入待检测的安卓应用,将应用逆向成为字节码文件;步骤11:对字节码文件进行静态分析,获取可以到达动态加载的控制流路径;步骤12:对待检测的应用进行插桩,插入获取动态加载文件和用于记录动态加载信息的代码;步骤13:根据控制流路径中的事件及约束,生成动态执行所输入的事件,并让插桩后的应用执行这些事件来触发动态加载;步骤14:动态执行后,得到动态加载的外部文件及动态加载的信息,使用数据流分析方法对敏感数据在路径和动态加载的方法本文档来自技高网
...

【技术保护点】
1.一种针对安卓动态加载的隐私泄露检测的方法,其特征在于,包括如下步骤:步骤10:输入待检测的安卓应用,将应用逆向成为字节码文件;步骤11:对字节码文件进行静态分析,获取可以到达动态加载的控制流路径;步骤12:对待检测的应用进行插桩,插入获取动态加载文件和用于记录动态加载信息的代码;步骤13:根据控制流路径中的事件及约束,生成动态执行所输入的事件,并让插桩后的应用执行这些事件来触发动态加载;步骤14:动态执行后,得到动态加载的外部文件及动态加载的信息,使用数据流分析方法对敏感数据在路径和动态加载的方法中进行追踪;步骤15:得到最终的针对动态加载隐私泄露检测结果。

【技术特征摘要】
1.一种针对安卓动态加载的隐私泄露检测的方法,其特征在于,包括如下步骤:步骤10:输入待检测的安卓应用,将应用逆向成为字节码文件;步骤11:对字节码文件进行静态分析,获取可以到达动态加载的控制流路径;步骤12:对待检测的应用进行插桩,插入获取动态加载文件和用于记录动态加载信息的代码;步骤13:根据控制流路径中的事件及约束,生成动态执行所输入的事件,并让插桩后的应用执行这些事件来触发动态加载;步骤14:动态执行后,得到动态加载的外部文件及动态加载的信息,使用数据流分析方法对敏感数据在路径和动态加载的方法中进行追踪;步骤15:得到最终的针对动态加载隐私泄露检测结果。2.根据权利要求1所述的针对安卓动态加载的隐私泄露检测的方法,其特征在于,其中步骤10中利用开源工具对安卓应用文件进行逆向,实现过程包括:步骤20:使用Apktool工具对安卓App进行解包,得到安卓App的资源文件;步骤21:使用dex2jar工具对dex文件反编译为jar包文件。3.根据权利要求1所述的针对安卓动态加载的隐私泄露检测的方法,其特征在于,其中步骤11中利用Android静态分析获取可以到达动态加载的控制流路径,实现过程包括:步骤30:根据Manifest.xml文件中配置信息,识别安卓应用的Component组件信息;步骤31:将安卓组件的生命周期函数以及组件中的响应事件函数作为静态分析的入口点,进行调用图分析;步骤32:首先,以反射调用invoke方法作为分析的目标点,得到到达反射调用的路径集合reflectPaths;步骤33:然后,判断reflectPaths中的路径是否包含动态加载的初始化调用;步骤34:筛选出包含动态加载调用模式的路径dexPaths,则我们将dexPaths认为是到达动态加载调用的路径集合;步骤35:将dexPaths中每条路径上的控制流rCF和约束rCon作为中间结果保存下来,为后续分析执行作准备;并提取dexPaths中相关的响应事件序列,作为步...

【专利技术属性】
技术研发人员:张天潘敏学杨宇飞
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1