基于文本水印的安卓應(yīng)用程序信息隱藏與軟件保護(hù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)互聯(lián)網(wǎng)安全,與信息隱藏和軟件保護(hù)領(lǐng)域相關(guān),尤其一種涉及安卓系統(tǒng)下基于文本水印的的信息隱藏與軟件保護(hù)方法。
【背景技術(shù)】
[0002]Android系統(tǒng)的APP格式為APK,APK是類似Symbian Sis或Sisx的文件格式。通過(guò)將APK文件直接傳到Android模擬器或Android手機(jī)中執(zhí)行即可安裝。apk文件和si s—樣,把a(bǔ)ndroid sdk編譯的工程打包成一個(gè)安裝程序文件,格式為apLAPK文件其實(shí)是zip格式,但后綴名被修改為apk,通過(guò)Google公司的反編譯軟件apktoo I反編譯后,可以看到AndroidManifest.xml文件,Dex是DalvikVM executes的簡(jiǎn)稱,即Android Dalvik執(zhí)行程序。
[0003]利用APP進(jìn)行信息隱藏目前是一個(gè)嶄新的課題,例如,用戶可以在APP中隱藏某些信息,然后提交給應(yīng)用商店,其他用戶可以下載該應(yīng)用,然后恢復(fù)出APP中隱藏的信息。這種隱藏通信可以實(shí)現(xiàn)一對(duì)多(海量)的通信方式,且十分隱秘。另外,通過(guò)信息隱藏的基本技術(shù),還可以進(jìn)行安卓APP應(yīng)用軟件的版權(quán)保護(hù)。通常APP的軟件保護(hù)方法包括加密、加殼、反逆向以及反編譯等,但這些方法速度慢,操作復(fù)雜,容易被攻破。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的發(fā)明目的在于,提供一種操作簡(jiǎn)單,不易被發(fā)現(xiàn)的信息隱藏方法,實(shí)現(xiàn)隱秘通信、版權(quán)保護(hù)以及惡意軟件來(lái)源檢測(cè)和監(jiān)視。
[0005]為達(dá)到上述目的,本發(fā)明提供一種基于文本水印的安卓應(yīng)用程序信息隱
[0006]藏方法,包括以下步驟:
[0007]S1、將需要隱藏的信息M進(jìn)行加密處理,并按照規(guī)定格式保存到數(shù)組B[l,...,N_1]中,得到密文數(shù)組,其中N為整數(shù);
[0008]S2、分析出AndroidManifest.xml文件中可以利用的位置,按照規(guī)定的格式將密文數(shù)組隱藏到相應(yīng)位置中,并生成APK文件;
[0009]S3、從 APK 文件中提取 Androi dManifest.xml 文件,并從AndroidManif est.xml 文件中解密隱藏的信息M。
[0010]本發(fā)明所述的信息隱藏方法中,步驟S2具體包括以下步驟:
[0011 ] S2.1、掃描AndroidManifest.xml文件,直到掃描到符合隱藏條件的語(yǔ)句為止;在符合隱藏要求的AndroidManif est.xml文件語(yǔ)句后,根據(jù)當(dāng)前語(yǔ)句特征,按照規(guī)定格式將密文數(shù)組隱藏到當(dāng)前語(yǔ)句的相應(yīng)位置,隱藏完成后繼續(xù)向文件后方掃描,以此類推;
[0012]S2.2、完成密文數(shù)組的隱藏后,生成新的AndroidManif est.xml文件,與DEX文件打包生成APK文件。
[0013]步驟S3具體包括以下步驟:
[0014]S3.1、從APK文件中提取AndroidManifes.xml文件;
[0015]S3.2、依次從頭掃描AndroidManifest.xml文件中符合隱藏特征的語(yǔ)句,并從中逐單位提取密文數(shù)組中的值,形成密文C ;
[0016]S3.3、將密文C解密,得到隱藏的信息M,完成信息提取。
[0017]本發(fā)明所述的信息隱藏方法中,步驟SI中將需要隱藏的信息M進(jìn)行加密處理,具體包括:將需要隱藏的信息M加密,得到密文C,并將密文C轉(zhuǎn)化為長(zhǎng)度為N的二進(jìn)制信息,N為整數(shù)。
[0018]本發(fā)明所述的信息隱藏方法中,AndroidManifest.xml文件中具備隱藏信息特征的字段包括:〈appl icat1nX/appl icat1n〉結(jié)構(gòu)中具備隱藏信息特征的字段;〈/>結(jié)構(gòu)中具備隱藏信息特征的字段。
[0019]本發(fā)明所述的信息隱藏方法中,步驟S2“按照規(guī)定的格式將密文數(shù)組隱藏到相應(yīng)位置中”具體為:選取一個(gè)隨機(jī)數(shù)T,且0〈T〈10,需要隱藏的信息為B[i],i為整數(shù),若B[i]為O則選取T為偶數(shù),若B[i]為I則選取T為奇數(shù),并將B[i]信息隱藏在文本文件中:
[0020]I)若將信息隱藏在〈applicat1nX/applicat1n〉結(jié)構(gòu)中,則在〈applicat1nX/appl icat1n〉結(jié)構(gòu)的結(jié)尾后方加上B[i]*K個(gè)空〈appl icat1nX/appl icat1n〉結(jié)構(gòu),K為整數(shù);
[0021 ] 2)若將信息隱藏在〈/activity〉結(jié)構(gòu)中,則在〈/activity〉結(jié)構(gòu)的結(jié)尾后方加上〈activity>android: name = 〃com.number.T〃〈/activity〉結(jié)構(gòu);
[0022]3)若將信息隱藏在〈/>結(jié)構(gòu)中,則在〈/>結(jié)構(gòu)的結(jié)尾后方加上注釋符//和B[i]*K個(gè)字符,K為整數(shù)。
[0023]本發(fā)明所述的信息隱藏方法中,步驟SI中按照規(guī)定的單位進(jìn)行編號(hào),具體包括:以比特為單位,或以字節(jié)為單位,或以雙字節(jié)為單位進(jìn)行編號(hào)。
[0024]本發(fā)明所述的信息隱藏方法中,對(duì)隱藏的信息M進(jìn)行加密方式具體包括:古典密碼體制、對(duì)稱密鑰密碼體制或者非對(duì)稱鑰密碼體制。
[0025]本發(fā)明還提供一種安卓系統(tǒng)下基于文本水印的隱秘通信方法,包括以下步驟:
[0026](I)發(fā)送方利用上述信息隱藏方法,將待傳遞的信息隱藏到AndroidManif est.xml文件的相應(yīng)位置中,并生成APK文件;
[0027 ] (2)發(fā)送方將APK文件提交到某個(gè)網(wǎng)上應(yīng)用商店;
[0028](3)接收方從該網(wǎng)上應(yīng)用商店下載APK文件;
[0029](4)接收方從APK文件中提取出AndroidManif est.xml文件;
[0030 ] (5)接收方從Andro i dMan ifest.xml文件中提取出隱藏信息。
[0031]本發(fā)明還提供一種安卓系統(tǒng)下基于文本水印的版權(quán)保護(hù)方法,其特征在于,包括以下步驟:
[0032I (I)開(kāi)發(fā)方利用上述信息隱藏方法將版權(quán)保護(hù)信息隱藏到AndroidManifest.xml文件的相應(yīng)位置中,并生成APK文件;
[0033](2)開(kāi)發(fā)方將APK文件提交到網(wǎng)上應(yīng)用商店;
[0034](3)軟件使用方從該網(wǎng)上應(yīng)用商店下載APK文件;
[0035](4)軟件使用方從APK文件中提取出AndroidManifest.xml文件;
[0036](5)軟件使用方從AndroidManifest.xml文件中提取隱藏的版權(quán)保護(hù)信息,并檢驗(yàn)版權(quán)信息是否真實(shí)有效,從而確定是否為重打包的盜版APK文件。
[0037]本發(fā)明還提供一種安卓系統(tǒng)下基于文本水印的惡意軟件來(lái)源檢測(cè)和追蹤方法,其特征在于,該方法具體包括以下步驟:
[0038](I)網(wǎng)上應(yīng)用商店從上傳的APK文件中分解出AndroidManifest.xml文件;
[0039](2)網(wǎng)上應(yīng)用商店利用上述信息隱藏方法將APK文件上傳者的身份標(biāo)識(shí)信息和/或該網(wǎng)上應(yīng)用商店的標(biāo)識(shí)信息隱藏到AndroidManifest.xml文件的相應(yīng)位置中,并重新生成APK文件并再該網(wǎng)上應(yīng)用商店中發(fā)布以供他人下載;
[0040]( 3)在病毒檢測(cè)機(jī)構(gòu)檢測(cè)到該APK文件為惡意軟件時(shí),從該APK文件中提取出AndroidManifest.xml文件,并從Androi dManifest.xml文件中提取出隱藏的APK文件上傳者的身份標(biāo)識(shí)信息,從而確定該惡意軟件的制作者。
[0041]本發(fā)明的有益技術(shù)效果:本發(fā)明利用信息隱藏技術(shù)將需要隱藏的信息嵌入到APP中的XML文本文件中,與APP直接交付,且不影響APP的運(yùn)行,使軟件保護(hù)具有更好的性能,如發(fā)布的APK文件總體大小不變,比加密加殼等保護(hù)方式的APK文件大小小,軟件下載的延遲少,以及更好的用戶體驗(yàn),啟動(dòng)APK文件時(shí)比起加密加殼等軟件保護(hù)方式的等待時(shí)間更短。此外,通過(guò)本發(fā)明的信息隱藏方法可以實(shí)現(xiàn)隱秘通信、版權(quán)保護(hù)以及惡意軟件來(lái)源檢測(cè)和監(jiān)視。
【附圖說(shuō)明】
[0042]下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中:
[0043]圖1是本發(fā)明實(shí)施例基于文本水印的安卓應(yīng)用程序信息隱藏方法流程圖;
[0044]圖2是圖1中步驟S2的具體流程圖;
[0045]圖3是圖1中步驟S3的具體流程圖;
[0046]圖4是本發(fā)明實(shí)施例安卓系統(tǒng)下基于文本水印的隱秘通信方法流程圖;
[0047]圖5是本發(fā)明實(shí)施例安卓系統(tǒng)下基于文本水印的版權(quán)保護(hù)方法流程圖;
[0048]圖6是本發(fā)明實(shí)施例安卓系統(tǒng)下基于文本水印的惡意軟件來(lái)源檢測(cè)和追蹤方法流程圖。
【具體實(shí)施方式】
[0049]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0050]本發(fā)明實(shí)施例一種安卓系統(tǒng)下基于文本水印的安卓應(yīng)用程序保護(hù)方法,如圖1所示,包括以下步驟:
[0051]S1、將需要隱藏的信息M進(jìn)行加密處理,并按照規(guī)定格式保存到數(shù)組B[l,...,N-1],N為整數(shù);
[0〇52] S2、分析出AndroidManifest.xml文件中可以利用的位置,按照規(guī)定的格式密文(即保存了密文的數(shù)組)隱藏到相應(yīng)位置中,并生成APK文件;
[0053]S3、從 APK 文件中提取 Androi dManifest.xml 文件,并從AndroidManif est.xml 文件中解密隱藏的信息M。
[0054]本發(fā)明的一個(gè)實(shí)施例中,在步驟SI中,將需要隱藏的信息M進(jìn)行加密,并對(duì)加密后的信息轉(zhuǎn)化為二進(jìn)制數(shù),例如:當(dāng)進(jìn)行信息隱藏時(shí),將需要隱藏的有意義的明文信息M1,例如隱藏文本文件或一張圖片,使用某種加密方式如流密碼RC4加密為密文信息Cl,并將信息轉(zhuǎn)化為二進(jìn)制數(shù);或當(dāng)信息隱藏用于軟件保護(hù)時(shí),將軟件的保護(hù)信息,例如:包含軟件版權(quán)信息、軟件密鑰、開(kāi)發(fā)者信息的明文信息M2,使用流密碼RC4加密為密文信息C2,并將信息轉(zhuǎn)化為二進(jìn)制數(shù);轉(zhuǎn)化完成后,將得出的二進(jìn)制數(shù),例如:11010100,并