一种基于iOS Method Swizzling技术的数据隔离系统和方法技术领域
本发明涉及iOS移动应用开发领域,尤其涉及一种基于iOS Method
Swizzling技术的数据隔离系统和方法。
背景技术
现有的iOS应用的数据读写方式都是没有经过加密的,通过某些平台可以看
到应用里面的文件从而造成数据泄密,即使是加密也是要针对每一个存储的文
件进行加密,非常繁琐,往往会导致最后忘记哪些加密,哪些没有解密。
发明内容
本发明的目的在于提供一种基于iOS Method Swizzling技术的数据隔离系
统和方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于iOS Method Swizzling技术的数据隔离系统,其特征在于,包括
数据加密模块和方法替换模块;
所述数据加密模块即DataEncryption,简称为DE模块,所述方法替换模块
即MethodsReplace,简称为MR模块;
所述DE模块实现对数据的AdvancedEncryptionStandard加密,所述MR模块
实现对所需要的方法进行方法替换并修改。
一种基于iOS Method Swizzling技术的数据隔离方法,包括以下步骤:
S1,所述MR模块通过Method Swizzling技术替换系统方法
writeToFile:atomically:的IMP和自定义方法hook_writeToFile:atomically:
的IMP;
S2,所述DE模块将所述自定义方法hook_writeToFile:atomically:的
NSData类型的数据Adata加密成NSData类型数据Bdata;
S3,将所述数据Bdata调用所述系统方法writeToFile:atomically:存入文
件中;
S4,所述MR模块通过Method Swizzling技术替换系统方法
initWithContentsOfFile:的IMP和自定义方法hook_initWithContentsOfFile:
的IMP;
S5,将所述自定义方法hook_initWithContentsOfFile:传递的参数还原成
所述NSData类型数据Cdata;
S6,调用DE模块,将所述数据Cdata解密成所述NSData类型数据Ddata;
S7,将所述数据Ddata调用所述系统方法initWithContentsOfFile:返回。
优选的,S1具体步骤包括:
S11,所述MR模块通过method_getImplementation()函数获取到所述系统方
法writeToFile:atomically:的IMP;
S12,所述MR模块自定义一个所述自定义方法
hook_writeToFile:atomically:,并通过系统函数method_getImplementation()
获取所述自定义方法hook_writeToFile:atomically:的IMP;
S13,通过系统函数class_replaceMethod()来交换所述系统方法
writeToFile:atomically:的IMP和所述自定义方法hook_
writeToFile:atomically:的IMP。
优选的,S4具体步骤包括:
S41,所述MR模块通过method_getImplementation()函数获取到所述系统方
法initWithContentsOfFile:的IMP;
S42,自定义一个所述自定义方法hook_initWithContentsOfFile:,并通过
method_getImplementation()函数获取该方法IMP;
S43,最后通过class_replaceMethod()来交换所述系统方法
initWithContentsOfFile:的IMP和所述自定义方法
hook_initWithContentsOfFile:的IMP。
优选的,S5具体步骤包括:
S51,获取自定义方法hook_initWithContentsOfFile:的参数Path;
S52,根据所述参数Path,调用所述系统方法initWithContentsOfFile:得
到所述数据Cdata。
本发明的有益效果是:本发明提供一种可以对数据自动加密解密的方案,
不需写入大量的代码,就可以对存入文件的数据进行加密,在使用的时候可以
自动解密,不需要开发人员重复加密解密的过程,即可完成对数据的保护,加
密之后的文件通过第三方工具即使找到了存储的文件,也会因为文件加密过而
无法读取文件的内容,在应用内部可以正常的使用文件的数据,达到数据隔离
的效果。
附图说明
图1是本发明中基于iOS Method Swizzling技术的数据隔离系统的运行图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本
发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解
释本发明,并不用于限定本发明。
一种基于iOS Method Swizzling技术的数据隔离系统,包括数据加密模块
和方法替换模块;
所述数据加密模块即DataEncryption,简称为DE模块,所述方法替换模块
即MethodsReplace,简称为MR模块;
所述DE模块实现对数据的AdvancedEncryptionStandard加密,所述MR模块
实现对所需要的方法进行方法替换并修改。
一种基于iOS Method Swizzling技术的数据隔离方法,包括以下步骤:
S1,所述MR模块通过Method Swizzling技术替换系统方法
writeToFile:atomically:的IMP和自定义方法hook_writeToFile:atomically:
的IMP;其中,S1具体步骤包括:S11,所述MR模块通过
method_getImplementation()函数获取到所述系统方法
writeToFile:atomically:的IMP;S12,所述MR模块自定义一个所述自定义方法
hook_writeToFile:atomically:,并通过系统函数method_getImplementation()
获取所述自定义方法hook_writeToFile:atomically:的IMP;S13,通过系统函
数class_replaceMethod()来交换所述系统方法writeToFile:atomically:的
IMP和所述自定义方法hook_writeToFile:atomically:的IMP。
S2,所述DE模块将所述自定义方法hook_writeToFile:atomically:的
NSData类型的数据Adata加密成NSData类型数据Bdata;
S3,将所述数据Bdata调用所述系统方法writeToFile:atomically:存入文
件中;
S4,所述MR模块通过MethodSwizzling技术替换系统方法
initWithContentsOfFile:的IMP和自定义方法hook_initWithContentsOfFile:
的IMP;其中,S4具体步骤包括:S41,所述MR模块通过
method_getImplementation()函数获取到所述系统方法
initWithContentsOfFile:的IMP;S42,自定义一个所述自定义方法
hook_initWithContentsOfFile:,并通过method_getImplementation()函数获
取该方法IMP;S43,最后通过class_replaceMethod()来交换所述系统方法
initWithContentsOfFile:的IMP和所述自定义方法
hook_initWithContentsOfFile:的IMP;
S5,将所述自定义方法hook_initWithContentsOfFile:传递的参数还原成
所述NSData类型数据Cdata;其中,S5具体步骤包括:S51,获取自定义方法
hook_initWithContentsOfFile:的参数Path;S52,根据所述参数Path,调用所
述系统方法initWithContentsOfFile:得到所述数据Cdata;
S6,调用DE模块,将所述数据Cdata解密成所述NSData类型数据Ddata;
S7,将所述数据Ddata调用所述系统方法initWithContentsOfFile:返回。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明提供一种可以对数据自动加密解密的方案,不需写入大量的代码,
就可以对存入文件的数据进行加密,在使用的时候可以自动解密,不需要开发
人员重复加密解密的过程,即可完成对数据的保护,加密之后的文件通过第三
方工具即使找到了存储的文件,也会因为文件加密过而无法读取文件的内容,
在应用内部可以正常的使用文件的数据,达到数据隔离的效果。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技
术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这
些改进和润饰也应视本发明的保护范围。