新四季網

一種加固SDK項目的方法及系統與流程

2023-06-20 10:14:51


本發明涉及安全技術領域,尤其涉及一種加固sdk項目的方法及系統。



背景技術:

sdk(sfotwaredevelopkit)是一種軟體開發工具包,由sdk開發者開發完成,發布到開發者平臺上,供第三方軟體開發者集成。由於sdk發布後,任意第三方軟體開發者均可以下載該sdk的jar包,並將該jar包集成進自身軟體中。目前市面上絕大多數的sdk對應的jar包僅僅只是對代碼進行了混淆,可以通過反編譯工具進行反編譯,很容易讀懂sdk中的代碼邏輯,不法分子則可以通過反編譯進行代碼篡改,輸入竊取用戶信息、注入廣告等惡意代碼,並二次打包編譯。sdk項目的安全性堪憂。



技術實現要素:

本發明所要解決的技術問題是:如何提高sdk項目的安全性。

為了解決上述技術問題,本發明採用的技術方案為:

本發明提供一種加固sdk項目的方法,包括:

s1、根據原始sdk項目生成原始dex文件;

s2、加密所述dex文件,得到dex加密文件;

s3、新建sdk項目,得到新建的sdk項目;

s4、在所述新建的sdk項目中創建與所述dex加密文件中的核心代碼對應的接口類;所述接口類可反射調用所述dex加密文件中的核心代碼;

s5、打包所述新建的sdk項目和所述dex加密文件,得到加固的sdk項目。

本發明還提供一種加固sdk項目的系統,包括:

第一生成模塊,用於根據原始sdk項目生成原始dex文件;

加密模塊,用於加密所述dex文件,得到dex加密文件;

新建模塊,用於新建sdk項目,得到新建的sdk項目;

第二生成模塊,用於在所述新建的sdk項目中創建與所述dex加密文件中的核心代碼對應的接口類;所述接口類可反射調用所述dex加密文件中的核心代碼;

打包模塊,用於打包所述新建的sdk項目和所述dex加密文件,得到加固的sdk項目。

本發明的有益效果在於:由於加密會破壞文件結構,若未用相應的解密邏輯進行解密,相當於一個破損的文件,無法用工具還原成對應的jar包,因此,通過將原始sdk項目轉換成dex加密文件,極大程度上增加了sdk項目的代碼安全性;此外,新建sdk項目中包含可調用原始sdk項目核心代碼的接口類,只將新建sdk項目中的接口類暴露給外部系統,外部系統通過調用新建sdk項目中的接口類達到調用原始sdk項目核心代碼的目的,使得即使破解了新建sdk項目,也無法獲取原始sdk項目中的核心代碼,提高了sdk項目的安全性。

附圖說明

圖1為本發明提供一種加固sdk項目的方法的具體實施方式的流程框圖;

圖2為本發明提供一種加固sdk項目的系統的具體實施方式的系統框圖;

標號說明:

1、第一生成模塊;2、加密模塊;3、新建模塊;4、第二生成模塊;5、打包模塊;6、創建模塊;7、加載模塊;8、解密模塊;9、設置模塊;10、混淆模塊;11、第三生成模塊。

具體實施方式

為詳細說明本發明的技術內容、所實現目的及效果,以下結合實施方式並配合附圖予以說明。

如圖1所示,本發明提供一種加固sdk項目的方法,包括:

s1、根據原始sdk項目生成原始dex文件;

s2、加密所述dex文件,得到dex加密文件;

s3、新建sdk項目,得到新建的sdk項目;

s4、在所述新建的sdk項目中創建與所述dex加密文件中的核心代碼對應的接口類;所述接口類可反射調用所述dex加密文件中的核心代碼;

s5、打包所述新建的sdk項目和所述dex加密文件,得到加固的sdk項目。

進一步地,所述s2之後,還包括:

根據md5算法生成與所述dex加密文件對應的md5值。

由上述描述可知,通過md5值可在jni中驗證dex加密文件是否被篡改。

進一步地,創建與所述dex加密文件中的核心代碼對應的接口類之前,還包括:

調用預設的java本地接口驗證所述md5值,若所述md5值未通過驗證,則標記所述dex加密文件被篡改;否則解密所述dex加密文件,得到dex解密文件;

創建類加載器;

所述類加載器加載所述dex解密文件。

由上述描述可知,由於c++的反編譯難度較高,反編譯後的邏輯可讀性也較差,因此通過jni(java本地接口)解密dex加密文件,提高了解密邏輯的破解難度,從而提高了sdk項目的安全性。

進一步地,還包括:

設置所述接口類中的函數名稱為所述核心代碼中對應函數的名稱。

進一步地,所述s1之前,還包括:

混淆所述原始sdk項目中的代碼。

由上述描述可知,有利於提高sdk項目被反編譯的難度,從而提高sdk項目的安全性。

本發明還提供一種加固sdk項目的系統,包括:

第一生成模塊1,用於根據原始sdk項目生成原始dex文件;

加密模塊2,用於加密所述dex文件,得到dex加密文件;

