产学研创新服务平台(开云优惠体育网页版入口)
专利申请类型:发明专利;专利名称:一种应用于Android虚拟框架的加密系统及方法
专利类型:发明专利
专利申请号:CN202410293031.4
专利申请(专利权)人:浙江数孪开云优惠体育网页版入口有限公司
权利人地址:浙江省衢州市柯城区白云街道芹江东路288号1幢1615室(自主申报)
专利发明(设计)人:汤祺,张文,崔浩亮
专利摘要:本发明公开了一种应用于Android虚拟框架的加密系统及方法,属于移动安全和访问控制领域。本发明通过提前对APK进行加固再安装,尽管框架中的恶意应用可以访问加固应用的沙箱目录,但是经过加固后的应用在文件系统(沙箱目录、SDcard)中不存在完整的DEX、SO文件,对应用的代码以及虚拟框架内应用的数据进行了良好的保护;应用保存的重要的数据(密码等重要隐私数据)经由加固模块增加了数据透明加解密功能,让恶意应用对其它应用进行静态分析以及获取隐私数据时,获取的都将是一些密文,难以破解其中的含义,极大程度上保护了应用用户的隐私数据,对应用的数据进行了良好的保护。
主权利要求:
1.一种应用于Android虚拟框架的加密系统,其特征在于,包括:与Android虚拟框架中的系统服务模拟器连接的加固模块,所述加固模块包括移动端加固子模块和运行防御子模块;
所述移动端加固子模块利用所述系统服务模拟器读取目标应用的APK文件路径,提取可执行文件并对所述可执行文件进行加固处理,将加固好的APK路径传给所述系统服务模拟器,完成加固APK应用的安装;
所述运行防御子模块用于在所述加固APK应用运行时进行实时防御,所述加固APK应用的运行基于所述系统服务模拟器实现;
所述移动端加固子模块包括文件预处理单元、代码加密单元和加固代码集成单元;
所述文件预处理单元从所述系统服务模拟器中读取所述目标应用的APK文件路径,从所述目标应用的APK中提取所述可执行文件,对所述可执行文件进行反编译,得到基础信息;
所述代码加密单元从加密代码段特征库中提取要保护的函数的地址区间,生成密钥,对对应的代码段进行加密;
所述加固代码集成单元将经过加密处理后的代码集成到新的可执行文件中,并且将新的可执行文件重新集成到原APK中,形成加固后的APK,将加固后的APK路径传给系统服务模拟器中的安装函数,完成加固APK应用的安装。
2.根据权利要求1所述的一种应用于Android虚拟框架的加密系统,其特征在于,所述运行防御子模块包括代码解密单元、完整性验证单元、数据加解密策略植入单元;
所述代码解密单元用于所述加固APK应用加载被保护的可执行文件时,重组解密密钥,对被保护的可执行文件完成解密;
所述完整性验证单元用于对被保护的可执行文件进行完整性验证,判断调用目标函数的代码是否合法;
所述数据加解密策略植入单元用于根据完整性验证结果对Android虚拟框架拦截的libc.so函数进行加密或解密处理。
3.根据权利要求2所述的一种应用于Android虚拟框架的加密系统,其特征在于,所述数据加解密策略植入单元用于对Android虚拟框架拦截的libc.so函数进行加密或解密处理,包括:当拦截的libc.so函数为写函数时,通过加密密钥对写的内容进行加密;
当拦截的libc.so函数为读函数时,通过解密密钥对读取的加密内容进行解密。
4.一种应用于Android虚拟框架的加密方法,其特征在于,包括以下步骤:S1.利用系统服务模拟器读取目标应用的APK文件路径,提取可执行文件并对所述可执行文件进行加固处理,将加固好的APK路径传给所述系统服务模拟器,完成加固APK应用的安装;
S2.在所述加固APK应用运行时进行实时防御,所述加固APK应用的运行基于所述系统服务模拟器实现;
所述S1包括:
从所述系统服务模拟器中读取所述目标应用的APK文件路径,从所述目标应用的APK中提取所述可执行文件,对所述可执行文件进行反编译,得到基础信息;
从加密代码段特征库中提取要保护的函数的地址区间,生成密钥,对对应的代码段进行加密;
将经过加密处理后的代码集成到新的可执行文件中,并且将新的可执行文件重新集成到原APK中,形成加固后的APK,将加固后的APK路径传给系统服务模拟器中的安装函数,完成加固APK应用的安装。
5.根据权利要求4所述的一种应用于Android虚拟框架的加密方法,其特征在于,所述S2包括:所述加固APK应用加载被保护的可执行文件时,重组解密密钥,对被保护的可执行文件完成解密;
对被保护的可执行文件进行完整性验证,判断调用目标函数的代码是否合法;
根据完整性验证结果对Android虚拟框架拦截的libc.so函数进行加密或解密处理。
6.根据权利要求5所述的一种应用于Android虚拟框架的加密方法,其特征在于,根据完整性验证结果对Android虚拟框架拦截的libc.so函数进行加密或解密处理,包括:当拦截的libc.so函数为写函数时,通过加密密钥对写的内容进行加密;当拦截的libc.so函数为读函数时,通过解密密钥对读取的加密内容进行解密。 说明书 : 一种应用于Android虚拟框架的加密系统及方法技术领域[0001] 本发明涉及移动安全和访问控制领域,更具体的说是涉及一种应用于Android虚拟框架的加密系统及方法。背景技术[0002] Android虚拟框架是一种可以模拟并控制Android应用运行时环境的应用,它可以做到管理内部应用程序对操作系统,网络传输和文件等资源的访问权限控制,从而自定义每个应用的权限获取。虚拟框架主要是通过使用Java反射、代理、Hook等技术对Android系统的FrameWork层进行虚拟化,给应用程序提供虚拟的执行环境,在这样的虚拟空间内任意的安装、启动和卸载APK,这一切都与外部隔离,如同一个沙盒,APK无需在外部安装,这样就可以达到应用双开的目的,而VirturalApp是一种目前市场上一种常用的Android虚拟机框架,它是一个标准的沙盒,或者说“虚拟机”,提供了一整套内部与外部的隔离机制,包括但不限于(文件隔离/组件隔离/进程通讯隔离),简单的说内部就是一个“完全独立的空间”,在其内部不仅可以“双开”,独特的多用户模式支持用户在内部无限多开同一个应用,带来大大的方便性的同时,由于其在Android系统的层面上内部的应用并没有真正隔离开来,所以也为其带来了安全隐患。[0003] APK加固技术通常是首先使用APK反编译工具对应用程序的APK文件进行反编译,得到smali文件和Manifest文件,从而通过壳模板对原APK进行加壳;将经过加壳后的APK重新打包,通过解压缩工具对新的APK文件进行解压缩,得到新DEX文件,对旧DEX文件进行加密处理,再与新DEX文件、so文件的签名值和加密密钥一起得到bin文件,然后将bin文件放入asserts目录下,和加过壳的smali文件、修改过的Manifest文件一起重打包并签名得到加固后的APK文件。在运行时,对加过壳的APK通过二次加载的方式运行起原APK之后,并采用Hook技术将挖空加密的内容还原回来。[0004] 虚拟框架的核心设计在于App虚拟化引擎,使用Framework层Hook技术拦截了系统服务的Binder和系统调用。当虚拟框架内应用启动或运行时,会调用系统服务比如AMS,PMS等,但是这些服务被容器所接管,容器会模拟系统服务的功能,对调用的参数进行修改并执行安全检查,然后再去调用真正的系统服务,并将结果返回给调用服务的容器。[0005] 目前已有很多关于虚拟框架以及其安全性问题的研究,在虚拟框架内应用的存储隔离和部分权限隔离的概念比较:,甚至没有做过沙箱隔离机制(Android设备上的所有应用都有一个放置在沙箱中的文件目录,将文件保存到沙箱中可以阻止其他应用的访问。内置存储沙箱目录的全路径为:/data/data/<包名>/,外置存储的沙箱目录为:SDCard/Android/data/<包名>/),针对这种安全性问题一种可行的攻击方式是,安装在虚拟框架中的恶意应用可通过提权攻击来修改、获取框架内其他应用的代码或文件,达到攻击框架内其他应用的目的。[0006] 因此,提出一种应用于Android虚拟框架的加密系统及方法,进一步增强虚拟框架内应用的代码以及数据的安全性,是本领域技术人员亟需解决的问题。发明内容[0007] 有鉴于此,本发明提供了一种应用于Android虚拟框架的加密系统及方法,弥补虚拟框架无沙箱隔离机制带来的安全风险,以进一步保护框架内应用的代码以及数据。[0008] 为了实现上述目的,本发明采用如下技术方案:[0009] 一方面,本发明公开了一种应用于Android虚拟框架的加密系统,包括:与Android虚拟框架中的系统服务模拟器连接的加固模块,所述加固模块包括移动端加固子模块和运行防御子模块;[0010] 所述移动端加固子模块利用所述系统服务模拟器读取目标应用的APK文件路径,提取可执行文件并对所述可执行文件进行加固处理,将加固好的APK路径传给所述系统服务模拟器,完成加固APK应用的安装;[0011] 所述运行防御子模块用于在所述加固APK应用运行时进行实时防御,所述加固APK应用的运行基于所述系统服务模拟器实现。[0012] 优选的,所述移动端加固子模块包括文件预处理单元、代码加密单元和加固代码集成单元;[0013] 所述文件预处理单元从所述系统服务模拟器中读取所述目标应用的APK文件路径,从所述目标应用的APK中提取所述可执行文件,对所述可执行文件进行反编译,得到基础信息;[0014] 所述代码加密单元从加密代码段特征库中提取要保护的函数的地址区间,生成密钥,对对应的代码段进行加密;[0015] 所述加固代码集成单元将经过加密处理后的代码集成到新的可执行文件中,并且将新的可执行文件重新集成到原APK中,形成加固后的APK,将加固后的APK路径传给系统服务模拟器中的安装函数,完成加固APK应用的安装。[0016] 优选的,所述运行防御子模块包括代码解密单元、完整性验证单元、数据加解密策略植入单元;[0017] 所述代码解密单元用于所述加固APK应用加载被保护的可执行文件时,重组解密密钥,对被保护的可执行文件完成解密;[0018] 所述完整性验证单元用于对被保护的可执行文件进行完整性验证,判断调用目标函数的代码是否合法;[0019] 所述数据加解密策略植入单元用于根据完整性验证结果对Android虚拟框架拦截的libc.so函数进行加密或解密处理。[0020] 优选的,所述数据加解密策略植入单元用于对Android虚拟框架拦截的libc.so函数进行加密或解密处理,包括:[0021] 当拦截的libc.so函数为写函数时,通过加密密钥对写的内容进行加密;[0022] 当拦截的libc.so函数为读函数时,通过解密密钥对读取的加密内容进行解密。[0023] 另一方面,本发明还公开一种应用于Android虚拟框架的加密方法,包括以下步骤:[0024] S1.利用所述系统服务模拟器读取目标应用的APK文件路径,提取可执行文件并对所述可执行文件进行加固处理,将加固好的APK路径传给所述系统服务模拟器,完成加固APK应用的安装;[0025] S2.在所述加固APK应用运行时进行实时防御,所述加固APK应用的运行基于所述系统服务模拟器实现。[0026] 优选的,所述S1包括:[0027] 从所述系统服务模拟器中读取所述目标应用的APK文件路径,从所述目标应用的APK中提取所述可执行文件,对所述可执行文件进行反编译,得到基础信息;[0028] 从加密代码段特征库中提取要保护的函数的地址区间,生成密钥,对对应的代码段进行加密;[0029] 将经过加密处理后的代码集成到新的可执行文件中,并且将新的可执行文件重新集成到原APK中,形成加固后的APK,将加固后的APK路径传给系统服务模拟器中的安装函数,完成加固APK应用的安装。[0030] 优选的,所述S2包括:[0031] 所述加固APK应用加载被保护的可执行文件时,重组解密密钥,对被保护的可执行文件完成解密;[0032] 对被保护的可执行文件进行完整性验证,判断调用目标函数的代码是否合法;[0033] 根据完整性验证结果对Android虚拟框架拦截的libc.so函数进行加密或解密处理。[0034] 优选的,根据完整性验证结果对Android虚拟框架拦截的libc.so函数进行加密或解密处理,包括:[0035] 当拦截的libc.so函数为写函数时,通过加密密钥对写的内容进行加密;[0036] 当拦截的libc.so函数为读函数时,通过解密密钥对读取的加密内容进行解密。[0037] 经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种应用于Android虚拟框架的加密系统及方法,通过提前对APK进行加固再安装,尽管框架中的恶意应用可以访问加固应用的沙箱目录,但是经过加固后的应用在文件系统(沙箱目录、SDcard)中不存在完整的DEX、SO文件,对应用的代码以及虚拟框架内应用的数据进行了良好的保护;应用保存的重要的数据(密码等重要隐私数据)经由加固模块增加了数据透明加解密功能,让恶意应用对其它应用进行静态分析以及获取隐私数据时,获取的都将是一些密文,难以破解其中的含义,极大程度上保护了应用用户的隐私数据,对应用的数据进行了良好的保护。附图说明[0038] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。[0039] 图1为本发明的加密系统应用于Android虚拟框架的整体架构图。具体实施方式[0040] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0041] 一方面,本发明实施例公开了一种应用于Android虚拟框架的加密系统,参考图1,该系统应用于APP虚拟化引擎,APP虚拟化引擎通过框架的虚拟化层实现了一个Android虚拟框架,使其虚拟框架内部的第三方APP实际是跑在虚拟化引擎的AndroidFramework之上。虚拟化引擎已将其第三方APP的Binder通信和系统调用通信请求进行拦截,通过虚拟化层实现对第三方APP的全面控制。[0042] 具体地,该系统包括:与Android虚拟框架中APP虚拟化引擎的系统服务模拟器连接的加固模块,加固模块包括移动端加固子模块和运行防御子模块。[0043] 移动端加固子模块主要负责从目标应用中获取native代码的可执行文件并且对可执行文件的加固处理,包括文件预处理单元、代码加密单元和加固代码集成单元。[0044] 进一步,文件预处理单元负责从系统服务模拟器中的VPMS服务中读取到目标应用的APK文件路径,将ELF文件从目标应用的APK中提取出来,并且对ELF文件通过IDA进行反编译,得到函数符号表等基础信息。[0045] 代码加密单元从加密代码段特征库中,提取要保护的函数的地址区间,生成密钥,对代码段进行加密。[0046] 加固代码集成单元将经过加密处理后的代码等代码一同集成到新的ELF文件中,并且将该ELF文件重新集成到原APK中,形成加固后的APK,最后将加固后的APK路径传给VPMS服务中的安装函数,完成加固APK应用的安装。[0047] 加固APK应用的安装使得文件系统(沙箱目录、SDcard)中不存在完整的DEX、SO文件,对应用的代码以及虚拟框架内应用的数据进行了良好的保护(这是由于DEX和SO文件中代码内容已加密,所以即使攻击者获取到对应文件,文件已做了加密,也无法进行分析)。[0048] 运行防御子模块主要负责运行时APK的保护工作,将在加固APK运行时被加载,对加固APK提供运行过程中的native代码的实时防御。[0049] 进一步,运行防御子模块包括代码解密单元、完整性验证单元、数据加解密策略植入单元;[0050] 代码解密单元负责在加固APK加载被保护的ELF文件时,重组解密密钥,并对ELF文件完成解密。[0051] 完整性验证单元负责在native代码执行过程中,调用被保护函数时,通过签名对比方式,对ELF文件完整性进行检查,判断调用目标函数的代码是否合法。[0052] 已知APP虚拟化引擎负责拦截第三方应用系统函数调用,数据加解密策略植入单元则负责根据完整性验证结果对Android虚拟框架中的APP虚拟化引擎拦截的libc.so函数进行加密或解密处理。[0053] 具体地,在调用目标函数的代码合法的情况下,拦截的是libc.so的写函数(write函数)时,通过加密密钥对于写的内容进行加密,实现文件以密文的形式保存在沙箱环境的私有空间中,以此来弥补虚拟框架无沙箱隔离机制带来的安全风险;[0054] 拦截的是libc.so的读函数(read函数)时,通过解密密钥对于读取的加密内容进行解密,确保文件明文在应用内存中,实现第三方应用正常运行。[0055] 另一方面,本发明还公开一种应用于Android虚拟框架的加密方法,适用于上述加密系统,该方法包括以下步骤:[0056] S1.利用系统服务模拟器读取目标应用的APK文件路径,提取可执行文件并对可执行文件进行加固处理,将加固好的APK路径传给系统服务模拟器,完成加固APK应用的安装;[0057] S2.在加固APK应用运行时进行实时防御,加固APK应用的运行基于系统服务模拟器实现。[0058] 优选的,S1包括:[0059] 从系统服务模拟器中读取目标应用的APK文件路径,从目标应用的APK中提取可执行文件,对可执行文件进行反编译,得到函数符号表等基础信息,函数符号表主要用于进行对应代码加密;[0060] 从加密代码段特征库中提取要保护的函数的地址区间,生成密钥,对对应的代码段进行加密;[0061] 将经过加密处理后的代码集成到新的可执行文件中,并且将新的可执行文件重新集成到原APK中,形成加固后的APK,将加固后的APK路径传给系统服务模拟器中的安装函数,完成加固APK应用的安装。[0062] 优选的,S2包括:[0063] 加固APK应用加载被保护的可执行文件时,重组解密密钥,对被保护的可执行文件完成解密;[0064] 对被保护的可执行文件进行完整性验证,判断调用目标函数的代码是否合法;[0065] 根据完整性验证结果对Android虚拟框架拦截的libc.so函数进行加密或解密处理。[0066] 优选的,根据完整性验证结果对Android虚拟框架拦截的libc.so函数进行加密或解密处理,包括:[0067] 当拦截的libc.so函数为写函数时,通过加密密钥对写的内容进行加密;[0068] 当拦截的libc.so函数为读函数时,通过解密密钥对读取的加密内容进行解密。[0069] 在另一具体实施例中,本发明提出的一种应用于Android虚拟框架的加密方法表述如下:[0070] S10.将待安装的APK读取到虚拟框架的加固模块中,经过加固模块加固后,再将加固好的APK路径传给安装函数;[0071] S20.解析AndroidManifest.xml拿到APK内部信息,包括组件信息,权限信息等,并将这些信息序列化到磁盘和内存中,以备打开时调用;[0072] S30.准备应用在虚拟框架应用沙箱环境中的私有空间,并且复制一些必要的APK和solibs;[0073] S40.最后通知前台安装完成。[0074] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。[0075] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
专利地区:浙江
专利申请日期:2024-03-14
专利公开日期:2024-11-29
专利公告号:CN118094597B