應(yīng)用程序的處理方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種應(yīng)用程序的處理方法和裝置。所述方法包括:向所述應(yīng)用程序添加殼程序;使用殼程序的可執(zhí)行文件來替代所述應(yīng)用程序的可執(zhí)行文件;創(chuàng)建與所述殼程序的可執(zhí)行文件相關(guān)聯(lián)的殼程序執(zhí)行入口,以替代與所述應(yīng)用程序的可執(zhí)行文件相對應(yīng)的應(yīng)用程序執(zhí)行入口;向所述殼程序添加反調(diào)試代碼,其中,所述殼程序的可執(zhí)行文件在檢測到應(yīng)用程序正被非法調(diào)試時,調(diào)用反調(diào)試代碼對所述應(yīng)用程序的調(diào)試結(jié)果進行修改。這樣通過跳出通常反調(diào)試手段的終止程序的固有思維,以混淆的調(diào)試結(jié)果來從邏輯上提升應(yīng)用的破解難度。另外,該方法還可以與使用鏈接庫及l(fā)lvm等手段結(jié)合,由此為應(yīng)用程序提供全方位的保護。
【專利說明】
應(yīng)用程序的處理方法及裝置
技術(shù)領(lǐng)域
[0001]本申請涉及應(yīng)用程序保護,尤其涉及一種應(yīng)用程序的處理方法和裝置。
【背景技術(shù)】
[0002]計算機與網(wǎng)絡(luò)技術(shù)的快速發(fā)展與普及催生了龐大的軟件產(chǎn)業(yè)。由于利益牽扯,軟件業(yè)從發(fā)展之初就面臨著非法破解的問題。早年通常是為了個人使用而進行的初級破解(例如,獲取注冊碼以逃避購買),現(xiàn)今則是為了拿到源碼將他人的勞動成果直接改頭換面為新的應(yīng)用程序。隨著移動終端和游戲社區(qū)的興旺發(fā)展,一個成功運營的應(yīng)用通常能夠帶來巨大的利益,而這使得對應(yīng)用的逆向破解變得愈發(fā)猖獗。
[0003]因此,開發(fā)者需要不斷完善應(yīng)用自身的安全機制,以提升應(yīng)用本身被逆向破解的難度。
【發(fā)明內(nèi)容】
[0004]為了進一步完善應(yīng)用的安全機制,本申請?zhí)岢隽艘环N應(yīng)用程序的處理方法和裝置,其通過改變現(xiàn)有的反調(diào)試思路來混淆破解者的邏輯判斷,由此提升逆向難度,提高應(yīng)用的保護水平。
[0005]根據(jù)本申請的一個發(fā)明,提供了一種應(yīng)用程序的處理方法,包括:向所述應(yīng)用程序添加殼程序;使用殼程序的可執(zhí)行文件來替代所述應(yīng)用程序的可執(zhí)行文件;創(chuàng)建與所述殼程序的可執(zhí)行文件相關(guān)聯(lián)的殼程序執(zhí)行入口,以替代與所述應(yīng)用程序的可執(zhí)行文件相對應(yīng)的應(yīng)用程序執(zhí)行入口;向所述殼程序添加反調(diào)試代碼,其中,所述殼程序的可執(zhí)行文件在檢測到應(yīng)用程序正被非法調(diào)試時,調(diào)用所述反調(diào)試代碼對所述應(yīng)用程序的調(diào)試結(jié)果進行修改。
[0006]與現(xiàn)有的會終止調(diào)試的反調(diào)試策略不同,本申請通過入口隱藏以及能夠混淆調(diào)試結(jié)果以混亂應(yīng)用破解者邏輯推導(dǎo)的反調(diào)試代碼來加大逆向難度,提高應(yīng)用的保護水平。
[0007]優(yōu)選地,對所述應(yīng)用程序添加殼程序可以包括:使用加密算法對所述應(yīng)用程序的可執(zhí)行文件進行加密;以及保存經(jīng)加密的所述應(yīng)用程序的可執(zhí)行文件與所述應(yīng)用程序執(zhí)行入口并將與所述加密算法相對應(yīng)的解密代碼寫入所述殼程序。
[0008]由此,通過對應(yīng)用加密并保存隱藏入口,進一步加大破解難度,提高應(yīng)用的保護水平。
[0009]優(yōu)選地,殼程序的可執(zhí)行文件在檢測到應(yīng)用程序未被非法調(diào)試的情況下,調(diào)用解密代碼對已加密的應(yīng)用程序的可執(zhí)行文件進行解密。
[0010]由此,在未被非法調(diào)試的情況下,可以正常執(zhí)行應(yīng)用程序。
[0011]優(yōu)選地,對所述應(yīng)用程序添加殼程序的步驟還可以包括:將反重打包代碼寫入所述殼程序;壓縮添加了所述殼程序的所述應(yīng)用程序,以得到加殼程序;對所述加殼程序進行簽名以得到原始簽名值;以及將所述原始簽名值上傳到服務(wù)器,其中,在所述加殼程序運行時,所述殼程序的可執(zhí)行文件調(diào)用所述反重打包代碼,以獲取所述加殼程序的簽名值并將所述簽名值上傳所述服務(wù)器,以便所述服務(wù)器通過判斷所述加殼程序的簽名值與所述原始簽名值是否相同來判斷所述加殼應(yīng)用是否已被重打包。
[0012]由此,通過服務(wù)器端保存來實現(xiàn)對加殼程序的簽名。此外,由于簽名值的比較在服務(wù)器端而非本地進行,因此提升了反重打包的力度,從而進一步提高了應(yīng)用的逆向難度。
[0013]優(yōu)選地,可以將所述反調(diào)試代碼、所述解密代碼和所述反重打包代碼中的至少一項寫入所述殼程序的動態(tài)鏈接庫。
[0014]由此,通過將各類反逆向代碼寫入鏈接庫,使得破解者無法直接從更容易破解的可執(zhí)行文件中獲取上述代碼,從而進一步提高應(yīng)用的逆向難度。
[0015]優(yōu)選地,可以將所述反調(diào)試代碼、所述解密代碼和所述反重打包代碼中的至少一項寫入所述殼程序的靜態(tài)鏈接庫。
[0016]這樣,由于使用靜態(tài)庫能夠隱藏相應(yīng)的鏈接符號,因此加大了破解者的逆向難度,從而進一步提升應(yīng)用的保護水平。
[0017]優(yōu)選地,還可以使用Ilvm對所述加殼應(yīng)用進行編譯。由此在不影響原程序流程運行結(jié)果的前提下對程序的代碼混淆膨脹,讓破解者難以找出源程序的代碼關(guān)聯(lián),從而進一步提升逆向難度。
[0018]根據(jù)本申請的另一個發(fā)明,提供了一種應(yīng)用程序的處理裝置,包括:加殼單元,用于向所述應(yīng)用程序添加殼程序;可執(zhí)行文件替代單元,使用殼程序的可執(zhí)行文件來替代所述應(yīng)用程序的可執(zhí)行文件;入口替代單元,創(chuàng)建與所述殼程序的可執(zhí)行文件相關(guān)聯(lián)的殼程序執(zhí)行入口,以替代與所述應(yīng)用程序的可執(zhí)行文件相對應(yīng)的應(yīng)用程序執(zhí)行入口 ;代碼添加單元,用于向所述殼程序添加反調(diào)試代碼,其中,所述殼程序的可執(zhí)行文件在檢測到所述應(yīng)用程序正被非法調(diào)試時,調(diào)用所述反調(diào)試代碼對所述應(yīng)用程序的調(diào)試結(jié)果進行修改。
[0019]優(yōu)選地,所述裝置還可以包括:加密單元,用于使用加密算法對所述應(yīng)用程序的可執(zhí)行文件進行加密;以及保存單元,用于保存經(jīng)加密的所述應(yīng)用程序的可執(zhí)行文件與所述應(yīng)用程序執(zhí)行入口并將與所述加密算法相對應(yīng)的解密代碼寫入所述殼程序。
[0020]優(yōu)選地,所述裝置還可以包括反重打包單元,用于:將反重打包代碼寫入所述殼程序;壓縮添加了所述殼程序的所述應(yīng)用程序,以得到加殼程序;對所述加殼程序進行簽名以得到原始簽名值;以及將所述原始簽名值上傳到服務(wù)器,其中,在所述加殼程序運行時,所述殼程序的可執(zhí)行文件調(diào)用所述反重打包代碼,以獲取所述加殼程序的簽名值并將所述簽名值上傳到所述服務(wù)器,以便所述服務(wù)器通過判斷所述加殼程序的簽名值與所述原始簽名值是否相同來判斷所述加殼應(yīng)用是否已被重打包。
[0021]優(yōu)選地,所述代碼寫入單元將所述反調(diào)試代碼、所述解密代碼和所述反重打包代碼中的至少一項寫入所述殼程序的動態(tài)鏈接庫。
[0022]優(yōu)選地,所述代碼寫入單元將所述反調(diào)試代碼、所述解密代碼和所述反重打包代碼中的至少一項寫入所述殼程序的靜態(tài)鏈接庫。
[0023]優(yōu)選地,所述處理裝置還可以包括編譯單元,用于使用Ilvm對所述加殼應(yīng)用進行編譯。
[0024]通過使用上述反逆向方法和裝置,能夠?qū)訉犹嵘龖?yīng)用的逆向難度,混淆破解者的視聽,由此從實質(zhì)上改善應(yīng)用的保護水平。
【附圖說明】
[0025]通過結(jié)合附圖對本公開示例性實施方式進行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標(biāo)號通常代表相同部件。
[0026]圖1是用于實施本發(fā)明的示例性計算系統(tǒng)的框圖。
[0027]圖2是根據(jù)本發(fā)明的一個實施例的應(yīng)用程序的處理方法的流程圖。
[0028]圖3是根據(jù)本發(fā)明的一個實施例的應(yīng)用程序的處理裝置的示意圖。
【具體實施方式】
[0029]下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0030]當(dāng)前,隨著各類在線社區(qū)和移動終端數(shù)量的日益龐大,產(chǎn)生了大量的第三方應(yīng)用。由于可見的非法所得巨大,應(yīng)用的逆向分析技術(shù)日益發(fā)展,加之大多數(shù)應(yīng)用開發(fā)人員不懂逆向工程,使得對應(yīng)用內(nèi)源碼的保護幾乎形同虛設(shè)。非法拷貝、逆向工程、反編譯、調(diào)試、破解、二次打包、內(nèi)存截取等手段不斷威脅著應(yīng)用安全,不僅危害了使用者,也給正常應(yīng)用開發(fā)者造成嚴(yán)重的損害。
[0031]另外,雖然Windows和OS系統(tǒng)下的應(yīng)用也存在破解問題,但例如安卓的開源系統(tǒng)由于為應(yīng)用開發(fā)者提供了更多的功能接口而面臨更為嚴(yán)峻的破解問題。
[0032]鑒于上述問題,本發(fā)明提出了一種新穎的反逆向機制,并且能夠在優(yōu)選實施例中與加殼、反重打包、將相關(guān)代碼寫入鏈接庫等手段相結(jié)合,為應(yīng)用(尤其是安卓應(yīng)用)提供全方位的保護。
[0033]圖1是用于實施本發(fā)明的示例性計算系統(tǒng)10的框圖。該計算系統(tǒng)包括但不限于一個或多個處理器110、存儲器120和輸入輸出裝置130。處理器110連接至存儲器120和輸入輸出裝置130。在一個實施例中,上述組件也可以彼此相連,例如通過總線。該計算系統(tǒng)10可以采用例如服務(wù)器的形式實現(xiàn),并且還可以包括用于實現(xiàn)其必需功能的其他組件,例如通信裝置等。應(yīng)當(dāng)理解,圖1所述的結(jié)構(gòu)框圖僅僅是為了示例的目的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況增加或減少某些設(shè)備。
[0034]圖2是根據(jù)本發(fā)明的一個實施例的一種應(yīng)用程序的處理方法的流程圖。該反逆向分析方法可由圖1所示的計算系統(tǒng)10,尤其是其中的處理器110執(zhí)行。例如,存儲器120上可以存儲指令,并且所述指令在被處理器110執(zhí)行時,可以實現(xiàn)該程序處理方法。在步驟S210,向所述應(yīng)用程序添加殼程序。在步驟S220,使用殼程序的可執(zhí)行文件來替代所述應(yīng)用程序的可執(zhí)行文件。在步驟S230,創(chuàng)建與所述殼程序的可執(zhí)行文件相關(guān)聯(lián)的殼程序執(zhí)行入口,以替代與所述應(yīng)用程序的可執(zhí)行文件相對應(yīng)的應(yīng)用程序執(zhí)行入口。在步驟S240,向所述殼程序添加反調(diào)試代碼,其中,所述殼程序的可執(zhí)行文件在檢測到所述應(yīng)用程序正被非法調(diào)試時,調(diào)用所述反調(diào)試代碼對所述應(yīng)用程序的調(diào)試結(jié)果進行修改。
[0035]由于破解者在對應(yīng)用進行破解時需要對應(yīng)用進行逆向分析,而通常的手段之一便是調(diào)試(在這里的調(diào)試指代非法調(diào)試,不同于開發(fā)者進行的debug)。開發(fā)者在保護自己軟件防止被逆向時則會相應(yīng)地進行反調(diào)試來阻止破解者調(diào)試自己的程序。具體的實現(xiàn)代碼可以通過檢測程序自身運行環(huán)境來判斷應(yīng)用是否正處于被調(diào)試的狀態(tài),由此進行相應(yīng)的操作?,F(xiàn)有技術(shù)中,如果檢測到了被調(diào)試就調(diào)用退出代碼或報錯,讓調(diào)試者無法繼續(xù)進行調(diào)試。然而,檢測到反調(diào)試直接退出或報錯,反而讓有經(jīng)驗的破解者知道應(yīng)用本身存在反調(diào)試機制,然后就可以順勢找出反調(diào)試代碼并加以破解。本發(fā)明則是跳出了開發(fā)者已有的思路,在檢測到軟件被調(diào)試時不是簡單的退出程序,而是給出一個跟正確結(jié)果不同但又不影響程序正常運行的值來迷惑破解者,提高破解者進行逆向的難度。
[0036]具體地,例如應(yīng)用程序在獲知自己正被非法調(diào)試時,或者殼程序的可執(zhí)行文件在檢測到所述應(yīng)用程序正被非法調(diào)試時,會向數(shù)據(jù)服務(wù)器發(fā)送相應(yīng)的網(wǎng)絡(luò)請求,而反調(diào)試代碼會將這些請求打上特殊的標(biāo)簽,服務(wù)器會根據(jù)打了標(biāo)簽的請求返回一些請求數(shù)據(jù),而這些請求數(shù)據(jù)是并不是正常的請求數(shù)據(jù)。從而達(dá)到混淆的目的。
[0037]例如,假設(shè)一個Root提權(quán)程序在執(zhí)行過程中將需要用到的關(guān)鍵算法通過網(wǎng)絡(luò)下發(fā),動態(tài)加載算法代碼然后調(diào)用。Root提權(quán)程序運行的結(jié)果有兩種:顯示root成功,顯示root失敗。如果加入通常的反調(diào)試代碼,則當(dāng)檢測到調(diào)試后會直接退出或報錯。但如果加入本發(fā)明的反調(diào)試代碼,則當(dāng)檢測到調(diào)試后可以通過網(wǎng)絡(luò)下發(fā)不正確的算法代碼。顯然此不正確的算法代碼在程序中無法達(dá)到跟正常運行時的結(jié)果,但是逆向者根本沒法確定下發(fā)的這個不正確的算法是不正確的,由此逆向者就不知道自己逆向的算法是否正確,從而達(dá)到混淆逆向者邏輯的目的。
[0038]在一個優(yōu)選實施例中,對所述應(yīng)用程序添加殼程序可以包括:使用加密算法對所述應(yīng)用程序的可執(zhí)行文件進行加密;以及保存經(jīng)加密的所述應(yīng)用程序的可執(zhí)行文件與所述應(yīng)用程序執(zhí)行入口并將與所述加密算法相對應(yīng)的解密代碼寫入所述殼程序。由此,通過加密和保存隱藏的入口來進一步提升應(yīng)用的保護強度。
[0039]殼程序的可執(zhí)行文件在檢測到所述應(yīng)用程序未被非法調(diào)試的情況下,調(diào)用所述解密代碼對已加密的所述應(yīng)用程序的可執(zhí)行文件進行解密。由此,在未被非法調(diào)試的情況下,可以正常執(zhí)行應(yīng)用程序。
[0040]在一個優(yōu)選實施例中,對所述應(yīng)用程序添加殼程序還可以包括:將反重打包代碼寫入所述殼程序;壓縮添加了所述殼程序的所述應(yīng)用程序,以得到加殼程序;對所述加殼程序進行簽名以得到原始簽名值;以及將所述原始簽名值上傳到服務(wù)器,以便服務(wù)器保存原始簽名值,其中,在所述加殼程序運行時,所述殼程序的可執(zhí)行文件調(diào)用所述反重打包代碼,以獲取所述加殼程序的簽名值并將所述簽名值上傳所述服務(wù)器,以便所述服務(wù)器通過判斷所述加殼程序的簽名值與所述原始簽名值是否相同來判斷所述加殼應(yīng)用是否已被重打包。由此,由于兩簽名的驗證在服務(wù)器上進行,就提高了加殼程序發(fā)布以后修改程序偽造簽名通過驗證的難度,從而進一步提升應(yīng)用的保護強度。
[0041]在一個優(yōu)選實施例中,可以將上述反調(diào)試代碼、解密代碼和反重打包代碼中的至少一項寫入所述殼程序的鏈接庫。殼程序的鏈接庫顯然仍屬于殼程序的一部分。另外,在某些情況下,殼程序和原本的應(yīng)用程序可以共用一個鏈接庫。通過將上述代碼寫入鏈接庫而非直接寫入可執(zhí)行程序中,能夠增加破解者找到上述代碼的難度,由此提升應(yīng)用的保護強度。
[0042]例如,可以針對不同的系統(tǒng)對其中的so文件或者bin文件編譯代碼使用動態(tài)庫或是靜態(tài)庫。動態(tài)鏈接庫把調(diào)用的函數(shù)所在文件模塊和調(diào)用函數(shù)在文件中的位置等信息鏈接進目標(biāo)程序,程序運行的時候再從系統(tǒng)中其它文件模塊中尋找相應(yīng)函數(shù)代碼,因此需要相應(yīng)文件模塊的支持,程序中會有符號存在。靜態(tài)連接庫把庫文件中用到的函數(shù)代碼直接鏈接進目標(biāo)程序,程序運行的時候不再需要其它的庫文件,程序中沒有任何符號存在,破解難度更大。但相對于使用動態(tài)庫而言靜態(tài)庫生成的文件大小會大很多,因此兩種方法各有利弊,可以根據(jù)實際情況加以選擇。
[0043]優(yōu)選地,還可以使用Ilvm對所述加殼程序進行編譯,由此就可以在不影響原程序流程運行結(jié)果的前提下對程序的代碼混淆膨脹,讓破解者難以找出源程序的代碼關(guān)聯(lián),增加破解難度。
[0044]圖2所示的上述方法及其優(yōu)選實施例可由對應(yīng)的處理裝置實施。圖3是根據(jù)本發(fā)明的一個實施例的應(yīng)用程序的處理裝置30的示意圖。處理裝置30包括加殼單元310,用于對所述應(yīng)用程序添加殼程序。處理裝置30還包括可執(zhí)行文件替代單元320,用于使用殼程序的可執(zhí)行文件來替代所述應(yīng)用程序的可執(zhí)行文件。處理裝置30還包括入口替代單元330,用于創(chuàng)建與所述殼程序的可執(zhí)行文件相關(guān)聯(lián)的殼程序執(zhí)行入口,以替代與所述應(yīng)用程序的可執(zhí)行文件相對應(yīng)的應(yīng)用程序執(zhí)行入口。處理裝置30還包括代碼添加單元340,用于向所述殼程序添加反調(diào)試代碼,其中,在所述殼程序的可執(zhí)行文件在檢測到應(yīng)用程序正被非法調(diào)試時,調(diào)用所述反調(diào)試代碼對所述應(yīng)用程序的調(diào)試結(jié)果進行修改。
[0045]在一個優(yōu)選實施例中,應(yīng)用程序的處理裝置30還可以包括加密單元和保存單元。加密單元可以使用加密算法對所述應(yīng)用程序的可執(zhí)行文件進行加密。保存單元則可保存經(jīng)加密的所述應(yīng)用程序的可執(zhí)行文件與所述應(yīng)用程序執(zhí)行入口并將與所述加密算法相對應(yīng)的解密代碼寫入所述殼程序。
[0046]殼程序的可執(zhí)行文件在檢測到所述應(yīng)用程序未被非法調(diào)試的情況下,調(diào)用所述解密代碼對已加密的所述應(yīng)用程序的可執(zhí)行文件進行解密。由此,在未被非法調(diào)試的情況下,可以正常執(zhí)行應(yīng)用程序。
[0047]在一個優(yōu)選實施例中,應(yīng)用程序的處理裝置30還可以包括反重打包單元。反重打包單元可以將反重打包代碼寫入所述殼程序;壓縮經(jīng)加殼操作的所述應(yīng)用以得到加殼應(yīng)用;對所述加殼應(yīng)用進行簽名以得到原始簽名值;以及將所述原始簽名值上傳到服務(wù)器,以便服務(wù)器保存原始簽名值,其中,在加殼應(yīng)用運行時殼程序的可執(zhí)行文件調(diào)用所述反重打包代碼,以獲取所述加殼應(yīng)用的簽名值并將所述簽名值上傳到所述服務(wù)器,以便所述服務(wù)器通過判斷所述加殼應(yīng)用的簽名值與所述原始簽名值是否相同來判斷所述加殼應(yīng)用是否已被重打包。
[0048]優(yōu)選地,代碼寫入單元310將所述反調(diào)試代碼、所述解密代碼和所述反重打包代碼中的至少一項寫入所述殼程序的動態(tài)鏈接庫或是靜態(tài)鏈接庫。
[0049]優(yōu)選地,處理裝置30還可以包括編譯單元,用以使用Ilvm對所述加殼程序用進行編譯。
[0050]上文中已經(jīng)參考附圖詳細(xì)描述了根據(jù)本發(fā)明的應(yīng)用程序處理方法和裝置。本發(fā)明的上述機制可以適用于各類操作系統(tǒng),尤其適用于更容易被破解的安卓系統(tǒng)。
[0051]此外,根據(jù)本發(fā)明的方法還可以實現(xiàn)為一種計算機程序,該計算機程序包括用于執(zhí)行本發(fā)明的上述方法中限定的上述各步驟的計算機程序代碼指令?;蛘?,根據(jù)本發(fā)明的方法還可以實現(xiàn)為一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括計算機可讀介質(zhì),在該計算機可讀介質(zhì)上存儲有用于執(zhí)行本發(fā)明的上述方法中限定的上述功能的計算機程序。本領(lǐng)域技術(shù)人員還將明白的是,結(jié)合這里的公開所描述的各種示例性邏輯塊、模塊、電路和算法步驟可以被實現(xiàn)為電子硬件、計算機軟件或兩者的組合。
[0052]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)和方法的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實現(xiàn)中,方框中所標(biāo)記的功能也可以以不同于附圖中所標(biāo)記的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0053]以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進,或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實施例。
【主權(quán)項】
1.一種應(yīng)用程序的處理方法,包括: 向所述應(yīng)用程序添加殼程序; 使用殼程序的可執(zhí)行文件來替代所述應(yīng)用程序的可執(zhí)行文件; 創(chuàng)建與所述殼程序的可執(zhí)行文件相關(guān)聯(lián)的殼程序執(zhí)行入口,以替代與所述應(yīng)用程序的可執(zhí)行文件相對應(yīng)的應(yīng)用程序執(zhí)行入口 ; 向所述殼程序添加反調(diào)試代碼,其中,所述殼程序的可執(zhí)行文件在檢測到所述應(yīng)用程序正被非法調(diào)試時,調(diào)用所述反調(diào)試代碼對所述應(yīng)用程序的調(diào)試結(jié)果進行修改。2.如權(quán)利要求1所述的方法,對所述應(yīng)用程序添加殼程序的步驟包括: 使用加密算法對所述應(yīng)用程序的可執(zhí)行文件進行加密;以及 保存經(jīng)加密的所述應(yīng)用程序的可執(zhí)行文件與所述應(yīng)用程序執(zhí)行入口,并將與所述加密算法相對應(yīng)的解密代碼寫入所述殼程序。3.如權(quán)利要求2所述的方法,其中, 所述殼程序的可執(zhí)行文件在檢測到所述應(yīng)用程序未被非法調(diào)試的情況下,調(diào)用所述解密代碼對已加密的所述應(yīng)用程序的可執(zhí)行文件進行解密。4.如權(quán)利要求3所述的方法,其中,對所述應(yīng)用程序添加殼程序的步驟包括: 將反重打包代碼寫入所述殼程序; 壓縮添加了所述殼程序的所述應(yīng)用程序,以得到加殼程序; 對所述加殼程序進行簽名以得到原始簽名值;以及 將所述原始簽名值上傳到服務(wù)器, 其中,在所述加殼程序運行時,所述殼程序的可執(zhí)行文件調(diào)用所述反重打包代碼,以獲取所述加殼程序的簽名值并將所述簽名值上傳到所述服務(wù)器,以便所述服務(wù)器通過判斷所述加殼程序的簽名值與所述原始簽名值是否相同來判斷所述加殼應(yīng)用是否已被重打包。5.如權(quán)利要求4所述的方法,其中,所述反調(diào)試代碼、所述解密代碼和所述反重打包代碼中的至少一項被寫入所述殼程序的動態(tài)鏈接庫或靜態(tài)鏈接庫。6.如權(quán)利要求4所述的方法,還包括: 使用Ilvm對所述加殼程序進行編譯。7.一種應(yīng)用程序的處理裝置,包括: 加殼單元,用于向所述應(yīng)用程序添加殼程序; 可執(zhí)行文件替代單元,用于使用殼程序的可執(zhí)行文件來替代所述應(yīng)用程序的可執(zhí)行文件; 入口替代單元,用于創(chuàng)建與所述殼程序的可執(zhí)行文件相關(guān)聯(lián)的殼程序執(zhí)行入口,以替代與所述應(yīng)用程序的可執(zhí)行文件相對應(yīng)的應(yīng)用程序執(zhí)行入口; 代碼添加單元,用于向所述殼程序添加反調(diào)試代碼,其中,所述殼程序的可執(zhí)行文件在檢測到所述應(yīng)用程序正被非法調(diào)試時,調(diào)用所述反調(diào)試代碼對所述應(yīng)用程序的調(diào)試結(jié)果進行修改。8.如權(quán)利要求7所述的裝置,還包括: 加密單元,用于使用加密算法對所述應(yīng)用程序的可執(zhí)行文件進行加密;以及保存單元,用于保存經(jīng)加密的所述應(yīng)用程序的可執(zhí)行文件與所述應(yīng)用程序執(zhí)行入口,并將與所述加密算法相對應(yīng)的解密代碼寫入所述殼程序。9.如權(quán)利要求8所述的裝置,還包括反重打包單元,用于: 將反重打包代碼寫入所述殼程序; 壓縮添加了所述殼程序的所述應(yīng)用程序,以得到加殼程序; 對所述加殼程序進行簽名以得到原始簽名值;以及 將所述原始簽名值上傳到服務(wù)器, 其中,在所述加殼程序運行時,所述殼程序的可執(zhí)行文件調(diào)用所述反重打包代碼,以獲取所述加殼程序的簽名值并將所述簽名值上傳到所述服務(wù)器,以便所述服務(wù)器通過判斷所述加殼程序的簽名值與所述原始簽名值是否相同來判斷所述加殼應(yīng)用是否已被重打包。10.如權(quán)利要求9所述的裝置,其中,所述代碼寫入單元將所述反調(diào)試代碼、所述解密代碼和所述反重打包代碼中的至少一項寫入所述殼程序的動態(tài)鏈接庫或靜態(tài)鏈接庫。11.如權(quán)利要求9所述的裝置,還包括: 編譯單元,用于使用I Ivm對所述加殼程序進行編譯。
【文檔編號】G06F21/14GK105825085SQ201610149680
【公開日】2016年8月3日
【申請日】2016年3月16日
【發(fā)明人】鐘炳杰
【申請人】廣州彩瞳網(wǎng)絡(luò)技術(shù)有限公司