[0063]首先,在步驟501中,響應(yīng)于執(zhí)行被保護(hù)函數(shù)的明文源代碼完成,調(diào)用預(yù)設(shè)于靜態(tài)鏈接文件中的加密函數(shù),并將明文源代碼地址傳輸給加密函數(shù)。
[0064]在這里,通過(guò)預(yù)設(shè)于靜態(tài)鏈接文件中的加密函數(shù),編程人員在需要調(diào)用加密函數(shù)時(shí),可以根據(jù)調(diào)用規(guī)則直接進(jìn)行調(diào)用,無(wú)需關(guān)心加密函數(shù)中包含的細(xì)節(jié)。
[0065]這里傳輸給加密函數(shù)的明文源代碼地址,與步驟401中的明文源代碼地址相同。
[0066]接著,在步驟502中,加密函數(shù)調(diào)用預(yù)設(shè)于殼中的加密算法,并將明文源代碼地址傳輸給加密算法。
[0067]之后,在步驟503中,加密算法根據(jù)明文源代碼地址在數(shù)據(jù)集合中查詢明文源代碼大小。
[0068]這里的數(shù)據(jù)集合,其中包括一條或多條數(shù)據(jù),單條數(shù)據(jù)中包括被保護(hù)函數(shù)的明文源代碼地址、明文源代碼大小、密文源代碼地址和密文源代碼大小,因此可以根據(jù)明文源代碼唯一確定位于同一單條數(shù)據(jù)中的明文源代碼大小。數(shù)據(jù)集合的結(jié)構(gòu)形式,可以包括但不限于以下任意一項(xiàng):數(shù)據(jù)表、鏈表、二維數(shù)組和結(jié)構(gòu)體數(shù)組等。
[0069]之后,在步驟504中,加密算法根據(jù)明文源代碼地址和明文源代碼大小刪除被保護(hù)函數(shù)的明文源代碼。
[0070]本申請(qǐng)?zhí)峁┑纳鲜鐾ㄟ^(guò)加密函數(shù)調(diào)用加密算法刪除被保護(hù)函數(shù)的明文源代碼的方法,通過(guò)設(shè)置加密函數(shù),可以重復(fù)利用加密函數(shù)的程序代碼,從而節(jié)省程序的代碼量,還可以無(wú)須知道加密函數(shù)中的細(xì)節(jié),直接按照函數(shù)調(diào)用規(guī)則對(duì)加密函數(shù)進(jìn)行調(diào)用即可,進(jìn)一步提高了加密函數(shù)中的內(nèi)容的隱蔽性,從而提高了加密函數(shù)所調(diào)用的加密算法的安全性。
[0071]應(yīng)當(dāng)注意,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來(lái)執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
[0072]請(qǐng)參考圖6,作為對(duì)上述各圖所示方法的實(shí)現(xiàn),本申請(qǐng)?zhí)峁┝艘环N用于安卓系統(tǒng)的防逆向破解共享對(duì)象文件的裝置的一個(gè)實(shí)施例,該裝置實(shí)施例與圖2所示的方法實(shí)施例相對(duì)應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
[0073]如圖6所示,用于安卓系統(tǒng)的防逆向破解共享對(duì)象文件的裝置600可以包括但不限于:第一加載模塊610,第二加載模塊620,解密模塊630,第三加載模塊640,執(zhí)行模塊650和刪除模塊660。
[0074]第一加載模塊610,可以配置用于加載安裝包文件,其中,安裝包文件包括共享對(duì)象文件,共享對(duì)象文件包括預(yù)先鏈接至共享對(duì)象文件的殼中的解密算法、已加密的被保護(hù)函數(shù)和加密算法。
[0075]在這里,第一加載模塊610在加載安裝包文件時(shí),用于安卓系統(tǒng)的防逆向破解共享對(duì)象文件的裝置設(shè)置于其中的終端設(shè)備(例如圖1中的101、102、103等),首先需要獲取安卓安裝包文件。安裝包文件可以包括共享對(duì)象文件,共享對(duì)象文件可以包括預(yù)先鏈接至共享對(duì)象文件的殼中的解密算法、已加密的被保護(hù)函數(shù)和加密算法。安裝包文件的獲取可以通過(guò)網(wǎng)絡(luò)從服務(wù)器下載、從建立連接的終端設(shè)備傳輸或預(yù)置于終端設(shè)備等方式得到。
[0076]第二加載模塊620,可以配置用于加載共享對(duì)象文件至內(nèi)存中。
[0077]解密模塊630,可以配置用于在安裝包文件調(diào)用被保護(hù)函數(shù)時(shí),調(diào)用解密算法解密已加密的被保護(hù)函數(shù),得到被保護(hù)函數(shù)的明文源代碼。
[0078]在這里,解密模塊630將被保護(hù)函數(shù)的明文加密變換為被保護(hù)函數(shù)的密文,也即已加密的被保護(hù)函數(shù)。解密模塊630通過(guò)調(diào)用解密算法,可以對(duì)上述被保護(hù)函數(shù)的密文進(jìn)行密碼變換,得到被保護(hù)函數(shù)的明文源代碼。
[0079]第三加載模塊640,可以配置用于將被保護(hù)函數(shù)的明文源代碼加載至明文源代碼地址中。
[0080]執(zhí)行模塊650,可以配置用于執(zhí)行被保護(hù)函數(shù)的明文源代碼。
[0081]刪除模塊660,可以配置用于響應(yīng)于執(zhí)行被保護(hù)函數(shù)的明文源代碼完成,調(diào)用加密算法刪除被保護(hù)函數(shù)的明文源代碼。
[0082]在一些可選的實(shí)現(xiàn)方式中,如圖7所示,解密模塊630可以包括但不限于:第一調(diào)用模塊631,第二調(diào)用模塊632,第一查詢模塊633和解密子模塊634。
[0083]第一調(diào)用模塊631,可以配置用于調(diào)用預(yù)設(shè)于靜態(tài)鏈接文件中的解密函數(shù),并根據(jù)預(yù)設(shè)于殼中的被保護(hù)函數(shù)的數(shù)據(jù)集合,將被保護(hù)函數(shù)的明文源代碼地址傳送至解密函數(shù),其中,數(shù)據(jù)集合中的單條數(shù)據(jù)包括被保護(hù)函數(shù)的明文源代碼地址、明文源代碼大小、密文源代碼地址和密文源代碼大小。
[0084]第二調(diào)用模塊632,可以配置用于通過(guò)解密函數(shù)調(diào)用解密算法,并將明文源代碼地址傳送至解密算法。
[0085]第一查詢模塊633,可以配置用于通過(guò)解密算法根據(jù)明文源代碼地址在數(shù)據(jù)集合中查詢密文源代碼地址和密文源代碼大小。
[0086]解密子模塊634,可以配置用于根據(jù)密文源代碼地址和密文源代碼大小解密被保護(hù)函數(shù),得到被保護(hù)函數(shù)的明文源代碼。
[0087]在一些可選的實(shí)現(xiàn)方式中,如圖8所示,刪除模塊660可以包括但不限于:第三調(diào)用模塊661,第四調(diào)用模塊662、第二查詢模塊663和刪除子模塊664。
[0088]第三調(diào)用模塊661,可以配置用于響應(yīng)于執(zhí)行被保護(hù)函數(shù)的明文源代碼完成,調(diào)用預(yù)設(shè)于靜態(tài)鏈接文件中的加密函數(shù),并將明文源代碼地址傳輸給加密函數(shù)。
[0089]第四調(diào)用模塊662,可以配置用于通過(guò)加密函數(shù)調(diào)用加密算法,并將明文源代碼地址傳輸給加密算法。
[0090]第二查詢模塊663,可以配置用于通過(guò)加密算法根據(jù)明文源代碼地址在數(shù)據(jù)集合中查詢明文源代碼大小。
[0091]刪除子模塊664,可以配置用于通過(guò)加密算法根據(jù)明文源代碼地址和明文源代碼大小,刪除被保護(hù)函數(shù)的明文源代碼。
[0092]應(yīng)當(dāng)理解,裝置600中記載的諸模塊與參考圖2描述的方法中的各個(gè)步驟相對(duì)應(yīng)。模塊630中記載的諸模塊與參考圖4描述的方法中的各個(gè)步驟相對(duì)應(yīng)。模塊660中記載的諸模塊與參考圖5描述的方法中的各個(gè)步驟相對(duì)應(yīng)。由此,上文針對(duì)用于安卓系統(tǒng)的防逆向破解共享對(duì)象文件的方法描述的操作和特征同樣適用于裝置600及其中包含的模塊,上文針對(duì)調(diào)用解密算法解密已加密的被保護(hù)函數(shù)的方法描述的操作和特征同樣適用于裝置700及其中包含的模塊,上文針對(duì)調(diào)用加密算法刪除被保護(hù)函數(shù)的明文源代碼的方法描述的操作和特征同樣適用于裝置800及其中包含的模塊,在此不再贅述。裝置600、700和800中的相應(yīng)模塊可以與終端設(shè)備和/或服務(wù)器中的模塊相互配合以實(shí)現(xiàn)本申請(qǐng)實(shí)施例的方案。
[0093]本申請(qǐng)上述實(shí)施例提供的用于安卓系統(tǒng)的防逆向破解共享對(duì)象文件的裝置,增加了破解共享對(duì)象文件的難度,提高了共享對(duì)象文件中被保護(hù)函數(shù)的安全性。
[0094]下面參考圖9,其示出了適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施例的終端設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)900的結(jié)構(gòu)示意圖。
[0095]如圖9所示,計(jì)算機(jī)系統(tǒng)900包括中央處理單元(CPU)901,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(ROM) 902中的程序或者從存儲(chǔ)部分908加載到隨機(jī)訪問(wèn)存儲(chǔ)器(RAM) 903中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在RAM 903中,還存儲(chǔ)有系統(tǒng)900操作所需的各種程序和數(shù)據(jù)。CPU 90KROM 902以及RAM 903通過(guò)總線904彼此相連。輸入/輸出(I/O)接口905也連接至總線904。
[0096]以下部件連接至I/O接口 905:包括鍵盤(pán)、鼠標(biāo)等的輸入部分906 ;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚(yáng)聲器等的輸出部分907 ;包括硬盤(pán)等的存儲(chǔ)部分908 ;以及包括諸如LAN卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分909。通信部分909經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器910也根據(jù)需要連接至I/O接口 905??刹鹦督橘|(zhì)911,諸如磁盤(pán)、光盤(pán)、磁光盤(pán)、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器910上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分908。
[0097]特別地,根據(jù)本公開(kāi)的實(shí)施例,上文參考流程圖描述的過(guò)程可以被實(shí)現(xiàn)為計(jì)