新建模塊3,用於新建sdk項目,得到新建的sdk項目;

第二生成模塊4,用於在所述新建的sdk項目中創建與所述dex加密文件中的核心代碼對應的接口類;所述接口類可反射調用所述dex加密文件中的核心代碼;

打包模塊5,用於打包所述新建的sdk項目和所述dex加密文件,得到加固的sdk項目。

進一步地,還包括:

第三生成模塊11,用於根據md5算法生成與所述dex加密文件對應的md5值。

進一步地,還包括:

解密模塊8,用於調用預設的java本地接口驗證所述md5值,若所述md5值未通過驗證,則標記所述dex加密文件被篡改;否則解密所述dex加密文件,得到dex解密文件;

創建模塊6,用於創建類加載器;

加載模塊7,用於所述類加載器加載所述dex解密文件。

進一步地,還包括:

設置模塊9,用於設置所述接口類中的函數名稱為所述核心代碼中對應函數的名稱。

進一步地,還包括:

混淆模塊10,用於混淆所述原始sdk項目中的代碼。

本發明的實施例一為:

s1、混淆所述原始sdk項目中的代碼,得到混淆的sdk項目;

其中,使用java的混淆工具proguard進行代碼混淆,proguard是一個壓縮、優化和混淆java字節碼文件的免費的工具,它可以刪除無用的類、欄位、方法和屬性。可以刪除沒用的注釋,最大限度地優化字節碼文件。它還可以使用簡短的無意義的名稱來重命名已經存在的類、欄位、方法和屬性。常常用於android開發,用於混淆最終的項目,增加項目被反編譯的難度。

其中,不混淆的代碼包括:暴露的接口類、組件類(如activity組件和service組件)和自定義控制項view。

s2、根據所述混淆的sdk項目生成原始dex文件;

其中,先打包混淆的sdk項目,得到對應的jar包;再通過androidsdkbuild-tools中的dx.bat工具將jar包轉成dex文件。

s3、加密所述dex文件,得到dex加密文件;

其中,將加密後的dex文件放入到目標應用項目的assets文件夾下。

s4、根據md5算法生成與所述dex加密文件對應的md5值;

s5、在新建sdk項目中,調用預設的java本地接口驗證所述md5值,若所述md5值未通過驗證,則標記所述dex加密文件被篡改;否則解密所述dex加密文件,得到dex解密文件;創建類加載器;所述類加載器加載所述dex解密文件;根據所述dex解密文件,創建與所述dex加密文件中的核心代碼對應的接口類;所述接口類可反射調用所述dex加密文件中的核心代碼;設置所述接口類中的函數名稱為所述核心代碼中對應函數的名稱;

其中,調用新建的類加載器dexclassloader的loadclass函數加載原始sdk項目中的接口類,並重新實現該接口類中的函數,重新實現的函數可反射調用原始sdk項目中對應的函數。

s6、打包所述新建的sdk項目和所述dex加密文件,得到加固的sdk項目;

其中,打包新建sdk項目得到對應的jar包,將該jar包、jni(java本地接口)的so文件、dex加密文件和集成文檔一起提供給第三方開發者。

本發明的實施例二為:

混淆模塊10混淆所述原始sdk項目中的代碼;第一生成模塊1根據原始sdk項目生成原始dex文件;加密模塊2加密所述dex文件,得到dex加密文件;第三生成模塊11根據md5算法生成與所述dex加密文件對應的md5值;創建模塊6創建類加載器;解密模塊8調用預設的java本地接口驗證所述md5值,若所述md5值未通過驗證,則標記所述dex加密文件被篡改;否則解密所述dex加密文件,得到dex解密文件;加載模塊7所述類加載器加載所述dex解密文件;新建模塊3新建sdk項目,得到新建的sdk項目;第二生成模塊4在所述新建的sdk項目中創建與所述dex加密文件中的核心代碼對應的接口類;所述接口類可反射調用所述dex加密文件中的核心代碼;設置模塊9設置所述接口類中的函數名稱為所述核心代碼中對應函數的名稱;打包模塊5打包所述新建的sdk項目和所述dex加密文件,得到加固的sdk項目。

綜上所述,本發明提供的一種加固sdk項目的方法及系統,通過將原始sdk項目轉換成dex加密文件,極大程度上增加了sdk項目的代碼安全性;此外,新建sdk項目中包含可調用原始sdk項目核心代碼的接口類,只將新建sdk項目中的接口類暴露給外部系統,使得即使破解了新建sdk項目,也無法獲取原始sdk項目中的核心代碼,提高了sdk項目的安全性。進一步地,通過jni(java本地接口)解密dex加密文件,提高了解密邏輯的破解難度,從而提高了sdk項目的安全性。進一步地,通過混淆原始sdk項目中的代碼既能優化加密dex文件的包體大小,又有利於提高sdk項目被反編譯的難度,從而提高sdk項目的安全性。

以上所述僅為本發明的實施例,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等同變換,或直接或間接運用在相關的技術領域,均同理包括在本發明的專利保護範圍內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