一種基于iOS Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng)和方法
【專利摘要】本發(fā)明提供一種基于iOS Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng)和方法,屬于iOS移動應用開發(fā)領域。該數(shù)據(jù)隔離系統(tǒng)包括,數(shù)據(jù)加密模塊和方法替換模塊;該數(shù)據(jù)隔離方法主要包括以下步驟:S1,所述MR模塊替換writeToFile:atomically:的IMP和hook_writeToFile:atomically:的IMP;S2,所述DE模塊將所述hook_writeToFile:atomically:的NSData類型的數(shù)據(jù)Adata加密成NSData類型數(shù)據(jù)Bdata。
【專利說明】
一種基于1S Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng)和方法
技術領域
[00〇1] 本發(fā)明涉及1S移動應用開發(fā)領域,尤其涉及一種基于1S Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng)和方法?!颈尘凹夹g】
[0002]現(xiàn)有的1S應用的數(shù)據(jù)讀寫方式都是沒有經(jīng)過加密的,通過某些平臺可以看到應用里面的文件從而造成數(shù)據(jù)泄密,即使是加密也是要針對每一個存儲的文件進行加密,非常繁瑣,往往會導致最后忘記哪些加密,哪些沒有解密。
【發(fā)明內(nèi)容】
[00〇3]本發(fā)明的目的在于提供一種基于1S Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng)和方法,從而解決現(xiàn)有技術中存在的前述問題。
[0004]為了實現(xiàn)上述目的,本發(fā)明采用的技術方案如下:
[0005]—種基于1S Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng),其特征在于,包括數(shù)據(jù)加密模塊和方法替換模塊;[00〇6]所述數(shù)據(jù)加密模塊即DataEncrypt1n,簡稱為DE模塊,所述方法替換模塊即 MethodsReplace,簡稱為 MR 模塊;[〇〇〇7] 所述DE模塊實現(xiàn)對數(shù)據(jù)的AdvancedEncrypt1nStandard加密,所述MR模塊實現(xiàn)對所需要的方法進行方法替換并修改。
[0008]—種基于1S Method Swizzling技術的數(shù)據(jù)隔離方法,包括以下步驟:
[0009]S1,所述MR模塊通過Method Swi zz 1 ing技術替換系統(tǒng)方法wr i teToFi 1 e: atomically:的IMP和自定義方法hook_writeToFile:atomically:的IMP;
[0010]S2,所述DE模塊將所述自定義方法hook_writeToFile:atomically:的NSData類型的數(shù)據(jù)Adata加密成NSData類型數(shù)據(jù)Bdata;[〇〇11 ]S3,將所述數(shù)據(jù)Bdata調(diào)用所述系統(tǒng)方法wri teToFi le: atomically:存入文件中;
[0012]S4,所述MR模塊通過Method Swizzling技術替換系統(tǒng)方法 initWithContentsOfFile:的IMP和自定義方法hook_initWithContentsOfFile:的IMP;
[0013]35,將所述自定義方法11〇〇1<_;[11;^¥;[1:11(]〇1^61^8〇€?;[16:傳遞的參數(shù)還原成所述 NSData類型數(shù)據(jù)(Mata;[〇〇14] S6,調(diào)用DE模塊,將所述數(shù)據(jù)Cdata解密成所述NSData類型數(shù)據(jù)Ddata;
[0015]S7,將所述數(shù)據(jù)Ddata調(diào)用所述系統(tǒng)方法initWithContentsOfFile:返回。
[0016]優(yōu)選的,S1具體步驟包括:
[0017]SI 1,所述MR模塊通過method_get Implementat1n ()函數(shù)獲取到所述系統(tǒng)方法 writeToFile:atomically:的IMP;
[0018]S12,所述MR模塊自定義一個所述自定義方法hook_writeToFile:atomically:,并通過系統(tǒng)函數(shù)method_get Implementat1n()獲取所述自定義方法hook_wri teToFi le:atomically:的IMP;[〇〇19]513,通過系統(tǒng)函數(shù)(:138 8_代。130 6]\^1:110(1()來交換所述系統(tǒng)方法¥1';^61'〇?;[16:atomically:的IMP和所述自定義方法hook_writeToFile:atomically:的IMP。
[0020]優(yōu)選的,S4具體步驟包括:[0021 ]541,所述]\?模塊通過11161:110(1_861:11]^)1611161^31:;[〇11()函數(shù)獲取到所述系統(tǒng)方法initWithContentsOfFile:的IMP;
[0022]S42,自定義一個所述自定義方法11〇〇1<_;[11;[1:?;[1:11(]〇1^61^8〇€?;[16:,并通過method_getImplementat1n()函數(shù)獲取該方法IMP;[0〇23]S43,最后通過class_replaceMethod()來交換所述系統(tǒng)方法initWithContentsOfFile:的 IMP和所述自定義方法hook_initWithContentsOfFi le:的頂P〇[〇〇24]優(yōu)選的,S5具體步驟包括:
[0025]551,獲取自定義方法11〇〇1<_;[11;^?;[1:11(]〇1^61^8〇€?;[16:的參數(shù)?&1:11;
[0026]352,根據(jù)所述參數(shù)?81:11,調(diào)用所述系統(tǒng)方法;[11;[丨¥;[1:11(]〇11丨611丨8(^?;[16:得到所述數(shù)據(jù)(Mata。
[0027]本發(fā)明的有益效果是:本發(fā)明提供一種可以對數(shù)據(jù)自動加密解密的方案,不需寫入大量的代碼,就可以對存入文件的數(shù)據(jù)進行加密,在使用的時候可以自動解密,不需要開發(fā)人員重復加密解密的過程,即可完成對數(shù)據(jù)的保護,加密之后的文件通過第三方工具即使找到了存儲的文件,也會因為文件加密過而無法讀取文件的內(nèi)容,在應用內(nèi)部可以正常的使用文件的數(shù)據(jù),達到數(shù)據(jù)隔離的效果?!靖綀D說明】[0〇28]圖1是本發(fā)明中基于1S Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng)的運行圖?!揪唧w實施方式】[〇〇29]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結(jié)合附圖,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的【具體實施方式】僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。[0〇3〇] —種基于1S Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng),包括數(shù)據(jù)加密模塊和方法替換模塊;[0〇31]所述數(shù)據(jù)加密模塊即DataEncrypt1n,簡稱為DE模塊,所述方法替換模塊即 MethodsReplace,簡稱為 MR 模塊;[〇〇32] 所述DE模塊實現(xiàn)對數(shù)據(jù)的AdvancedEncrypt1nStandard加密,所述MR模塊實現(xiàn)對所需要的方法進行方法替換并修改。[0〇33] —種基于1S Method Swizzling技術的數(shù)據(jù)隔離方法,包括以下步驟:
[0034] S1,所述MR模塊通過Method Swi zz 1 ing技術替換系統(tǒng)方法wr i teToFi 1 e: atomically:的IMP和自定義方法hook_writeToFile:atomically:的IMP;其中,SI具體步驟包括:SI 1,所述MR模塊通過method_getImplementat1n!;)函數(shù)獲取到所述系統(tǒng)方法 writeToFile: atomically:的IMP; S12,所述MR模塊自定義一個所述自定義方法hook_writeToFile:atomically:,并通過系統(tǒng)函數(shù)method_getImplementat1n()獲取所述自定義方法11〇〇1^_¥1';^61'〇卩;[16:&七〇111;[〇&117:的1]\0);313,通過系統(tǒng)函數(shù)(31&88_代卩1&〇6]^也〇(1() 來交換所述系統(tǒng)方法writeToFile:atomically:的IMP和所述自定義方法hook_ writeToFile:atomically:的IMP〇
[0035]S2,所述DE模塊將所述自定義方法hook_writeToFile: atomically:的NSData類型的數(shù)據(jù)Adata加密成NSData類型數(shù)據(jù)Bdata;
[0036]S3,將所述數(shù)據(jù)Bdata調(diào)用所述系統(tǒng)方法writeToFi le: atomically:存入文件中;[0〇37]S4,所述MR模塊通過MethodSwizzling技術替換系統(tǒng)方法;[11;[價;^11〇01^61^8〇€卩;[16:的1]\0)和自定義方法110〇1^_;[11;[價;[也〇31^61^8〇€卩;[16:的1]\0);其中,S4具體步驟包括:S41,所述MR模塊通過me thod_get Implementat1n ()函數(shù)獲取到所述系統(tǒng)方法ini tWi thContentsOfFi le:的IMP ; S42,自定義一個所述自定義方法hook_ ;[11;^?;^11〇01^61^8〇€?;[16:,并通過1116也0(1_86七111^1611161^3七;[〇11()函數(shù)獲取該方法頂?; S43,最后通過 class_replaceMe thod()來交換所述系統(tǒng)方法ini tWi thContentsOfFi le:的 IMP和所述自定義方法hook_initWi thContentsOfFi le:的 IMP;
[0038] S5,將所述自定義方法hook_initWi thContentsOfFi le:傳遞的參數(shù)還原成所述 NSData類型數(shù)據(jù)Cdata ;其中,S5具體步驟包括:S5 1,獲取自定義方法hook_ initWithContentsOfFile:的參數(shù)Path ; S52,根據(jù)所述參數(shù)Path,調(diào)用所述系統(tǒng)方法 initWithContentsOfFile:得到所述數(shù)據(jù) Cdata;[〇〇39] S6,調(diào)用DE模塊,將所述數(shù)據(jù)Cdata解密成所述NSData類型數(shù)據(jù)Ddata;
[0040] S7,將所述數(shù)據(jù)Ddata調(diào)用所述系統(tǒng)方法initWithContentsOfFile:返回。[〇〇41]通過采用本發(fā)明公開的上述技術方案,得到了如下有益的效果:
[0042]本發(fā)明提供一種可以對數(shù)據(jù)自動加密解密的方案,不需寫入大量的代碼,就可以對存入文件的數(shù)據(jù)進行加密,在使用的時候可以自動解密,不需要開發(fā)人員重復加密解密的過程,即可完成對數(shù)據(jù)的保護,加密之后的文件通過第三方工具即使找到了存儲的文件, 也會因為文件加密過而無法讀取文件的內(nèi)容,在應用內(nèi)部可以正常的使用文件的數(shù)據(jù),達到數(shù)據(jù)隔離的效果。
[0043]以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視本發(fā)明的保護范圍。
【主權(quán)項】
1.一種基于1S Method Swizzling技術的數(shù)據(jù)隔離系統(tǒng),其特征在于,包括數(shù)據(jù)加密 模塊和方法替換模塊;所述數(shù)據(jù)加密模塊即DataEncrypt 1n,簡稱為DE模塊,所述方法替換模塊即 MethodsReplace,簡稱為 MR 模塊;所述DE模塊實現(xiàn)對數(shù)據(jù)的AdvancedEncrypt1nStandard加密,所述MR模塊實現(xiàn)對所需 要的方法進行方法替換并修改。2.—種基于1S Method Swizzling技術的數(shù)據(jù)隔離方法,其特征在于,包括以下步驟:S1,所述 MR 模塊通過 Method Swizzling 技術替換系統(tǒng)方法 writ eToFile: atomically:的IMP和自定義方法hook_writeToFile:atomically:的IMP;32,所述0£模塊將所述自定義方法11〇〇1^_¥1';^61'〇?;[16:3七〇111;[〇3117:的吧03七3類型的數(shù) 據(jù)Adata加密成NSData類型數(shù)據(jù)Bdata;S3,將所述數(shù)據(jù)Bdata調(diào)用所述系統(tǒng)方法writeToFile: atomically:存入文件中;S4,所述MR模塊通過Method Swizzling技術替換系統(tǒng)方法initWithContentsOfFile: 的頂卩和自定義方法110〇1^_;[11;[價;^11〇31^61^8〇€卩;[16:的1]\0);S5,將所述自定義方法hook_ini tWithContent sOfFi le:傳遞的參數(shù)還原成所述NSData 類型數(shù)據(jù)Cdata;S6,調(diào)用DE模塊,將所述數(shù)據(jù)Cdata解密成所述NSData類型數(shù)據(jù)Ddata;S7,將所述數(shù)據(jù)Ddata調(diào)用所述系統(tǒng)方法ini tWithContent sOfFi le:返回。3.根據(jù)權(quán)利要求2所述的一種基于1S Method Swizzling技術的數(shù)據(jù)隔離方法,其特 征在于,S1具體步驟包括:SI 1,所述MR模塊通過method_get Implementat 1n()函數(shù)獲取到所述系統(tǒng)方法 writeToFile:atomically:的IMP;512,所述]\?模塊自定義一個所述自定義方法110〇1^_¥1';[丨61'〇?;[16:3丨0111;[〇3117:,并通過 系統(tǒng)函數(shù)method_get Implementat 1n()獲取所述自定義方法hook_wri teToFi 1 e: atomically:的IMP;513,通過系統(tǒng)函數(shù)(:1388_^。13〇6]\^讓0(1()來交換所述系統(tǒng)方法¥1';^61'〇?;[16: atomically:的 IMP 和所述自定義方法 hook_wri teToFi le: atomically:的 IMP。4.根據(jù)權(quán)利要求2所述的一種基于1S Method Swizzling技術的數(shù)據(jù)隔離方法,其特 征在于,S4具體步驟包括:S41,所述MR模塊通過method_get Implementat 1n()函數(shù)獲取到所述系統(tǒng)方法 initWithContentsOfFile:的IMP;S42,自定義一個所述自定義方法hook_initWi thCon tent sOfFi le:,并通過me thod_ get Implementat 1n()函數(shù)獲取該方法IMP;S43,最后通過class_replaceMethod()來交換所述系統(tǒng)方法 ini tWithContent sOfFi le:的 IMP 和所述自定義方法 hook_initWi thCont ent sOfFi le:的 頂P〇5.根據(jù)權(quán)利要求2所述的一種基于1S Method Swizzling技術的數(shù)據(jù)隔離方法,其特 征在于,S5具體步驟包括:S51,獲取自定義方法hook_initWithContentsOfFile:的參數(shù)Path;S52,根據(jù)所述參數(shù)Path,調(diào)用所述系統(tǒng)方法ini tWithContentsOf File:得到所述數(shù)據(jù) Cdata〇
【文檔編號】G06F21/60GK105956478SQ201610262517
【公開日】2016年9月21日
【申請日】2016年4月25日
【發(fā)明人】丁昊, 宋錦輝, 李倩
【申請人】北京珊瑚靈御科技有限公司