本發(fā)明涉及代碼加密
技術(shù)領(lǐng)域:
:,具體而言,本發(fā)明涉及一種應(yīng)用程序的代碼混淆方法,及一種應(yīng)用程序的代碼混淆裝置。
背景技術(shù):
::隨著軟件相關(guān)技術(shù)的飛速發(fā)展,人們的生活和工作對(duì)應(yīng)用程序的依賴度也隨之提高,其安全意識(shí)也逐漸增強(qiáng)。一方面,應(yīng)用程序在發(fā)布后,容易被反編譯而暴露其源代碼,導(dǎo)致該應(yīng)用程序的相關(guān)核心技術(shù)被竊取,給開(kāi)發(fā)者造成巨大的經(jīng)濟(jì)損失,同時(shí),也存在被破解后被植入惡意代碼的風(fēng)險(xiǎn),使得用戶的個(gè)人隱私的安全性受到威脅;另一方面,各大應(yīng)用程序的下載平臺(tái),由于不同產(chǎn)商在同類型應(yīng)用產(chǎn)品中存在競(jìng)爭(zhēng),導(dǎo)致其它同類型應(yīng)用程序在下載平臺(tái)提交下載包的審核時(shí),下載平臺(tái)對(duì)該應(yīng)用程序的下載包使用靜態(tài)掃描等技術(shù)獲取應(yīng)用程序內(nèi)部的相關(guān)信息,一旦確認(rèn)該應(yīng)用程序與下載平臺(tái)中已存在的其它同類型應(yīng)用程序存在競(jìng)爭(zhēng)關(guān)系時(shí),下載平臺(tái)將拒絕該應(yīng)用程序提交的審核,用戶將無(wú)法在該下載平臺(tái)上下載該應(yīng)用程序?,F(xiàn)有技術(shù)的應(yīng)用程序代碼的安全處理方式一般采用對(duì)應(yīng)用程序代碼編譯后的機(jī)器碼進(jìn)行加密操作,或是通過(guò)執(zhí)行腳本進(jìn)行加密處理操作,經(jīng)過(guò)上述處理后的應(yīng)用程序,很容易被逆向工程破解,通過(guò)利用反編譯器得到相應(yīng)的高級(jí)語(yǔ)言表達(dá)形式,從而獲取具有很強(qiáng)可讀性的源代碼。技術(shù)實(shí)現(xiàn)要素:為克服上述技術(shù)問(wèn)題或者至少部分地解決上述技術(shù)問(wèn)題,特提出以下技術(shù)方案:本發(fā)明的實(shí)施例提出了一種應(yīng)用程序的代碼混淆方法,包括:基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串;通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作;當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串;通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以執(zhí)行相應(yīng)的應(yīng)用程序代碼。優(yōu)選地,基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串的步驟,包括:遍歷應(yīng)用程序代碼中的字符串以確定各字符串的類型;將與預(yù)定的字符串類型相匹配的字符串確定為需混淆加密的字符串??蛇x地,該方法還包括:根據(jù)預(yù)定混淆加密級(jí)別的確定規(guī)則,確定應(yīng)用程序代碼中需混淆加密的字符串的混淆加密級(jí)別;確定與需混淆加密的字符串的混淆加密級(jí)別對(duì)應(yīng)的混淆加密方式;其中,通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作的步驟,包括:通過(guò)與混淆加密級(jí)別對(duì)應(yīng)的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作。優(yōu)選地,通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作的步驟之后,還包括:利用混淆加密后的字符串通過(guò)宏方法替換需混淆加密的字符串,以確定混淆加密后的應(yīng)用程序代碼。優(yōu)選地,通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作的步驟,包括:當(dāng)運(yùn)行所述應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串的混淆加密方式;通過(guò)已確定的解密方式對(duì)待執(zhí)行的混淆加密后的字符串進(jìn)行解密操作??蛇x地,該方法還包括:應(yīng)用程序代碼編譯完成后,獲取應(yīng)用程序代碼中已執(zhí)行混淆加密操作的各字符串;確定已執(zhí)行混淆加密操作的各字符串的混淆加密方式及相應(yīng)的解密方式;通過(guò)相應(yīng)的解密方式對(duì)已執(zhí)行混淆加密操作的各字符串執(zhí)行相應(yīng)的解密操作。優(yōu)選地,預(yù)定的字符串類型包括以下至少一項(xiàng):應(yīng)用程序代碼中直接使用的字符串;應(yīng)用程序中定義的宏字符串;應(yīng)用程序中程序塊外部定義的字符串;國(guó)際化本地文件中存儲(chǔ)的字符串。本發(fā)明的另一實(shí)施例提出了一種應(yīng)用程序的代碼混淆裝置,包括:第一確定模塊,用于基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串;加密及編譯模塊,用于通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作;第二確定模塊,用于當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串;第一解密模塊,用于通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以執(zhí)行相應(yīng)的應(yīng)用程序代碼。優(yōu)選地,第一確定模塊,包括:遍歷單元,用于遍歷應(yīng)用程序代碼中的字符串以確定各字符串的類型;第一確定單元,用于將與預(yù)定的字符串類型相匹配的字符串確定為需混淆加密的字符串??蛇x地,該裝置還包括:第三確定模塊,用于根據(jù)預(yù)定混淆加密級(jí)別的確定規(guī)則,確定應(yīng)用程序代碼中需混淆加密的字符串的混淆加密級(jí)別;第四確定模塊,用于確定與需混淆加密的字符串的混淆加密級(jí)別對(duì)應(yīng)的混淆加密方式;其中,加密及編譯模塊用于通過(guò)與混淆加密級(jí)別對(duì)應(yīng)的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作??蛇x地,該裝置還包括:替換模塊,用于利用混淆加密后的字符串通過(guò)宏方法替換需混淆加密的字符串,以確定混淆加密后的應(yīng)用程序代碼。優(yōu)選地,第一解密模塊,包括:第二確定單元,用于當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串的混淆加密方式;解密單元,用于通過(guò)已確定的解密方式對(duì)待執(zhí)行的混淆加密后的字符串進(jìn)行解密操作。可選地,該裝置還包括:獲取模塊,用于應(yīng)用程序代碼編譯完成后,獲取應(yīng)用程序代碼中已執(zhí)行混淆加密操作的各字符串;第五確定模塊,用于確定已執(zhí)行混淆加密操作的各字符串的混淆加密方式及相應(yīng)的解密方式;第二解密模塊,用于通過(guò)相應(yīng)的解密方式對(duì)已執(zhí)行混淆加密操作的各字符串執(zhí)行相應(yīng)的解密操作。優(yōu)選地,預(yù)定的字符串類型包括以下至少一項(xiàng):應(yīng)用程序代碼中直接使用的字符串;應(yīng)用程序中定義的宏字符串;應(yīng)用程序中程序塊外部定義的字符串;國(guó)際化本地文件中存儲(chǔ)的字符串。本發(fā)明的實(shí)施例中,基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串,可精確快速地判斷應(yīng)用程序代碼中的字符串是否需要進(jìn)行混淆加密,且實(shí)現(xiàn)了對(duì)不同類型的字符串進(jìn)行混淆加密;通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作,實(shí)現(xiàn)了在不修改應(yīng)用程序原有的代碼的基礎(chǔ)上對(duì)各字符串采用預(yù)定的混淆加密方式進(jìn)行混淆加密操作,保證了應(yīng)用程序的相關(guān)代碼混淆加密處理的效率;當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串,通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以保證后續(xù)執(zhí)行相應(yīng)應(yīng)用程序代碼,實(shí)現(xiàn)了高效精確地對(duì)待執(zhí)行的混淆加密后的字符串進(jìn)行解密,保證了應(yīng)用程序的正常運(yùn)行。進(jìn)一步地,由于不修改應(yīng)用程序原有的代碼,減少了開(kāi)發(fā)人員對(duì)應(yīng)用程序代碼的處理步驟,從而提高了開(kāi)發(fā)效率。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。附圖說(shuō)明本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:圖1為本發(fā)明中一個(gè)實(shí)施例的應(yīng)用程序的代碼混淆方法的流程圖;圖2為本發(fā)明中一個(gè)優(yōu)選實(shí)施例的應(yīng)用程序的代碼混淆方法的流程圖;圖3為本發(fā)明中另一實(shí)施例的應(yīng)用程序的代碼混淆裝置的結(jié)構(gòu)示意圖;圖4為本發(fā)明中另一優(yōu)選實(shí)施例的應(yīng)用程序的代碼混淆裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說(shuō)明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無(wú)線連接或無(wú)線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ)),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語(yǔ),應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過(guò)于正式的含義來(lái)解釋。下面結(jié)合附圖詳細(xì)說(shuō)明本發(fā)明的技術(shù)方案。圖1為本發(fā)明中一個(gè)實(shí)施例的應(yīng)用程序的代碼混淆方法的流程圖。步驟S110:基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串。具體地,在應(yīng)用程序代碼中將字符串類型屬于預(yù)定的字符串類型的字符串確定為需混淆加密的字符串。其中,預(yù)定的字符串類型包括但不限于:應(yīng)用程序代碼中直接使用的字符串;應(yīng)用程序中定義的宏字符串;應(yīng)用程序中程序塊外部定義的字符串;國(guó)際化本地文件中存儲(chǔ)的字符串。實(shí)際應(yīng)用中,開(kāi)發(fā)人員在開(kāi)發(fā)工具提供的人機(jī)交互界面中點(diǎn)擊針對(duì)應(yīng)用程序的代碼編譯按鈕時(shí),在對(duì)應(yīng)用程序代碼執(zhí)行編譯前,首先在應(yīng)用程序代碼中將字符串類型屬于預(yù)定的字符串類型的字符串確定為需混淆加密的字符串,如應(yīng)用程序代碼中字符串“ABC”的類型為宏定義的字符串,可確定字符串“ABC”為需混淆加密的字符串。在一優(yōu)選實(shí)施例中,步驟S110具體包括步驟S111和步驟S112;步驟S111:遍歷應(yīng)用程序代碼中的字符串以確定各字符串的類型;步驟S112:將與預(yù)定的字符串類型相匹配的字符串確定為需混淆加密的字符串。在一個(gè)具體應(yīng)用場(chǎng)景中,預(yù)定的字符串類型包括應(yīng)用程序代碼中直接使用的字符串和應(yīng)用程序中定義的宏字符串。開(kāi)發(fā)人員在開(kāi)發(fā)工具提供的人機(jī)交互界面中點(diǎn)擊應(yīng)用程序App1的代碼編譯按鈕時(shí),在執(zhí)行編譯操作前,首先遍歷應(yīng)用程序App1代碼中的各字符串,如包括“ABC”、“style”和“school”,隨后確定字符串“ABC”的類型為宏定義的字符串、字符串“style”的類型為應(yīng)用程序代碼中直接使用的字符串以及字符串“school”的類型為應(yīng)用程序代碼中類聲明中的類名,隨后將字符串的類型屬于預(yù)定的字符串類型的字符串“ABC”和“style”確定為需混淆加密的字符串。步驟S120:通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作。實(shí)際應(yīng)用中,通過(guò)與已確定需混淆加密的字符串相匹配的預(yù)定的混淆加密方式,對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作。在一個(gè)具體應(yīng)用場(chǎng)景中,已確定應(yīng)用程序App1的代碼中需混淆加密的字符串包括宏定義的字符串“ABC”和應(yīng)用程序代碼中直接使用的字符串“style”,隨后根據(jù)與字符串“ABC”相匹配的預(yù)定的混淆加密方式Base64算法編碼混淆加密,對(duì)字符串“ABC”執(zhí)行Base64算法編碼混淆加密操作,根據(jù)與字符串“style”相匹配的預(yù)定的混淆加密方式自定義混淆加密,對(duì)字符串“style”執(zhí)行自定義混淆加密操作;隨后,對(duì)混淆加密后的App1的代碼執(zhí)行編譯操作,以完成App1代碼的編譯。在另一具體應(yīng)用場(chǎng)景中,App1在代碼編譯時(shí)對(duì)需混淆加密的字符串進(jìn)行混淆加密方式包括至少兩種:一種為自定義的混淆加密方式,如首先將需混淆加密的字符串轉(zhuǎn)換成字節(jié),隨后對(duì)轉(zhuǎn)換成字節(jié)的值進(jìn)行異或運(yùn)算,最后將異或運(yùn)算后的值進(jìn)行Base64算法編碼混淆加密;另一種為Base64算法編碼混淆加密,在對(duì)需混淆加密的字符串混淆加密成功后,添加預(yù)定混淆加密方式的標(biāo)識(shí)信息,如自定義的混淆加密方式的標(biāo)識(shí)信息為“S01”,Base64算法編碼混淆加密方式的標(biāo)識(shí)信息為“S02”,如在對(duì)字符串“ABC”進(jìn)行Base64算法編碼混淆加密后得到字符串如“QUJD”,隨后在字符串內(nèi)容的頭部添加Base64算法編碼混淆加密方式的標(biāo)識(shí)信息“S02”,再在預(yù)定混淆加密方式的標(biāo)識(shí)信息后添加預(yù)定分隔符“-”,得到字符串“ABC”經(jīng)過(guò)Base64算法編碼混淆加密后的字符串為“S02-QUJD”,同理可得到字符串“style”經(jīng)過(guò)自定義混淆加密后的字符串為“S01-QW345”。在一優(yōu)選實(shí)施例中,步驟S120中通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作之后,該方法還包括步驟S150;步驟S150:利用混淆加密后的字符串通過(guò)宏方法替換需混淆加密的字符串,以確定混淆加密后的應(yīng)用程序代碼。接上例,在對(duì)字符串“ABC”執(zhí)行Base64算法編碼混淆加密操作后,得到混淆加密后的字符串如“S02-QUJD”,隨后通過(guò)宏方法將應(yīng)用程序代碼中的字符串“ABC”替換為“S02-QUJD”,以及在對(duì)字符串“style”執(zhí)行自定義混淆加密操作后,得到混淆加密后的字符串如“S01-QW345”,隨后通過(guò)宏方法將應(yīng)用程序代碼中的字符串“style”替換為“S01-QW345”,以確定混淆加密后的應(yīng)用程序代碼。在本優(yōu)選實(shí)施例中,使用宏方法對(duì)常量字符串等定義方式進(jìn)行替換,可快速完成將應(yīng)用程序代碼中混淆加密前的字符串替換為混淆加密后的字符串,同時(shí),在應(yīng)用程序代碼運(yùn)行中可動(dòng)態(tài)地使用替換后的宏方法,解決了現(xiàn)有技術(shù)中定義的靜態(tài)的常量字符串無(wú)法動(dòng)態(tài)使用的問(wèn)題,從而達(dá)到了全面替換應(yīng)用程序代碼中的各類型字符串,并通過(guò)宏方法在應(yīng)用程序代碼運(yùn)行中動(dòng)態(tài)使用的目的。在一優(yōu)選實(shí)施例中,該方法還包括步驟S160和步驟S170;步驟S160:根據(jù)預(yù)定混淆加密級(jí)別的確定規(guī)則,確定應(yīng)用程序代碼中需混淆加密的字符串的混淆加密級(jí)別;步驟S170:確定與需混淆加密的字符串的混淆加密級(jí)別對(duì)應(yīng)的混淆加密方式。本實(shí)施例中,通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作的步驟具體包括:通過(guò)與混淆加密級(jí)別對(duì)應(yīng)的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作。在一個(gè)具體應(yīng)用場(chǎng)景中,預(yù)定混淆加密級(jí)別的確定規(guī)則包括:預(yù)定字符串類型為宏定義的字符串的混淆加密級(jí)別為1級(jí),對(duì)應(yīng)的混淆加密方式為自定義混淆加密方式;預(yù)定字符串類型為非宏定義的字符串的混淆加密級(jí)別為2級(jí),對(duì)應(yīng)的混淆加密方式為Base64算法編碼混淆加密;其中,淆加密級(jí)別為由低到高依次為2級(jí)和1級(jí);自定義加密方式為首先將需混淆加密的字符串轉(zhuǎn)換成字節(jié),隨后對(duì)轉(zhuǎn)換成字節(jié)的值進(jìn)行異或運(yùn)算,最后將進(jìn)行異或運(yùn)算后的值進(jìn)行Base64算法編碼混淆加密。已確定需混淆加密的字符串為“ABC”和“style”,根據(jù)字符串“ABC”的類型為應(yīng)用程序代碼中直接使用的字符串,可確定字符串“ABC”的混淆加密級(jí)別為2級(jí);根據(jù)字符串“style”的類型為宏定義的字符串,可確定字符串“style”的混淆加密級(jí)別為1級(jí),隨后通過(guò)與字符串“ABC”的混淆加密級(jí)別2級(jí)對(duì)應(yīng)的Base64算法編碼混淆加密方式對(duì)字符串“ABC”執(zhí)行相應(yīng)的混淆加密操作,通過(guò)與字符串“style”的混淆加密級(jí)別1級(jí)對(duì)應(yīng)的自定義混淆加密方式對(duì)字符串“style”執(zhí)行相應(yīng)的混淆加密操作。步驟S130:當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串。需要說(shuō)明的是,在步驟S120中完成應(yīng)用程序代碼的編譯操作后,會(huì)生成相應(yīng)的應(yīng)用程序安裝包;終端設(shè)備獲取到該應(yīng)用程序安裝包并運(yùn)行該應(yīng)用程序安裝包以完成該應(yīng)用程序的安裝;應(yīng)用程序安裝完成后,當(dāng)運(yùn)行應(yīng)用程序,執(zhí)行步驟S130。例如,在APP1代碼的編譯時(shí),在對(duì)需混淆加密的字符串混淆加密時(shí),在混淆加密后的字符串的頭部添加混淆加密的標(biāo)識(shí)信息“Y”以標(biāo)識(shí)該字符串為混淆加密的字符串,隨后再在加密字符串的標(biāo)識(shí)信息后添加預(yù)定分隔符“-”,得到混淆加密后的字符串為“Y-QUJD”。在一個(gè)具體應(yīng)用場(chǎng)景中,在終端設(shè)備A中,首先獲取應(yīng)用程序App1的安裝包,安裝完成該App1的安裝包,在App1的運(yùn)行過(guò)程中,首先確定App1運(yùn)行中待執(zhí)行的字符串是否為混淆加密后的字符串,如App1運(yùn)行中待執(zhí)行的字符串為“Y-QUJD”,可確定字符串“Y-QUJD”中包含了混淆加密的標(biāo)識(shí)信息“Y”以及預(yù)定分隔符“-”,可確定待執(zhí)行的字符串“Y-QUJD”為混淆加密后的字符串。步驟S140:通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以執(zhí)行相應(yīng)的應(yīng)用程序代碼。具體地,確定與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式,根據(jù)該解密方式對(duì)待執(zhí)行的混淆加密后的字符串進(jìn)行解密操作,以執(zhí)行相應(yīng)的應(yīng)用程序代碼。例如,在App1的運(yùn)行過(guò)程中,對(duì)于待執(zhí)行的字符串“S02-QUJD”,確定該字符串預(yù)定分隔符前的加密方式的標(biāo)識(shí)信息“S02”,可確定字符串“S02-QUJD”為通過(guò)Base64算法編碼混淆加密方式混淆加密得到的,因此可確定字符串“S02-QUJD”相應(yīng)的解密方式為基于Base64算法編碼的宏方法解密方式,提取字符串“S02-QUJD”中的混淆加密內(nèi)容得到字符串“QUJD”,隨后通過(guò)相應(yīng)的解密方式為基于Base64算法編碼的宏方法解密方式對(duì)字符串“QUJD”進(jìn)行解密,得到字符串“QUJD”解密后對(duì)應(yīng)的字符串為“ABC”,隨后在App1的運(yùn)行中將字符串“S02-QUJD”替代為字符串“ABC”,以執(zhí)行App1的相應(yīng)代碼;同理,對(duì)于待執(zhí)行的字符串“S01-QW345”,確定該字符串相應(yīng)的解密方式為基于自定義的宏方法的解密方式,提取字符串“S01-QW345”中的混淆加密內(nèi)容得到“QW345”,隨后通過(guò)基于自定義的宏方法的解密方式首先對(duì)字符串“QW345”進(jìn)行Base64算法編碼解密,再將Base64算法編碼解密后的值進(jìn)行異或運(yùn)算對(duì)應(yīng)的逆運(yùn)算,最后將異或運(yùn)算對(duì)應(yīng)的逆運(yùn)算得到的值進(jìn)行轉(zhuǎn)換字節(jié)對(duì)應(yīng)的逆轉(zhuǎn)換,最終得到字符串“QW345”解密后對(duì)應(yīng)的字符串為“style”,隨后在App1的運(yùn)行中將字符串“S01-QW345”替代為字符串“style”以執(zhí)行相應(yīng)的應(yīng)用程序代碼。本發(fā)明的實(shí)施例中,基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串,可精確快速地判斷應(yīng)用程序代碼中的字符串是否需要進(jìn)行混淆加密,且實(shí)現(xiàn)了對(duì)不同類型的字符串進(jìn)行混淆加密;通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作,實(shí)現(xiàn)了在不修改應(yīng)用程序原有的代碼的基礎(chǔ)上對(duì)各字符串采用預(yù)定的混淆加密方式進(jìn)行混淆加密操作,保證了應(yīng)用程序的相關(guān)代碼混淆加密處理的效率;當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串,通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以保證后續(xù)執(zhí)行相應(yīng)應(yīng)用程序代碼,實(shí)現(xiàn)了高效精確地對(duì)待執(zhí)行的混淆加密后的字符串進(jìn)行解密,保證了應(yīng)用程序的正常運(yùn)行。進(jìn)一步地,由于不修改應(yīng)用程序原有的代碼,減少了開(kāi)發(fā)人員對(duì)應(yīng)用程序代碼的處理步驟,從而提高了開(kāi)發(fā)效率。在一優(yōu)選實(shí)施例中,如圖2所示,該方法包括步驟S210、步驟S220、步驟S230、步驟S240、步驟S250、步驟S260和步驟S270;步驟S210:基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串;步驟S220:通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作;步驟S230:當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串;步驟S240:通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以執(zhí)行相應(yīng)的應(yīng)用程序代碼;步驟S250:應(yīng)用程序代碼編譯完成后,獲取應(yīng)用程序代碼中已執(zhí)行混淆加密操作的各字符串;步驟S260:確定已執(zhí)行混淆加密操作的各字符串的混淆加密方式及相應(yīng)的解密方式;步驟S270:通過(guò)相應(yīng)的解密方式對(duì)已執(zhí)行混淆加密操作的各字符串執(zhí)行相應(yīng)的解密操作。其中,本優(yōu)選實(shí)施例中移動(dòng)終端在步驟S210、步驟S220、步驟S230和步驟S240中執(zhí)行的操作與圖1所示的移動(dòng)終端在步驟S110、步驟S120、步驟S130和步驟S140中執(zhí)行的操作相同或相似,在此不再贅述。在一個(gè)具體應(yīng)用場(chǎng)景中,開(kāi)發(fā)人員在開(kāi)發(fā)工具中點(diǎn)擊編譯按鈕后,確定應(yīng)用程序App1的代碼中需混淆加密的字符串包括“ABC”和“style”;通過(guò)與字符串“ABC”的混淆加密級(jí)別2級(jí)對(duì)應(yīng)的Base64算法編碼混淆加密對(duì)字符串“ABC”執(zhí)行相應(yīng)的混淆加密操作,并添加預(yù)定混淆加密方式的標(biāo)識(shí)信息以及預(yù)定分隔符后得到混淆加密后的字符串“S02-QUJD”;通過(guò)與字符串“style”的混淆加密級(jí)別1級(jí)對(duì)應(yīng)的自定義混淆加密方式對(duì)字符串“style”執(zhí)行相應(yīng)的混淆加密操作,并添加預(yù)定混淆加密方式的標(biāo)識(shí)信息以及預(yù)定分隔符后得到混淆加密后的字符串“S01-QW345”;在App1的代碼編譯完成后,此時(shí)App1的代碼中相應(yīng)的字符串以加密后的形式顯示,由于對(duì)于開(kāi)發(fā)人員而言,增加了代碼閱讀的難度性,同時(shí)也不利于后續(xù)對(duì)App1的開(kāi)發(fā),因此需要對(duì)App1的代碼編譯完成后將混淆加密的字符串還原為未經(jīng)混淆加密的原字符串,可根據(jù)預(yù)定混淆加密方式的標(biāo)識(shí)信息“S02”可確定已執(zhí)行混淆加密操作的字符串“S02-QUJD”的混淆加密方式為Base64算法編碼混淆加密方式,因此可確定其相應(yīng)的解密方式為基于Base64算法編碼的宏方法解密方式,提取字符串“S02-QUJD”中的混淆加密內(nèi)容得到字符串“QUJD”;根據(jù)標(biāo)識(shí)信息“S01”確定已執(zhí)行混淆加密操作的字符串“S01-QW345”的混淆加密方式為自定義混淆加密方式,因此可確定其相應(yīng)的解密方式為基于自定義的宏方法解密方式,提取字符串“S01-QW345”中的混淆加密內(nèi)容得到字符串“QW345”;隨后通過(guò)基于Base64算法編碼的宏方法解密方式對(duì)App1代碼中的字符串“QUJD”執(zhí)行相應(yīng)的解密操作,通過(guò)基于自定義的宏方法解密方式對(duì)App1代碼中的字符串“QW345”執(zhí)行相應(yīng)的解密操作。又例如,開(kāi)發(fā)人員在開(kāi)發(fā)工具的人機(jī)交互界面中點(diǎn)擊編譯按鈕后,確定應(yīng)用程序App1的代碼中需混淆加密的字符串包括“ABC”和“style”;通過(guò)與字符串“ABC”的混淆加密級(jí)別2級(jí)對(duì)應(yīng)的Base64算法編碼混淆加密對(duì)字符串“ABC”執(zhí)行相應(yīng)的混淆加密操作,通過(guò)與字符串“style”的混淆加密級(jí)別1級(jí)對(duì)應(yīng)的自定義混淆加密方式對(duì)字符串“style”執(zhí)行相應(yīng)的混淆加密操作,在對(duì)各字符串將執(zhí)行加密操作后,由于對(duì)于開(kāi)發(fā)人員而言,代碼信息是透明性的,可將已執(zhí)行混淆加密操作的各字符串及各自對(duì)應(yīng)的混淆加密方式存儲(chǔ)至已執(zhí)行混淆加密操作字符串的記錄表table中;其中,該表可存儲(chǔ)于開(kāi)發(fā)人員自定義的位置,可以數(shù)據(jù)表形式存儲(chǔ)于預(yù)定的數(shù)據(jù)庫(kù)中,也可以腳本文件的形式存儲(chǔ)于指定位置,在對(duì)App1的代碼執(zhí)行編譯操作時(shí)并不對(duì)table表進(jìn)行相應(yīng)的編譯,使得該表只供開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中使用;具體地,記錄表table中存儲(chǔ)有字符串“ABC”已執(zhí)行Base64算法編碼混淆加密操作后的值如“QUJD”,以及與字符串“ABC”對(duì)應(yīng)的混淆加密方式為Base64算法編碼混淆加密方式;并存儲(chǔ)有字符串“style”已執(zhí)行自定義混淆加密操作后的值如“QW345”,以及與字符串“style”對(duì)應(yīng)的混淆加密方式為自定義混淆加密方式。隨后,App1代碼編譯完成后,通過(guò)讀取App1的table表中的記錄信息可確定App1代碼中已執(zhí)行混淆加密操作的各字符串為“QUJD”和“QW345”,并根據(jù)table表中記錄的字符串“QW345”的混淆加密方式為自定義混淆加密方式可確定其解密方式為基于自定義的宏方法的解密方式,根據(jù)table表中記錄的字符串“QUJD”的混淆加密方式Base64算法編碼混淆加密可確定其解密方式為基于Base64算法編碼的宏方法解密方式;隨后通過(guò)基于自定義的宏方法的解密方式對(duì)App1代碼中的字符串“QW345”執(zhí)行相應(yīng)的解密操作,通過(guò)基于Base64算法編碼的宏方法解密方式對(duì)App1代碼中的字符串“QUJD”執(zhí)行相應(yīng)的解密操作。通過(guò)本實(shí)施例,還可對(duì)應(yīng)用程序代碼中已執(zhí)行混淆加密后的字符串進(jìn)行解密,最終將應(yīng)用程序代碼中的字符串還原為未經(jīng)混淆加密的原字符串,實(shí)現(xiàn)了代碼對(duì)開(kāi)發(fā)人員的透明性,使得開(kāi)發(fā)人員無(wú)需在對(duì)應(yīng)用程序代碼編譯之前對(duì)代碼進(jìn)行備份等操作,從而提高了開(kāi)發(fā)人員的開(kāi)發(fā)效率,同時(shí),避免了因備份應(yīng)用程序代碼等操作而產(chǎn)生的代碼丟失或代碼發(fā)生錯(cuò)誤等不可預(yù)期的情況發(fā)生,進(jìn)一步的,降低了開(kāi)發(fā)的成本。在一具體應(yīng)用場(chǎng)景中,預(yù)定的字符串類型包括國(guó)際化本地文件中存取的字符串和應(yīng)用程序中定義的宏字符串。開(kāi)發(fā)人員在開(kāi)發(fā)工具提供的人機(jī)交互界面中點(diǎn)擊應(yīng)用程序App1的代碼編譯按鈕時(shí),在執(zhí)行編譯操作前,首先遍歷應(yīng)用程序App1代碼中的各字符串,如包括“ABC-DEF”、“style”和“school”,隨后確定字符串“ABC-DEF”的類型為宏定義的字符串、字符串“style”的類型為國(guó)際化本地文件中存取的字符串以及字符串“school”的類型為應(yīng)用程序代碼中類聲明中的類名,并將字符串的類型屬于預(yù)定的字符串類型的字符串“ABC-DEF”和“style”確定為需混淆加密的字符串;隨后,對(duì)字符串“ABC-DEF”進(jìn)行Base64算法編碼混淆加密,對(duì)字符串“style”進(jìn)行自定義混淆加密;由于字符串“ABC-DEF”的數(shù)據(jù)結(jié)構(gòu)類型為Key-Value,Key部分的值為“ABC”,Value部分的值為“DEF”,因此需要對(duì)字符串“ABC-DEF”中Key部分和Value部分均進(jìn)行混淆加密,得到字符串“ABC-DEF”經(jīng)過(guò)Base64算法編碼混淆加密后的字符串如“S02-QUJD-REVG”,同理可得到字符串“style”經(jīng)過(guò)自定義混淆加密后的字符串如“S01-QW345”;接著,通過(guò)預(yù)定宏方法A將應(yīng)用程序代碼中的字符串“ABC-DEF”替換為“S02-QUJD-REVG”,以及通過(guò)預(yù)定宏方法B將應(yīng)用程序代碼中的字符串“style”替換為“S01-QW345”,并將預(yù)定宏方法A和預(yù)定宏方法B存儲(chǔ)至相應(yīng)的文件File中;由于“style”的類型為國(guó)際化本地文件中存取的字符串,因此還需要在應(yīng)用程序代碼中調(diào)用的國(guó)際化本地文件中,通過(guò)預(yù)定宏方法B將應(yīng)用程序代碼中的字符串“style”替換為“S01-QW345”,隨后完成對(duì)應(yīng)用程序App1的編譯。在終端設(shè)備中,首先獲取應(yīng)用程序App1的安裝包,安裝完成該App1的安裝包,在App1的運(yùn)行過(guò)程中,若待執(zhí)行的字符串為“S02-QUJD-REVG”,可確定字符串“S02-QUJD-REVG”為混淆加密后的字符串,隨后通過(guò)文件File中與預(yù)定宏方法A對(duì)應(yīng)的解密宏紅方法并采用Base64算法編碼進(jìn)行解密,得到字符串“S02-QUJD-REVG”解密后對(duì)應(yīng)的字符串為“ABC-DEF”,隨后在App1的運(yùn)行中將字符串“S02-QUJD-REVG”替代為字符串“ABC-DEF”以執(zhí)行相應(yīng)的應(yīng)用程序代碼;若待執(zhí)行的字符串為“S01-QW345”,可確定字符串“S01-QW345”為混淆加密后的字符串,隨后通過(guò)文件File中與預(yù)定宏方法B對(duì)應(yīng)的解密宏方法采用自定義解密方式進(jìn)行解密,得到字符串“S01-QW345”解密后對(duì)應(yīng)的字符串為“style”,隨后在App1的運(yùn)行中將字符串“S01-QW345”替代為字符串“style”,由于字符串“style”的類型為國(guó)際化本地文件中存取的字符串,因此還需要在應(yīng)用程序代碼中調(diào)用的國(guó)際化本地文件中,將字符串“S01-QW345”替代為字符串“style”,以執(zhí)行相應(yīng)的應(yīng)用程序代碼。圖3為本發(fā)明中另一實(shí)施例的應(yīng)用程序的代碼混淆裝置的結(jié)構(gòu)示意圖。第一確定模塊310基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串。具體地,在應(yīng)用程序代碼中將字符串類型屬于預(yù)定的字符串類型的字符串確定為需混淆加密的字符串。其中,預(yù)定的字符串類型包括但不限于:應(yīng)用程序代碼中直接使用的字符串;應(yīng)用程序中定義的宏字符串;應(yīng)用程序中程序塊外部定義的字符串;國(guó)際化本地文件中存儲(chǔ)的字符串。實(shí)際應(yīng)用中,開(kāi)發(fā)人員在開(kāi)發(fā)工具提供的人機(jī)交互界面中點(diǎn)擊針對(duì)應(yīng)用程序的代碼編譯按鈕時(shí),在對(duì)應(yīng)用程序代碼執(zhí)行編譯前,首先在應(yīng)用程序代碼中將字符串類型屬于預(yù)定的字符串類型的字符串確定為需混淆加密的字符串,如應(yīng)用程序代碼中字符串“ABC”的類型為宏定義的字符串,可確定字符串“ABC”為需混淆加密的字符串。在一優(yōu)選實(shí)施例中,第一確定模塊310具體包括遍歷單元和第一確定單元;遍歷單元遍歷應(yīng)用程序代碼中的字符串以確定各字符串的類型;第一確定單元將與預(yù)定的字符串類型相匹配的字符串確定為需混淆加密的字符串。在一個(gè)具體應(yīng)用場(chǎng)景中,預(yù)定的字符串類型包括應(yīng)用程序代碼中直接使用的字符串和應(yīng)用程序中定義的宏字符串。開(kāi)發(fā)人員在開(kāi)發(fā)工具提供的人機(jī)交互界面中點(diǎn)擊應(yīng)用程序App1的代碼編譯按鈕時(shí),在執(zhí)行編譯操作前,首先遍歷應(yīng)用程序App1代碼中的各字符串,如包括“ABC”、“style”和“school”,隨后確定字符串“ABC”的類型為宏定義的字符串、字符串“style”的類型為應(yīng)用程序代碼中直接使用的字符串以及字符串“school”的類型為應(yīng)用程序代碼中類聲明中的類名,隨后將字符串的類型屬于預(yù)定的字符串類型的字符串“ABC”和“style”確定為需混淆加密的字符串。加密及編譯模塊320通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作。實(shí)際應(yīng)用中,通過(guò)與已確定需混淆加密的字符串相匹配的預(yù)定的混淆加密方式,對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作。在一個(gè)具體應(yīng)用場(chǎng)景中,已確定應(yīng)用程序App1的代碼中需混淆加密的字符串包括宏定義的字符串“ABC”和應(yīng)用程序代碼中直接使用的字符串“style”,隨后根據(jù)與字符串“ABC”相匹配的預(yù)定的混淆加密方式Base64算法編碼混淆加密,對(duì)字符串“ABC”執(zhí)行Base64算法編碼混淆加密操作,根據(jù)與字符串“style”相匹配的預(yù)定的混淆加密方式自定義混淆加密,對(duì)字符串“style”執(zhí)行自定義混淆加密操作;隨后,對(duì)混淆加密后的App1的代碼執(zhí)行編譯操作,以完成App1代碼的編譯。在另一具體應(yīng)用場(chǎng)景中,App1在代碼編譯時(shí)對(duì)需混淆加密的字符串進(jìn)行混淆加密方式包括至少兩種:一種為自定義的混淆加密方式,如首先將需混淆加密的字符串轉(zhuǎn)換成字節(jié),隨后對(duì)轉(zhuǎn)換成字節(jié)的值進(jìn)行異或運(yùn)算,最后將異或運(yùn)算后的值進(jìn)行Base64算法編碼混淆加密;另一種為Base64算法編碼混淆加密,在對(duì)需混淆加密的字符串混淆加密成功后,添加預(yù)定混淆加密方式的標(biāo)識(shí)信息,如自定義的混淆加密方式的標(biāo)識(shí)信息為“S01”,Base64算法編碼混淆加密方式的標(biāo)識(shí)信息為“S02”,如在對(duì)字符串“ABC”進(jìn)行Base64算法編碼混淆加密后得到字符串如“QUJD”,隨后在字符串內(nèi)容的頭部添加Base64算法編碼混淆加密方式的標(biāo)識(shí)信息“S02”,再在預(yù)定混淆加密方式的標(biāo)識(shí)信息后添加預(yù)定分隔符“-”,得到字符串“ABC”經(jīng)過(guò)Base64算法編碼混淆加密后的字符串為“S02-QUJD”,同理可得到字符串“style”經(jīng)過(guò)自定義混淆加密后的字符串為“S01-QW345”。在一優(yōu)選實(shí)施例中,加密及編譯模塊320中通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作之后,該裝置還包括替換模塊;替換模塊利用混淆加密后的字符串通過(guò)宏方法替換需混淆加密的字符串,以確定混淆加密后的應(yīng)用程序代碼。接上例,在對(duì)字符串“ABC”執(zhí)行Base64算法編碼混淆加密操作后,得到混淆加密后的字符串如“S02-QUJD”,隨后通過(guò)宏方法將應(yīng)用程序代碼中的字符串“ABC”替換為“S02-QUJD”,以及在對(duì)字符串“style”執(zhí)行自定義混淆加密操作后,得到混淆加密后的字符串如“S01-QW345”,隨后通過(guò)宏方法將應(yīng)用程序代碼中的字符串“style”替換為“S01-QW345”,以確定混淆加密后的應(yīng)用程序代碼。在本優(yōu)選實(shí)施例中,使用宏方法對(duì)常量字符串等定義方式進(jìn)行替換,可快速完成將應(yīng)用程序代碼中混淆加密前的字符串替換為混淆加密后的字符串,同時(shí),在應(yīng)用程序代碼運(yùn)行中可動(dòng)態(tài)地使用替換后的宏方法,解決了現(xiàn)有技術(shù)中定義的靜態(tài)的常量字符串無(wú)法動(dòng)態(tài)使用的問(wèn)題,從而達(dá)到了全面替換應(yīng)用程序代碼中的各類型字符串,并通過(guò)宏方法在應(yīng)用程序代碼運(yùn)行中動(dòng)態(tài)使用的目的。在一優(yōu)選實(shí)施例中,該裝置還包括第三確定模塊和第四確定模塊;第三確定模塊根據(jù)預(yù)定混淆加密級(jí)別的確定規(guī)則,確定應(yīng)用程序代碼中需混淆加密的字符串的混淆加密級(jí)別;第四確定模塊確定與需混淆加密的字符串的混淆加密級(jí)別對(duì)應(yīng)的混淆加密方式。本實(shí)施例中,加密及編譯模塊320具體用于通過(guò)與混淆加密級(jí)別對(duì)應(yīng)的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作。在一個(gè)具體應(yīng)用場(chǎng)景中,預(yù)定混淆加密級(jí)別的確定規(guī)則包括:預(yù)定字符串類型為宏定義的字符串的混淆加密級(jí)別為1級(jí),對(duì)應(yīng)的混淆加密方式為自定義混淆加密方式;預(yù)定字符串類型為非宏定義的字符串的混淆加密級(jí)別為2級(jí),對(duì)應(yīng)的混淆加密方式為Base64算法編碼混淆加密;其中,淆加密級(jí)別為由低到高依次為2級(jí)和1級(jí);自定義加密方式為首先將需混淆加密的字符串轉(zhuǎn)換成字節(jié),隨后對(duì)轉(zhuǎn)換成字節(jié)的值進(jìn)行異或運(yùn)算,最后將進(jìn)行異或運(yùn)算后的值進(jìn)行Base64算法編碼混淆加密。已確定需混淆加密的字符串為“ABC”和“style”,根據(jù)字符串“ABC”的類型為應(yīng)用程序代碼中直接使用的字符串,可確定字符串“ABC”的混淆加密級(jí)別為2級(jí);根據(jù)字符串“style”的類型為宏定義的字符串,可確定字符串“style”的混淆加密級(jí)別為1級(jí),隨后通過(guò)與字符串“ABC”的混淆加密級(jí)別2級(jí)對(duì)應(yīng)的Base64算法編碼混淆加密方式對(duì)字符串“ABC”執(zhí)行相應(yīng)的混淆加密操作,通過(guò)與字符串“style”的混淆加密級(jí)別1級(jí)對(duì)應(yīng)的自定義混淆加密方式對(duì)字符串“style”執(zhí)行相應(yīng)的混淆加密操作。第二確定模塊330當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串。需要說(shuō)明的是,在加密及編譯模塊320中完成應(yīng)用程序代碼的編譯操作后,會(huì)生成相應(yīng)的應(yīng)用程序安裝包;終端設(shè)備獲取到該應(yīng)用程序安裝包并運(yùn)行該應(yīng)用程序安裝包以完成該應(yīng)用程序的安裝;應(yīng)用程序安裝完成后,當(dāng)運(yùn)行應(yīng)用程序,執(zhí)行第二確定模塊330。例如,在APP1代碼的編譯時(shí),在對(duì)需混淆加密的字符串混淆加密時(shí),在混淆加密后的字符串的頭部添加混淆加密的標(biāo)識(shí)信息“Y”以標(biāo)識(shí)該字符串為混淆加密的字符串,隨后再在加密字符串的標(biāo)識(shí)信息后添加預(yù)定分隔符“-”,得到混淆加密后的字符串為“Y-QUJD”。在一個(gè)具體應(yīng)用場(chǎng)景中,在終端設(shè)備A中,首先獲取應(yīng)用程序App1的安裝包,安裝完成該App1的安裝包,在App1的運(yùn)行過(guò)程中,首先確定App1運(yùn)行中待執(zhí)行的字符串是否為混淆加密后的字符串,如App1運(yùn)行中待執(zhí)行的字符串為“Y-QUJD”,可確定字符串“Y-QUJD”中包含了混淆加密的標(biāo)識(shí)信息“Y”以及預(yù)定分隔符“-”,可確定待執(zhí)行的字符串“Y-QUJD”為混淆加密后的字符串。第二確定模塊340通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以執(zhí)行相應(yīng)的應(yīng)用程序代碼。具體地,確定與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式,根據(jù)該解密方式對(duì)待執(zhí)行的混淆加密后的字符串進(jìn)行解密操作,以執(zhí)行相應(yīng)的應(yīng)用程序代碼。例如,在App1的運(yùn)行過(guò)程中,對(duì)于待執(zhí)行的字符串“S02-QUJD”,確定該字符串預(yù)定分隔符前的加密方式的標(biāo)識(shí)信息“S02”,可確定字符串“S02-QUJD”為通過(guò)Base64算法編碼混淆加密方式混淆加密得到的,因此可確定字符串“S02-QUJD”相應(yīng)的解密方式為基于Base64算法編碼的宏方法解密方式,提取字符串“S02-QUJD”中的混淆加密內(nèi)容得到字符串“QUJD”,隨后通過(guò)相應(yīng)的解密方式為基于Base64算法編碼的宏方法解密方式對(duì)字符串“QUJD”進(jìn)行解密,得到字符串“QUJD”解密后對(duì)應(yīng)的字符串為“ABC”,隨后在App1的運(yùn)行中將字符串“S02-QUJD”替代為字符串“ABC”,以執(zhí)行App1的相應(yīng)代碼;同理,對(duì)于待執(zhí)行的字符串“S01-QW345”,確定該字符串相應(yīng)的解密方式為基于自定義的宏方法的解密方式,提取字符串“S01-QW345”中的混淆加密內(nèi)容得到“QW345”,隨后通過(guò)基于自定義的宏方法的解密方式首先對(duì)字符串“QW345”進(jìn)行Base64算法編碼解密,再將Base64算法編碼解密后的值進(jìn)行異或運(yùn)算對(duì)應(yīng)的逆運(yùn)算,最后將異或運(yùn)算對(duì)應(yīng)的逆運(yùn)算得到的值進(jìn)行轉(zhuǎn)換字節(jié)對(duì)應(yīng)的逆轉(zhuǎn)換,最終得到字符串“QW345”解密后對(duì)應(yīng)的字符串為“style”,隨后在App1的運(yùn)行中將字符串“S01-QW345”替代為字符串“style”以執(zhí)行相應(yīng)的應(yīng)用程序代碼。本發(fā)明的實(shí)施例中,基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串,可精確快速地判斷應(yīng)用程序代碼中的字符串是否需要進(jìn)行混淆加密,且實(shí)現(xiàn)了對(duì)不同類型的字符串進(jìn)行混淆加密;通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作,實(shí)現(xiàn)了在不修改應(yīng)用程序原有的代碼的基礎(chǔ)上對(duì)各字符串采用預(yù)定的混淆加密方式進(jìn)行混淆加密操作,保證了應(yīng)用程序的相關(guān)代碼混淆加密處理的效率;當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串,通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以保證后續(xù)執(zhí)行相應(yīng)應(yīng)用程序代碼,實(shí)現(xiàn)了高效精確地對(duì)待執(zhí)行的混淆加密后的字符串進(jìn)行解密,保證了應(yīng)用程序的正常運(yùn)行。進(jìn)一步地,由于不修改應(yīng)用程序原有的代碼,減少了開(kāi)發(fā)人員對(duì)應(yīng)用程序代碼的處理步驟,從而提高了開(kāi)發(fā)效率。在一優(yōu)選實(shí)施例中,如圖4所示,該裝置包括第一確定模塊410、加密及編譯模塊420、第二確定模塊430、第一解密模塊440、獲取模塊450、第五確定模塊460和第二解密模塊470;第一確定模塊410基于預(yù)定的字符串類型來(lái)確定應(yīng)用程序代碼中需混淆加密的字符串;加密及編譯模塊420通過(guò)預(yù)定的混淆加密方式對(duì)已確定需混淆加密的字符串執(zhí)行相應(yīng)的混淆加密操作,并對(duì)混淆加密后的應(yīng)用程序代碼執(zhí)行編譯操作;第二確定模塊430當(dāng)運(yùn)行應(yīng)用程序,確定待執(zhí)行的混淆加密后的字符串;第一解密模塊440通過(guò)與待執(zhí)行的混淆加密后的字符串相應(yīng)的解密方式對(duì)其進(jìn)行解密操作,以執(zhí)行相應(yīng)的應(yīng)用程序代碼;獲取模塊450應(yīng)用程序代碼編譯完成后,獲取應(yīng)用程序代碼中已執(zhí)行混淆加密操作的各字符串;第五確定模塊460確定已執(zhí)行混淆加密操作的各字符串的混淆加密方式及相應(yīng)的解密方式;第二解密模塊470通過(guò)相應(yīng)的解密方式對(duì)已執(zhí)行混淆加密操作的各字符串執(zhí)行相應(yīng)的解密操作。其中,本優(yōu)選實(shí)施例中移動(dòng)終端在第一確定模塊410、加密及編譯模塊420、第二確定模塊430和第一解密模塊440中執(zhí)行的操作與圖1所示的移動(dòng)終端在第一確定模塊310、加密及編譯模塊320、第二確定模塊330和第一解密模塊340中執(zhí)行的操作相同或相似,在此不再贅述。在一個(gè)具體應(yīng)用場(chǎng)景中,開(kāi)發(fā)人員在開(kāi)發(fā)工具中點(diǎn)擊編譯按鈕后,確定應(yīng)用程序App1的代碼中需混淆加密的字符串包括“ABC”和“style”;通過(guò)與字符串“ABC”的混淆加密級(jí)別2級(jí)對(duì)應(yīng)的Base64算法編碼混淆加密對(duì)字符串“ABC”執(zhí)行相應(yīng)的混淆加密操作,并添加預(yù)定混淆加密方式的標(biāo)識(shí)信息以及預(yù)定分隔符后得到混淆加密后的字符串“S02-QUJD”;通過(guò)與字符串“style”的混淆加密級(jí)別1級(jí)對(duì)應(yīng)的自定義混淆加密方式對(duì)字符串“style”執(zhí)行相應(yīng)的混淆加密操作,并添加預(yù)定混淆加密方式的標(biāo)識(shí)信息以及預(yù)定分隔符后得到混淆加密后的字符串“S01-QW345”;在App1的代碼編譯完成后,此時(shí)App1的代碼中相應(yīng)的字符串以加密后的形式顯示,由于對(duì)于開(kāi)發(fā)人員而言,增加了代碼閱讀的難度性,同時(shí)也不利于后續(xù)對(duì)App1的開(kāi)發(fā),因此需要對(duì)App1的代碼編譯完成后將混淆加密的字符串還原為未經(jīng)混淆加密的原字符串,可根據(jù)預(yù)定混淆加密方式的標(biāo)識(shí)信息“S02”可確定已執(zhí)行混淆加密操作的字符串“S02-QUJD”的混淆加密方式為Base64算法編碼混淆加密方式,因此可確定其相應(yīng)的解密方式為基于Base64算法編碼的宏方法解密方式,提取字符串“S02-QUJD”中的混淆加密內(nèi)容得到字符串“QUJD”;根據(jù)標(biāo)識(shí)信息“S01”確定已執(zhí)行混淆加密操作的字符串“S01-QW345”的混淆加密方式為自定義混淆加密方式,因此可確定其相應(yīng)的解密方式為基于自定義的宏方法解密方式,提取字符串“S01-QW345”中的混淆加密內(nèi)容得到字符串“QW345”;隨后通過(guò)基于Base64算法編碼的宏方法解密方式對(duì)App1代碼中的字符串“QUJD”執(zhí)行相應(yīng)的解密操作,通過(guò)基于自定義的宏方法解密方式對(duì)App1代碼中的字符串“QW345”執(zhí)行相應(yīng)的解密操作。又例如,開(kāi)發(fā)人員在開(kāi)發(fā)工具的人機(jī)交互界面中點(diǎn)擊編譯按鈕后,確定應(yīng)用程序App1的代碼中需混淆加密的字符串包括“ABC”和“style”;通過(guò)與字符串“ABC”的混淆加密級(jí)別2級(jí)對(duì)應(yīng)的Base64算法編碼混淆加密對(duì)字符串“ABC”執(zhí)行相應(yīng)的混淆加密操作,通過(guò)與字符串“style”的混淆加密級(jí)別1級(jí)對(duì)應(yīng)的自定義混淆加密方式對(duì)字符串“style”執(zhí)行相應(yīng)的混淆加密操作,在對(duì)各字符串將執(zhí)行加密操作后,由于對(duì)于開(kāi)發(fā)人員而言,代碼信息是透明性的,可將已執(zhí)行混淆加密操作的各字符串及各自對(duì)應(yīng)的混淆加密方式存儲(chǔ)至已執(zhí)行混淆加密操作字符串的記錄表table中;其中,該表可存儲(chǔ)于開(kāi)發(fā)人員自定義的位置,可以數(shù)據(jù)表形式存儲(chǔ)于預(yù)定的數(shù)據(jù)庫(kù)中,也可以腳本文件的形式存儲(chǔ)于指定位置,在對(duì)App1的代碼執(zhí)行編譯操作時(shí)并不對(duì)table表進(jìn)行相應(yīng)的編譯,使得該表只供開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中使用;具體地,記錄表table中存儲(chǔ)有字符串“ABC”已執(zhí)行Base64算法編碼混淆加密操作后的值如“QUJD”,以及與字符串“ABC”對(duì)應(yīng)的混淆加密方式為Base64算法編碼混淆加密方式;并存儲(chǔ)有字符串“style”已執(zhí)行自定義混淆加密操作后的值如“QW345”,以及與字符串“style”對(duì)應(yīng)的混淆加密方式為自定義混淆加密方式。隨后,App1代碼編譯完成后,通過(guò)讀取App1的table表中的記錄信息可確定App1代碼中已執(zhí)行混淆加密操作的各字符串為“QUJD”和“QW345”,并根據(jù)table表中記錄的字符串“QW345”的混淆加密方式為自定義混淆加密方式可確定其解密方式為基于自定義的宏方法的解密方式,根據(jù)table表中記錄的字符串“QUJD”的混淆加密方式Base64算法編碼混淆加密可確定其解密方式為基于Base64算法編碼的宏方法解密方式;隨后通過(guò)基于自定義的宏方法的解密方式對(duì)App1代碼中的字符串“QW345”執(zhí)行相應(yīng)的解密操作,通過(guò)基于Base64算法編碼的宏方法解密方式對(duì)App1代碼中的字符串“QUJD”執(zhí)行相應(yīng)的解密操作。通過(guò)本實(shí)施例,還可對(duì)應(yīng)用程序代碼中已執(zhí)行混淆加密后的字符串進(jìn)行解密,最終將應(yīng)用程序代碼中的字符串還原為未經(jīng)混淆加密的原字符串,實(shí)現(xiàn)了代碼對(duì)開(kāi)發(fā)人員的透明性,使得開(kāi)發(fā)人員無(wú)需在對(duì)應(yīng)用程序代碼編譯之前對(duì)代碼進(jìn)行備份等操作,從而提高了開(kāi)發(fā)人員的開(kāi)發(fā)效率,同時(shí),避免了因備份應(yīng)用程序代碼等操作而產(chǎn)生的代碼丟失或代碼發(fā)生錯(cuò)誤等不可預(yù)期的情況發(fā)生,進(jìn)一步的,降低了開(kāi)發(fā)的成本。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請(qǐng)中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲(chǔ)在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲(chǔ)在適于存儲(chǔ)電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、ROM(Read-OnlyMemory,只讀存儲(chǔ)器)、RAM(RandomAccessMemory,隨即存儲(chǔ)器)、EPROM(ErasableProgrammableRead-OnlyMemory,可擦寫可編程只讀存儲(chǔ)器)、EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory,電可擦可編程只讀存儲(chǔ)器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲(chǔ)或傳輸信息的任何介質(zhì)。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個(gè)框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來(lái)實(shí)現(xiàn),從而通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來(lái)執(zhí)行本發(fā)明公開(kāi)的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個(gè)框中指定的方案。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過(guò)的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過(guò)的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開(kāi)的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
技術(shù)領(lǐng)域:
:的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁(yè)1 2 3 當(dāng)前第1頁(yè)1 2 3