一种基于iOSMethodSwizzling技术的数据隔离系统和方法

文档序号:10594491阅读:190来源:国知局
一种基于iOS Method Swizzling技术的数据隔离系统和方法
【专利摘要】本发明提供一种基于iOS Method Swizzling技术的数据隔离系统和方法,属于iOS移动应用开发领域。该数据隔离系统包括,数据加密模块和方法替换模块;该数据隔离方法主要包括以下步骤:S1,所述MR模块替换writeToFile:atomically:的IMP和hook_writeToFile:atomically:的IMP;S2,所述DE模块将所述hook_writeToFile:atomically:的NSData类型的数据Adata加密成NSData类型数据Bdata。
【专利说明】
一种基于1S Method Swizzling技术的数据隔离系统和方法
技术领域
[00〇1] 本发明涉及1S移动应用开发领域,尤其涉及一种基于1S Method Swizzling技术的数据隔离系统和方法。【背景技术】
[0002]现有的1S应用的数据读写方式都是没有经过加密的,通过某些平台可以看到应用里面的文件从而造成数据泄密,即使是加密也是要针对每一个存储的文件进行加密,非常繁琐,往往会导致最后忘记哪些加密,哪些没有解密。
【发明内容】
[00〇3]本发明的目的在于提供一种基于1S Method Swizzling技术的数据隔离系统和方法,从而解决现有技术中存在的前述问题。
[0004]为了实现上述目的,本发明采用的技术方案如下:
[0005]—种基于1S Method Swizzling技术的数据隔离系统,其特征在于,包括数据加密模块和方法替换模块;[00〇6]所述数据加密模块即DataEncrypt1n,简称为DE模块,所述方法替换模块即 MethodsReplace,简称为 MR 模块;[〇〇〇7] 所述DE模块实现对数据的AdvancedEncrypt1nStandard加密,所述MR模块实现对所需要的方法进行方法替换并修改。
[0008]—种基于1S Method Swizzling技术的数据隔离方法,包括以下步骤:
[0009]S1,所述MR模块通过Method Swi zz 1 ing技术替换系统方法wr i teToFi 1 e: atomically:的IMP和自定义方法hook_writeToFile:atomically:的IMP;
[0010]S2,所述DE模块将所述自定义方法hook_writeToFile:atomically:的NSData类型的数据Adata加密成NSData类型数据Bdata;[〇〇11 ]S3,将所述数据Bdata调用所述系统方法wri teToFi le: atomically:存入文件中;
[0012]S4,所述MR模块通过Method Swizzling技术替换系统方法 initWithContentsOfFile:的IMP和自定义方法hook_initWithContentsOfFile:的IMP;
[0013]35,将所述自定义方法11〇〇1<_;[11;^¥;[1:11(]〇1^61^8〇€?;[16:传递的参数还原成所述 NSData类型数据(Mata;[〇〇14] S6,调用DE模块,将所述数据Cdata解密成所述NSData类型数据Ddata;
[0015]S7,将所述数据Ddata调用所述系统方法initWithContentsOfFile:返回。
[0016]优选的,S1具体步骤包括:
[0017]SI 1,所述MR模块通过method_get Implementat1n ()函数获取到所述系统方法 writeToFile:atomically:的IMP;
[0018]S12,所述MR模块自定义一个所述自定义方法hook_writeToFile:atomically:,并通过系统函数method_get Implementat1n()获取所述自定义方法hook_wri teToFi le:atomically:的IMP;[〇〇19]513,通过系统函数(:138 8_代。130 6]\^1:110(1()来交换所述系统方法¥1';^61'〇?;[16:atomically:的IMP和所述自定义方法hook_writeToFile:atomically:的IMP。
[0020]优选的,S4具体步骤包括:[0021 ]541,所述]\?模块通过11161:110(1_861:11]^)1611161^31:;[〇11()函数获取到所述系统方法initWithContentsOfFile:的IMP;
[0022]S42,自定义一个所述自定义方法11〇〇1<_;[11;[1:?;[1:11(]〇1^61^8〇€?;[16:,并通过method_getImplementat1n()函数获取该方法IMP;[0〇23]S43,最后通过class_replaceMethod()来交换所述系统方法initWithContentsOfFile:的 IMP和所述自定义方法hook_initWithContentsOfFi le:的頂P〇[〇〇24]优选的,S5具体步骤包括:
[0025]551,获取自定义方法11〇〇1<_;[11;^?;[1:11(]〇1^61^8〇€?;[16:的参数?&1:11;
[0026]352,根据所述参数?81:11,调用所述系统方法;[11;[丨¥;[1:11(]〇11丨611丨8(^?;[16:得到所述数据(Mata。
[0027]本发明的有益效果是:本发明提供一种可以对数据自动加密解密的方案,不需写入大量的代码,就可以对存入文件的数据进行加密,在使用的时候可以自动解密,不需要开发人员重复加密解密的过程,即可完成对数据的保护,加密之后的文件通过第三方工具即使找到了存储的文件,也会因为文件加密过而无法读取文件的内容,在应用内部可以正常的使用文件的数据,达到数据隔离的效果。【附图说明】[0〇28]图1是本发明中基于1S Method Swizzling技术的数据隔离系统的运行图。【具体实施方式】[〇〇29]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本发明,并不用于限定本发明。[0〇3〇] —种基于1S Method Swizzling技术的数据隔离系统,包括数据加密模块和方法替换模块;[0〇31]所述数据加密模块即DataEncrypt1n,简称为DE模块,所述方法替换模块即 MethodsReplace,简称为 MR 模块;[〇〇32] 所述DE模块实现对数据的AdvancedEncrypt1nStandard加密,所述MR模块实现对所需要的方法进行方法替换并修改。[0〇33] —种基于1S Method Swizzling技术的数据隔离方法,包括以下步骤:
[0034] S1,所述MR模块通过Method Swi zz 1 ing技术替换系统方法wr i teToFi 1 e: atomically:的IMP和自定义方法hook_writeToFile:atomically:的IMP;其中,SI具体步骤包括:SI 1,所述MR模块通过method_getImplementat1n!;)函数获取到所述系统方法 writeToFile: atomically:的IMP; S12,所述MR模块自定义一个所述自定义方法hook_writeToFile:atomically:,并通过系统函数method_getImplementat1n()获取所述自定义方法11〇〇1^_¥1';^61'〇卩;[16:&七〇111;[〇&117:的1]\0);313,通过系统函数(31&88_代卩1&〇6]^也〇(1() 来交换所述系统方法writeToFile:atomically:的IMP和所述自定义方法hook_ writeToFile:atomically:的IMP〇
[0035]S2,所述DE模块将所述自定义方法hook_writeToFile: atomically:的NSData类型的数据Adata加密成NSData类型数据Bdata;
[0036]S3,将所述数据Bdata调用所述系统方法writeToFi le: atomically:存入文件中;[0〇37]S4,所述MR模块通过MethodSwizzling技术替换系统方法;[11;[價;^11〇01^61^8〇€卩;[16:的1]\0)和自定义方法110〇1^_;[11;[價;[也〇31^61^8〇€卩;[16:的1]\0);其中,S4具体步骤包括:S41,所述MR模块通过me thod_get Implementat1n ()函数获取到所述系统方法ini tWi thContentsOfFi le:的IMP ; S42,自定义一个所述自定义方法hook_ ;[11;^?;^11〇01^61^8〇€?;[16:,并通过1116也0(1_86七111^1611161^3七;[〇11()函数获取该方法頂?; S43,最后通过 class_replaceMe thod()来交换所述系统方法ini tWi thContentsOfFi le:的 IMP和所述自定义方法hook_initWi thContentsOfFi le:的 IMP;
[0038] S5,将所述自定义方法hook_initWi thContentsOfFi le:传递的参数还原成所述 NSData类型数据Cdata ;其中,S5具体步骤包括:S5 1,获取自定义方法hook_ initWithContentsOfFile:的参数Path ; S52,根据所述参数Path,调用所述系统方法 initWithContentsOfFile:得到所述数据 Cdata;[〇〇39] S6,调用DE模块,将所述数据Cdata解密成所述NSData类型数据Ddata;
[0040] S7,将所述数据Ddata调用所述系统方法initWithContentsOfFile:返回。[〇〇41]通过采用本发明公开的上述技术方案,得到了如下有益的效果:
[0042]本发明提供一种可以对数据自动加密解密的方案,不需写入大量的代码,就可以对存入文件的数据进行加密,在使用的时候可以自动解密,不需要开发人员重复加密解密的过程,即可完成对数据的保护,加密之后的文件通过第三方工具即使找到了存储的文件, 也会因为文件加密过而无法读取文件的内容,在应用内部可以正常的使用文件的数据,达到数据隔离的效果。
[0043]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
【主权项】
1.一种基于1S Method Swizzling技术的数据隔离系统,其特征在于,包括数据加密 模块和方法替换模块;所述数据加密模块即DataEncrypt 1n,简称为DE模块,所述方法替换模块即 MethodsReplace,简称为 MR 模块;所述DE模块实现对数据的AdvancedEncrypt1nStandard加密,所述MR模块实现对所需 要的方法进行方法替换并修改。2.—种基于1S Method Swizzling技术的数据隔离方法,其特征在于,包括以下步骤:S1,所述 MR 模块通过 Method Swizzling 技术替换系统方法 writ eToFile: atomically:的IMP和自定义方法hook_writeToFile:atomically:的IMP;32,所述0£模块将所述自定义方法11〇〇1^_¥1';^61'〇?;[16:3七〇111;[〇3117:的吧03七3类型的数 据Adata加密成NSData类型数据Bdata;S3,将所述数据Bdata调用所述系统方法writeToFile: atomically:存入文件中;S4,所述MR模块通过Method Swizzling技术替换系统方法initWithContentsOfFile: 的顶卩和自定义方法110〇1^_;[11;[價;^11〇31^61^8〇€卩;[16:的1]\0);S5,将所述自定义方法hook_ini tWithContent sOfFi le:传递的参数还原成所述NSData 类型数据Cdata;S6,调用DE模块,将所述数据Cdata解密成所述NSData类型数据Ddata;S7,将所述数据Ddata调用所述系统方法ini tWithContent sOfFi le:返回。3.根据权利要求2所述的一种基于1S Method Swizzling技术的数据隔离方法,其特 征在于,S1具体步骤包括:SI 1,所述MR模块通过method_get Implementat 1n()函数获取到所述系统方法 writeToFile:atomically:的IMP;512,所述]\?模块自定义一个所述自定义方法110〇1^_¥1';[丨61'〇?;[16:3丨0111;[〇3117:,并通过 系统函数method_get Implementat 1n()获取所述自定义方法hook_wri teToFi 1 e: atomically:的IMP;513,通过系统函数(:1388_^。13〇6]\^让0(1()来交换所述系统方法¥1';^61'〇?;[16: atomically:的 IMP 和所述自定义方法 hook_wri teToFi le: atomically:的 IMP。4.根据权利要求2所述的一种基于1S Method Swizzling技术的数据隔离方法,其特 征在于,S4具体步骤包括:S41,所述MR模块通过method_get Implementat 1n()函数获取到所述系统方法 initWithContentsOfFile:的IMP;S42,自定义一个所述自定义方法hook_initWi thCon tent sOfFi le:,并通过me thod_ get Implementat 1n()函数获取该方法IMP;S43,最后通过class_replaceMethod()来交换所述系统方法 ini tWithContent sOfFi le:的 IMP 和所述自定义方法 hook_initWi thCont ent sOfFi le:的 顶P〇5.根据权利要求2所述的一种基于1S Method Swizzling技术的数据隔离方法,其特 征在于,S5具体步骤包括:S51,获取自定义方法hook_initWithContentsOfFile:的参数Path;S52,根据所述参数Path,调用所述系统方法ini tWithContentsOf File:得到所述数据 Cdata〇
【文档编号】G06F21/60GK105956478SQ201610262517
【公开日】2016年9月21日
【申请日】2016年4月25日
【发明人】丁昊, 宋锦辉, 李倩
【申请人】北京珊瑚灵御科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1