用于安卓系統(tǒng)的防逆向破解共享對象文件的方法和裝置的制造方法
【技術(shù)領域】
[0001]本申請涉及計算機技術(shù)領域,具體涉及計算機安全技術(shù)領域,尤其涉及用于安卓系統(tǒng)的防逆向破解共享對象文件的方法和裝置。
【背景技術(shù)】
[0002]安卓系統(tǒng)的開源性為應用開發(fā)者提供了更多的功能接口,這些功能接口提高了系統(tǒng)的可擴展性的同時也為惡意軟件提供了便利。
[0003]例如在運行安卓安裝包APK(AndroidPackage)文件時,會加載一些需要用到的共享對象so (Shared Object)文件(安卓系統(tǒng)使用的動態(tài)鏈接庫文件),這些so文件被加載到內(nèi)存中后,處于明文狀態(tài),而程序員往往會把一些重要的代碼放到so文件中,惡意人員只要找到so文件的加載基地址,就可以完整的把so文件從內(nèi)存中轉(zhuǎn)儲(dump)出來,以利于分析和利用,這就造成了比較嚴重的安全隱患。
【發(fā)明內(nèi)容】
[0004]鑒于現(xiàn)有技術(shù)中的上述缺陷或不足,期望能夠提供一種安全性高、難以破解的方案。為了實現(xiàn)上述一個或多個目的,本申請?zhí)峁┝朔滥嫦蚬蚕韺ο笪募姆椒ê脱b置。
[0005]第一方面,本申請?zhí)峁┝艘环N用于安卓系統(tǒng)的防逆向破解共享對象文件的方法,所述方法包括:加載安裝包文件,其中,所述安裝包文件包括共享對象文件,所述共享對象文件包括預先鏈接至共享對象文件的殼中的解密算法、已加密的被保護函數(shù)和加密算法;加載所述共享對象文件至內(nèi)存中;在所述安裝包文件調(diào)用被保護函數(shù)時,調(diào)用解密算法解密所述已加密的被保護函數(shù),得到被保護函數(shù)的明文源代碼;將所述被保護函數(shù)的明文源代碼加載至明文源代碼地址中;執(zhí)行所述被保護函數(shù)的明文源代碼;響應于執(zhí)行所述被保護函數(shù)的明文源代碼完成,調(diào)用加密算法刪除所述被保護函數(shù)的明文源代碼。
[0006]在一些實施例中,所述調(diào)用解密算法解密所述已加密的被保護函數(shù),得到被保護函數(shù)的明文源代碼包括:調(diào)用預設于靜態(tài)鏈接文件中的解密函數(shù),并根據(jù)預設于所述殼中的被保護函數(shù)的數(shù)據(jù)集合,將被保護函數(shù)的明文源代碼地址傳送至解密函數(shù),其中,所述數(shù)據(jù)集合中的單條數(shù)據(jù)包括所述被保護函數(shù)的明文源代碼地址、明文源代碼大小、密文源代碼地址和密文源代碼大??;所述解密函數(shù)調(diào)用所述解密算法,并將所述明文源代碼地址傳送至所述解密算法;所述解密算法根據(jù)所述明文源代碼地址在所述數(shù)據(jù)集合中查詢密文源代碼地址和密文源代碼大??;所述解密算法根據(jù)所述密文源代碼地址和密文源代碼大小解密所述被保護函數(shù),得到被保護函數(shù)的明文源代碼。
[0007]在一些實施例中,所述響應于執(zhí)行所述被保護函數(shù)的明文源代碼完成,調(diào)用加密算法刪除所述被保護函數(shù)的明文源代碼包括:響應于執(zhí)行所述被保護函數(shù)的明文源代碼完成,調(diào)用預設于所述靜態(tài)鏈接文件中的加密函數(shù),并將所述明文源代碼地址傳輸給所述加密函數(shù);所述加密函數(shù)調(diào)用預設于所述殼中的所述加密算法,并將所述明文源代碼地址傳輸給加密算法;所述加密算法根據(jù)所述明文源代碼地址在所述數(shù)據(jù)集合中查詢明文源代碼大?。凰黾用芩惴ǜ鶕?jù)所述明文源代碼地址和所述明文源代碼大小,刪除所述被保護函數(shù)的明文源代碼。
[0008]在一些實施例中,所述數(shù)據(jù)集合的結(jié)構(gòu)形式包括以下任意一項:數(shù)據(jù)表、鏈表、二維數(shù)組和結(jié)構(gòu)體數(shù)組。
[0009]第二方面,本申請?zhí)峁┝艘环N用于安卓系統(tǒng)的防逆向破解共享對象文件的裝置,所述裝置包括:第一加載模塊,用于加載安裝包文件,其中,所述安裝包文件包括共享對象文件,所述共享對象文件包括預先鏈接至共享對象文件的殼中的解密算法、已加密的被保護函數(shù)和加密算法;第二加載模塊,用于加載所述共享對象文件至內(nèi)存中;解密模塊,用于在所述安裝包文件調(diào)用被保護函數(shù)時,調(diào)用解密算法解密所述已加密的被保護函數(shù),得到被保護函數(shù)的明文源代碼;第三加載模塊,用于將所述被保護函數(shù)的明文源代碼加載至明文源代碼地址中;執(zhí)行模塊,用于執(zhí)行所述被保護函數(shù)的明文源代碼;刪除模塊,用于響應于執(zhí)行所述被保護函數(shù)的明文源代碼完成,調(diào)用加密算法刪除所述被保護函數(shù)的明文源代碼。
[0010]在一些實施例中,所述解密模塊包括:第一調(diào)用模塊,用于調(diào)用預設于靜態(tài)鏈接文件中的解密函數(shù),并根據(jù)預設于所述殼中的被保護函數(shù)的數(shù)據(jù)集合,將被保護函數(shù)的明文源代碼地址傳送至解密函數(shù),其中,所述數(shù)據(jù)集合中的單條數(shù)據(jù)包括所述被保護函數(shù)的明文源代碼地址、明文源代碼大小、密文源代碼地址和密文源代碼大小;第二調(diào)用模塊,用于通過所述解密函數(shù)調(diào)用所述解密算法,并將所述明文源代碼地址傳送至所述解密算法;查詢模塊,用于通過所述解密算法根據(jù)所述明文源代碼地址在所述數(shù)據(jù)集合中查詢密文源代碼地址和密文源代碼大小;解密子模塊,用于根據(jù)所述密文源代碼地址和密文源代碼大小解密所述被保護函數(shù),得到被保護函數(shù)的明文源代碼。
[0011]在一些實施例中,所述刪除模塊包括:第三調(diào)用模塊,用于響應于執(zhí)行所述被保護函數(shù)的明文源代碼完成,調(diào)用預設于所述靜態(tài)鏈接文件中的加密函數(shù),并將所述明文源代碼地址傳輸給所述加密函數(shù);第四調(diào)用模塊,用于通過所述加密函數(shù)調(diào)用所述加密算法,并將所述明文源代碼地址傳輸給加密算法;查詢子模塊,用于通過所述加密算法根據(jù)所述明文源代碼地址在所述數(shù)據(jù)集合中查詢明文源代碼大小;刪除子模塊,用于通過所述加密算法根據(jù)所述明文源代碼地址和所述明文源代碼大小,刪除所述被保護函數(shù)的明文源代碼。。
[0012]本申請?zhí)峁┑挠糜诎沧肯到y(tǒng)的防逆向破解共享對象文件的方法和裝置,由于解密算法、已加密的被保護函數(shù)和加密算法均設置于共享對象文件的殼中,加殼的程序可以直接運行,但是不能查看源代碼,而被保護函數(shù)的明文只在被保護函數(shù)被調(diào)用的短暫時間段內(nèi)存在于內(nèi)存的明文源代碼地址中,調(diào)用完畢之后明文源代碼隨即被清空,惡意人員很難在明文存在于內(nèi)存的短暫時間內(nèi)轉(zhuǎn)儲出被保護函數(shù)的源代碼,因此提高了共享對象文件中被保護函數(shù)的安全性;另外,惡意人員若想要通過獲取解密算法得到被保護函數(shù)的明文,需要對共享對象文件進行脫殼,增加了破解共享對象文件的難度。
【附圖說明】
[0013]通過閱讀參照以下附圖所作的對非限制性實施例的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
[0014]圖1示出了可以應用本申請實施例的示例性系統(tǒng)架構(gòu);
[0015]圖2示出了根據(jù)本申請一個實施例的用于安卓系統(tǒng)的防逆向破解共享對象文件的方法的示例性流程圖;
[0016]圖3示出了根據(jù)本申請一個實施例的用于安卓系統(tǒng)的防逆向破解共享對象文件的方法的應用場景流程圖;
[0017]圖4示出了根據(jù)本申請一個實施例的通過解密函數(shù)調(diào)用解密算法解密已加密的被保護函數(shù)的方法的示例性流程圖;
[0018]圖5示出了根據(jù)本申請一個實施例的通過加密函數(shù)調(diào)用加密算法刪除被保護函數(shù)的明文源代碼的方法的示例性流程圖;
[0019]圖6示出了根據(jù)本申請一個實施例的用于安卓系統(tǒng)的防逆向破解共享對象文件的裝置的示例性結(jié)構(gòu)圖;
[0020]圖7示出了根據(jù)本申請一個實施例的解密模塊的示例性結(jié)構(gòu)圖;
[0021]圖8示出了根據(jù)本申請一個實施例的加密模塊的示例性結(jié)構(gòu)圖;
[0022]圖9示出了適于用來實現(xiàn)本申請實施例的終端設備或服務器的計算機系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0023]下面結(jié)合附圖和實施例對本申請作進一步的詳細說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
[0024]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細說明本申請。
[0025]圖1示出了可以應用本申請實施例的示例性系統(tǒng)架構(gòu)100。
[0026]如圖1所示,系統(tǒng)架構(gòu)100可以包括終端設備101、102、103、網(wǎng)絡104和服務器105。網(wǎng)絡105用以在終端設備101、102、103和服務器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
[0027]用戶可以使用終端設備101、102、103通過網(wǎng)絡104與服務器105交互,