本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種實現(xiàn)APK文件保護的方法及裝置。
背景技術(shù):
APK文件的字節(jié)碼文件即classes.dex文件,是APK文件的java源碼編譯后生成的java字節(jié)碼文件。字節(jié)碼文件由文件頭、索引區(qū)和數(shù)據(jù)區(qū)三大部分組成。如果能夠?qū)ex文件進行逆向,即可還原出APK文件的源代碼,若在源代碼的基礎(chǔ)上加入惡意代碼,重新簽名打包,即可生成攜帶惡意代碼的APK文件。
隨著Android移動終端平臺的日益發(fā)展,第三方應(yīng)用程序大量涌現(xiàn),對第三方應(yīng)用的盜版和重打包現(xiàn)象日益嚴(yán)重。由于Android平臺軟件使用的編程語言是Java,而Java源代碼編譯后的二進制代碼極易被反編譯,導(dǎo)致其破解難度遠小于其他使用編譯性語言編寫的程序。因此,需要提供一種能夠避免通過Dex文件進行逆向而還原出APK文件的源代碼的實現(xiàn)APK文件保護的方法。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的實現(xiàn)APK文件保護的方法及裝置。
本發(fā)明的一個方面,提供了一種實現(xiàn)APK文件保護的方法,包括:
當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件;
調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,根據(jù)修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。
可選的,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,具體包括:調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,所述特征值為所述字節(jié)碼文件的核心代碼。
可選的,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,具體包括:調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,所述特征值為所述字節(jié)碼文件的核心代碼。
可選的,所述字節(jié)碼文件包括數(shù)據(jù)段,所述數(shù)據(jù)段包括所述特征值;
所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,具體包括:
調(diào)用預(yù)設(shè)修改文件修改所述特征值的代碼在所述數(shù)據(jù)段的代碼中所處位置,以修改所述特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置。
可選的,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,具體包括:調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼。
可選的,在所述當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件之后,所述方法還包括:
判斷是否存在所述預(yù)設(shè)修改文件;
若不存在所述預(yù)設(shè)修改文件,則生成所述預(yù)設(shè)修改文件,并執(zhí)行調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼的步驟。
可選的,所述方法還包括:
將所述字節(jié)碼文件進行加密處理,并將加密后的字節(jié)碼文件備份到所述APK文件的lib目錄下的SO文件中;
將所述SO文件作為代碼數(shù)據(jù)寫入殼程序文件。
本發(fā)明的另一個方面,提供了一種實現(xiàn)APK文件保護的裝置,包括:
獲取單元,適于當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件;
修改單元,適于調(diào)用預(yù)設(shè)修改文件修改所述獲取單元獲取的字節(jié)碼文件的 代碼;
生成單元,適于根據(jù)修改單元修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。
可選的,所述修改單元,具體適于調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,所述特征值為所述字節(jié)碼文件的核心代碼。
可選的,所述修改單元,具體適于調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,所述特征值為所述字節(jié)碼文件的核心代碼。
可選的,所述字節(jié)碼文件包括數(shù)據(jù)段,所述數(shù)據(jù)段包括所述特征值;
所述修改單元,具體適于調(diào)用預(yù)設(shè)修改文件修改所述特征值的代碼在所述數(shù)據(jù)段的代碼中所處位置,以修改所述特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置。
可選的,所述修改單元,具體適于調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼。
可選的,所述裝置還包括:
判斷單元,適于在所述獲取單元獲取所述字節(jié)碼文件之后,判斷是否存在所述預(yù)設(shè)修改文件;
相應(yīng)地,所述生成單元,還適于在所述判斷單元的判斷結(jié)果為不存在所述預(yù)設(shè)修改文件時,生成所述預(yù)設(shè)修改文件,并使所述修改單元執(zhí)行調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼的操作。
可選的,所述裝置還包括:
加密單元,適于將所述字節(jié)碼文件進行加密處理,并將加密后的字節(jié)碼文件備份到所述APK文件的lib目錄下的SO文件中;
處理單元,適于將所述SO文件作為代碼數(shù)據(jù)寫入殼程序文件。
本發(fā)明實施例中提供的技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
在本發(fā)明實施例中,當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,則獲取所述字節(jié)碼文件,通過調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼, 根據(jù)修改后的代碼生成對應(yīng)的偽字節(jié)碼文件,進而通過生成偽字節(jié)碼文件的方式,使第三方無法通過逆向破解字節(jié)碼文件而還原出對應(yīng)的APK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)APK文件保護的方法的流程圖;
圖2示出了根據(jù)本發(fā)明另一實施例的一種實現(xiàn)APK文件保護的方法的流程圖;
圖3示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)APK文件保護的裝置的結(jié)構(gòu)示意圖;
圖4示出了根據(jù)本發(fā)明另一實施例的一種實現(xiàn)APK文件保護的裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非被特定定義,否則不會用理想化或過于正式的含義來解釋。
圖1示意性示出了本發(fā)明一個實施例的實現(xiàn)APK文件保護的方法的流程圖。
參照圖1,本發(fā)明實施例的實現(xiàn)APK文件保護的方法具體包括以下步驟:
S11、當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件。
其中,字節(jié)碼文件即classes.dex文件,是APK文件的java源碼編譯后生成的java字節(jié)碼文件。字節(jié)碼文件由文件頭、索引區(qū)和數(shù)據(jù)區(qū)三大部分組成。
可理解的是,當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,即可認(rèn)為時存在第三方惡意程序在逆向破解所述字節(jié)碼文件。
S12、調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,根據(jù)修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。
本實施例中,調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,并在修改所述字節(jié)碼文件的代碼之后,將根據(jù)修改后的字節(jié)碼文件的代碼重新生成一個偽字節(jié)碼文件,生成的偽字節(jié)碼文件中字節(jié)碼文件中的代碼已發(fā)生改變。因此,當(dāng)?shù)谌綗o法通過生成的偽字節(jié)碼文件逆向破解字節(jié)碼文件還原PK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的 安全等級,保護開發(fā)者和使用者的利益。
在圖1所描述的實現(xiàn)APK文件保護的方法中,當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件,調(diào)用預(yù)設(shè)修改文件以修改所述字節(jié)碼文件的代碼,之后根據(jù)修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。由于檢測到針對APK文件的字節(jié)碼文件的處理指令時,將自動調(diào)用修改文件修改字節(jié)碼文件的代碼,因此,可以提高APK文件保護保護過程中字節(jié)碼文件的處理效率。
在本發(fā)明的一個優(yōu)選實施例中,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,具體包括:調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,所述特征值為所述字節(jié)碼文件的核心代碼。
本發(fā)明實施例中,通過調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,所述特征值為所述字節(jié)碼文件的核心代碼。當(dāng)?shù)谌綗o法通過生成的偽字節(jié)碼文件逆向破解字節(jié)碼文件還原PK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
在本發(fā)明的一個優(yōu)選實施例中,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,具體包括:調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,所述特征值為所述字節(jié)碼文件的核心代碼。
本發(fā)明實施例中,調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,所述特征值為所述字節(jié)碼文件的核心代碼。當(dāng)?shù)谌綗o法通過生成的偽字節(jié)碼文件逆向破解字節(jié)碼文件還原PK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
進一步地,所述字節(jié)碼文件包括數(shù)據(jù)段,所述數(shù)據(jù)段包括所述特征值;
所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述 字節(jié)碼文件的代碼中所處位置,具體包括:
調(diào)用預(yù)設(shè)修改文件修改所述特征值的代碼在所述數(shù)據(jù)段的代碼中所處位置,以修改所述特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置。
本發(fā)明實施例中,所述字節(jié)碼文件包括數(shù)據(jù)段,所述數(shù)據(jù)段包括所述特征值。具體通過調(diào)用預(yù)設(shè)修改文件修改所述特征值的代碼在所述數(shù)據(jù)段的代碼中所處位置,以修改所述特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置。因此,當(dāng)?shù)谌綗o法通過生成的偽字節(jié)碼文件逆向破解字節(jié)碼文件還原PK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
在本發(fā)明的一個優(yōu)選實施例中,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,具體包括:調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼。
本發(fā)明實施例中,通過調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼。因此,當(dāng)?shù)谌綗o法通過生成的偽字節(jié)碼文件逆向破解字節(jié)碼文件還原PK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
圖2示意性示出了本發(fā)明另一實施例的實現(xiàn)APK文件保護的方法的流程圖。
參照圖2,本發(fā)明實施例的實現(xiàn)APK文件保護的方法具體包括以下步驟:
S21、當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件。
S22、判斷是否存在所述預(yù)設(shè)修改文件,若不存在所述預(yù)設(shè)修改文件,則執(zhí)行步驟S23,若存在所述預(yù)設(shè)修改文件,則直接執(zhí)行步驟S24;
S23、生成所述預(yù)設(shè)修改文件;
S24、調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,根據(jù)修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。
本實施例中,當(dāng)生成預(yù)設(shè)修改文件或判斷出存在預(yù)設(shè)修改文件之后,將調(diào) 用預(yù)設(shè)修改文件修改字節(jié)碼文件的代碼,具體可通過調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,或,調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,或,調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼等方式實現(xiàn)。因此,第三方無法通過生成的偽字節(jié)碼文件逆向破解字節(jié)碼文件還原PK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
根據(jù)本發(fā)明的一個優(yōu)選實施例,所述方法還包括:將所述字節(jié)碼文件進行加密處理,并將加密后的字節(jié)碼文件備份到所述APK文件的lib目錄下的SO文件中;將所述SO文件作為代碼數(shù)據(jù)寫入殼程序文件。
本申請中所述的SO文件是指linux下的庫文件,后綴.so,因此得名。SO文件是ELF格式的動態(tài)鏈接庫文件,該類文件在程序運行需要的時候才動態(tài)加載到程序中,支持程序的運行。
本步驟中對SO文件進行加殼的過程,即將SO文件寫入殼程序文件中的指定位置,在加載運行SO文件時,殼程序文件會先于SO文件運行,取得優(yōu)先權(quán),保護SO文件不被非法修改或反編譯。
本發(fā)明實施例,通過將APK文件對應(yīng)的字節(jié)碼文件進行加密處理,并將加密后的字節(jié)碼文件備份保存到所述APK文件的lib目錄下的SO文件中,并對SO文件進行加殼處理和加保護處理,實現(xiàn)了對APK文件的字節(jié)碼文件的加固保護,可以有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施例所必須的。
圖3示意性示出了本發(fā)明一個實施例的實現(xiàn)APK文件保護的裝置的結(jié)構(gòu)示意圖。
參照圖3,本發(fā)明實施例的實現(xiàn)APK文件保護的裝置具體包括獲取單元301、修改單元302以及生成單元303,其中:
所述獲取單元301,適于當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件;
所述修改單元302,適于調(diào)用預(yù)設(shè)修改文件修改所述獲取單元獲取的字節(jié)碼文件的代碼;
所述生成單元303,適于根據(jù)修改單元修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。
本實施例中,調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,并在修改所述字節(jié)碼文件的代碼之后,將根據(jù)修改后的字節(jié)碼文件的代碼重新生成一個偽字節(jié)碼文件,生成的偽字節(jié)碼文件中字節(jié)碼文件中的代碼已發(fā)生改變。因此,當(dāng)?shù)谌綗o法通過生成的偽字節(jié)碼文件逆向破解字節(jié)碼文件還原PK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
根據(jù)本發(fā)明的一個優(yōu)選實施例,所述修改單元302,具體適于調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,所述特征值為所述字節(jié)碼文件的核心代碼。
根據(jù)本發(fā)明的一個優(yōu)選實施例,所述修改單元302,具體適于調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,所述特征值為所述字節(jié)碼文件的核心代碼。
根據(jù)本發(fā)明的一個優(yōu)選實施例,所述字節(jié)碼文件包括數(shù)據(jù)段,所述數(shù)據(jù)段包括所述特征值;
所述修改單元302,具體適于調(diào)用預(yù)設(shè)修改文件修改所述特征值的代碼在所述數(shù)據(jù)段的代碼中所處位置,以修改所述特征值對應(yīng)代碼在所述字節(jié)碼文件 的代碼中所處位置。
根據(jù)本發(fā)明的一個優(yōu)選實施例,所述修改單元302,具體適于調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼。
圖4示意性示出了本發(fā)明另一實施例的實現(xiàn)APK文件保護的裝置的結(jié)構(gòu)示意圖。
參照圖4,本發(fā)明實施例的實現(xiàn)APK文件保護的裝置具體包括獲取單元401、判斷單元402、修改單元403以及生成單元404,其中:
所述獲取單元401,適于當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件;
所述判斷單元402,適于在所述獲取單元獲取所述字節(jié)碼文件之后,判斷是否存在所述預(yù)設(shè)修改文件;
所述修改單元403,適于調(diào)用預(yù)設(shè)修改文件修改所述獲取單元獲取的字節(jié)碼文件的代碼;
所述生成單元404,適于根據(jù)修改單元修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。
本實施例中,當(dāng)生成預(yù)設(shè)修改文件或判斷出存在預(yù)設(shè)修改文件之后,將調(diào)用預(yù)設(shè)修改文件修改字節(jié)碼文件的代碼,具體可通過調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,或,調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,或,調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼等方式實現(xiàn)。因此,第三方無法通過生成的偽字節(jié)碼文件逆向破解字節(jié)碼文件還原PK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
進一步地,所述生成單元404,還適于在所述判斷單元的判斷結(jié)果為不存在所述預(yù)設(shè)修改文件時,生成所述預(yù)設(shè)修改文件。
根據(jù)本發(fā)明的一個優(yōu)選實施例,所述裝置還包括附圖中未示出的加密單元 和處理單元,其中:
所述加密單元,適于將所述字節(jié)碼文件進行加密處理,并將加密后的字節(jié)碼文件備份到所述APK文件的lib目錄下的SO文件中;
所述處理單元,適于將所述SO文件作為代碼數(shù)據(jù)寫入殼程序文件。
在本發(fā)明的一個優(yōu)選實施例中,所述處理單元,還適于對所述殼程序文件中的所述SO文件進行加保護處理。
本發(fā)明實施例,通過將APK文件對應(yīng)的字節(jié)碼文件進行加密處理,并將加密后的字節(jié)碼文件備份保存到所述APK文件的lib目錄下的SO文件中,并對SO文件進行加殼處理和加保護處理,實現(xiàn)了對APK文件的字節(jié)碼文件的加固保護,可以有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,進而提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
由于本實施例所介紹的實現(xiàn)APK文件保護的裝置為實施本申請實施例中實現(xiàn)APK文件保護的方法所采用的裝置,故而基于本申請實施例中所介紹的實現(xiàn)APK文件保護的方法,本領(lǐng)域所屬技術(shù)人員能夠了解本實施例的實現(xiàn)APK文件保護的裝置的具體實施方式以及其各種變化形式,所以在此對于該實現(xiàn)APK文件保護的裝置如何實現(xiàn)本申請實施例中的實現(xiàn)APK文件保護的方法不再詳細介紹。只要本領(lǐng)域所屬技術(shù)人員實施本申請實施例中實現(xiàn)APK文件保護的方法所采用的裝置,都屬于本申請所欲保護的范圍。
綜上所述,本發(fā)明實施例提供的實現(xiàn)APK文件保護的方法及裝置,當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,則獲取所述字節(jié)碼文件,通過調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,根據(jù)修改后的代碼生成對應(yīng)的偽字節(jié)碼文件,進而通過生成偽字節(jié)碼文件的方式,使第三方無法通過逆向破解字節(jié)碼文件而還原出對應(yīng)的APK文件的源代碼,有效阻止惡意程序?qū)ψ止?jié)碼文件的反匯編分析,提高APK文件的安全等級,保護開發(fā)者和使用者的利益。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有 相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著 處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的網(wǎng)關(guān)、代理服務(wù)器、系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明提供A1、一種實現(xiàn)APK文件保護的方法,包括:
當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件;
調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,根據(jù)修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。
A2、根據(jù)A1所述的方法,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的 代碼,具體包括:調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,所述特征值為所述字節(jié)碼文件的核心代碼。
A3、根據(jù)A1所述的方法,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,具體包括:調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,所述特征值為所述字節(jié)碼文件的核心代碼。
A4、根據(jù)A3所述的方法,所述字節(jié)碼文件包括數(shù)據(jù)段,所述數(shù)據(jù)段包括所述特征值;
所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,具體包括:
調(diào)用預(yù)設(shè)修改文件修改所述特征值的代碼在所述數(shù)據(jù)段的代碼中所處位置,以修改所述特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置。
A5、根據(jù)A1所述的方法,所述調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼,具體包括:調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼。
A6、根據(jù)A1~5中任一項所述的方法,在所述當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件之后,所述方法還包括:
判斷是否存在所述預(yù)設(shè)修改文件;
若不存在所述預(yù)設(shè)修改文件,則生成所述預(yù)設(shè)修改文件,并執(zhí)行調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼的步驟。
A7、根據(jù)A1~6中任一項所述的方法,還包括:
將所述字節(jié)碼文件進行加密處理,并將加密后的字節(jié)碼文件備份到所述APK文件的lib目錄下的SO文件中;
將所述SO文件作為代碼數(shù)據(jù)寫入殼程序文件。
B8、一種實現(xiàn)APK文件保護的裝置,包括:
獲取單元,適于當(dāng)檢測到針對APK文件的字節(jié)碼文件的處理指令時,獲取所述字節(jié)碼文件;
修改單元,適于調(diào)用預(yù)設(shè)修改文件修改所述獲取單元獲取的字節(jié)碼文件的代碼;
生成單元,適于根據(jù)修改單元修改后的代碼生成對應(yīng)的偽字節(jié)碼文件。
B9、根據(jù)B8所述的裝置,所述修改單元,具體適于調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值的編碼方式,所述特征值為所述字節(jié)碼文件的核心代碼。
B10、根據(jù)B8所述的裝置,所述修改單元,具體適于調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件中的特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置,所述特征值為所述字節(jié)碼文件的核心代碼。
B11、根據(jù)B10所述的裝置,所述字節(jié)碼文件包括數(shù)據(jù)段,所述數(shù)據(jù)段包括所述特征值;
所述修改單元,具體適于調(diào)用預(yù)設(shè)修改文件修改所述特征值的代碼在所述數(shù)據(jù)段的代碼中所處位置,以修改所述特征值對應(yīng)代碼在所述字節(jié)碼文件的代碼中所處位置。
B12、根據(jù)B8所述的裝置,所述修改單元,具體適于調(diào)用預(yù)設(shè)修改文件刪除所述字節(jié)碼文件中部分代碼。
B13、根據(jù)B8~12中任一項所述的裝置,還包括:
判斷單元,適于在所述獲取單元獲取所述字節(jié)碼文件之后,判斷是否存在所述預(yù)設(shè)修改文件;
相應(yīng)地,所述生成單元,還適于在所述判斷單元的判斷結(jié)果為不存在所述預(yù)設(shè)修改文件時,生成所述預(yù)設(shè)修改文件,并使所述修改單元執(zhí)行調(diào)用預(yù)設(shè)修改文件修改所述字節(jié)碼文件的代碼的操作。
B14、根據(jù)B8~13中任一項所述的裝置,還包括:
加密單元,適于將所述字節(jié)碼文件進行加密處理,并將加密后的字節(jié)碼文件備份到所述APK文件的lib目錄下的SO文件中;
處理單元,適于將所述SO文件作為代碼數(shù)據(jù)寫入殼程序文件。