欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Java編譯結(jié)果文件的識別方法及識別裝置制造方法

文檔序號:6499830閱讀:111來源:國知局
Java編譯結(jié)果文件的識別方法及識別裝置制造方法
【專利摘要】本發(fā)明提供一種JAVA編譯結(jié)果文件的識別方法和裝置。其中,該方法包括:構(gòu)建標本JAVA文件的標本結(jié)構(gòu)特征樹;按照標本結(jié)構(gòu)特征樹的構(gòu)建方式構(gòu)建待識別JAVA文件的待識別結(jié)構(gòu)特征樹;比較待識別結(jié)構(gòu)特征樹與標本結(jié)構(gòu)特征樹;當(dāng)結(jié)構(gòu)特征與標本結(jié)構(gòu)特征樹相匹配時,確定待識別JAVA文件與標本JAVA文件相同。本發(fā)明通過對java程序標本構(gòu)建特征樹,作為該java程序的唯一識別標準,提高java程序經(jīng)過多混淆器混淆后識別的覆蓋率和準確率。
【專利說明】JAVA編譯結(jié)果文件的識別方法及識別裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種JAVA編譯結(jié)果文件的識別方法及識別裝置?!颈尘凹夹g(shù)】
[0002]隨著Android手機的發(fā)展,java程序的應(yīng)用越來越多,java語言類惡意軟件也越來越多。由于java通過不同的混淆器得出的java文件編譯結(jié)果不同,給追查java類的手機惡意軟件帶來很大的困難。目前主要通過MD5識別法和常量串識別法來進行識別。MD5識別法是通過先識別樣本的MD5,然后在下次掃描時計算新的安裝包的MD5,將其與樣本的MD5進行匹配,如果匹配就識別為樣本安裝包,如果不匹配表示非樣本安裝包。常量串識別法是利用java程序中的常量串在混淆的過程中不會被修改,通過常量串來識別同一個程序的不同混淆結(jié)果。
[0003]但是以上兩種放放都存在很大的局限性。對于MD5識別法,不同JAVA文件的MD5值彼此不同,不能相互匹配,導(dǎo)致該方法的識別率非常低。對于常量串識別法,由于java程序中不具有常量串或者其常量串并不能與其他java程序的區(qū)分開,也即是其他java程序使用同樣的常量串,導(dǎo)致該方法便有很高的誤判率。

【發(fā)明內(nèi)容】

[0004]本發(fā)明提出一種JAVA編譯結(jié)果文件的識別方法及裝置,以解決現(xiàn)有技術(shù)中存在的識別率低和誤判率高的技術(shù)問題。
[0005]本發(fā)明的實施例提供一種JAVA編譯結(jié)果文件的識別方法,包括:構(gòu)建標本JAVA文件的標本結(jié)構(gòu)特征樹;按照標本結(jié)構(gòu)特征樹的構(gòu)建方式構(gòu)建待識別JAVA文件的待識別結(jié)構(gòu)特征樹;比較待識別結(jié)構(gòu)特征樹與標本結(jié)構(gòu)特征樹;當(dāng)結(jié)構(gòu)特征與標本結(jié)構(gòu)特征樹相匹配時,確定待識別JAVA文件與標本JAVA文件相同。
[0006]其中,構(gòu)建標本JAVA文件的結(jié)構(gòu)特征樹的步驟包括:確定JAVA文件的安裝包標本;根據(jù)安裝包中的核心文件得到標本JAVA文件的JAVA子文件;建立JAVA子文件的標本結(jié)構(gòu)特征子樹。標本結(jié)構(gòu)特征子樹包括常量節(jié)點和變量節(jié)點;常量節(jié)點包括常量的類型、值和可見范圍標記;變量節(jié)點包括變量的類型和可見范圍標記??梢姺秶鷺擞洖榘惭b包可見標記、JAVA子文件可見標記、類可見標記和函數(shù)可見標記中的一種或多種。
[0007]標本結(jié)構(gòu)特征子樹還包括類子樹;類子樹的節(jié)點包括類常量節(jié)點和類變量節(jié)點,類常量節(jié)點包括常量的類型、值和類可見標記,類變量節(jié)點包括變量的類型和類可見標記。
[0008]變量的節(jié)點包括函數(shù)變量的輸出類型、輸入類型和JAVA文件可見標記。標本結(jié)構(gòu)特征子樹還包括函數(shù)子樹;函數(shù)子樹的節(jié)點包括函數(shù)常量節(jié)點和函數(shù)變量節(jié)點;函數(shù)常量節(jié)點包括常量的類型、值和函數(shù)范圍可見標記,或者包括常量的類型、值和函數(shù)塊可見標記;函數(shù)變量節(jié)點包括變量的類型和函數(shù)范圍可見標記,或者包括變量的類型和函數(shù)塊可見標記。函數(shù)子樹的節(jié)點包括系統(tǒng)函數(shù)調(diào)用節(jié)點,系統(tǒng)函數(shù)調(diào)用節(jié)點包括系統(tǒng)函數(shù)名稱和系統(tǒng)函數(shù)在函數(shù)中的調(diào)用次數(shù)。[0009]本發(fā)明的實施例還提供一種JAVA編譯結(jié)果文件的識別裝置,包括:構(gòu)建單元,用于構(gòu)建標本JAVA文件的標本結(jié)構(gòu)特征樹,和按照標本結(jié)構(gòu)特征樹的構(gòu)建方式構(gòu)建待識別JAVA文件的待識別結(jié)構(gòu)特征樹;比較單元,用于比較待識別結(jié)構(gòu)特征樹與標本結(jié)構(gòu)特征樹,當(dāng)結(jié)構(gòu)特征與標本結(jié)構(gòu)特征樹相匹配時,確定待識別JAVA文件與標本JAVA文件相同。
[0010]構(gòu)建單元包括:確定模塊,用于確定JAVA文件的安裝包標本;匯編模塊,根據(jù)安裝包中的類文件得到標本JAVA文件的JAVA子文件;構(gòu)建模塊,建立JAVA子文件的標本結(jié)構(gòu)特征子樹。標本結(jié)構(gòu)特征子樹包括常量節(jié)點和變量節(jié)點;常量節(jié)點包括常量的類型、值和可見范圍標記;變量節(jié)點包括變量的類型和可見范圍標記??梢姺秶鷺擞洖榘惭b包可見標記、JAVA子文件可見標記、類可見標記和函數(shù)可見標記中的一種或多種。
[0011]標本結(jié)構(gòu)特征子樹還包括類子樹;類子樹的節(jié)點包括類常量節(jié)點和類變量節(jié)點,類常量節(jié)點包括常量的類型、值和類可見標記,類變量節(jié)點包括變量的類型和類可見標記。
[0012]變量的節(jié)點包括函數(shù)變量的輸出類型、輸入類型和JAVA文件可見標記。標本結(jié)構(gòu)特征子樹還包括函數(shù)子樹;函數(shù)子樹的節(jié)點包括函數(shù)常量節(jié)點和函數(shù)變量節(jié)點;函數(shù)常量節(jié)點包括常量的類型、值和函數(shù)范圍可見標記,或者包括常量的類型、值和函數(shù)塊可見標記;函數(shù)變量節(jié)點包括變量的類型和函數(shù)范圍可見標記,或者包括變量的類型和函數(shù)塊可見標記。函數(shù)子樹的節(jié)點包括系統(tǒng)函數(shù)調(diào)用節(jié)點,系統(tǒng)函數(shù)調(diào)用節(jié)點包括系統(tǒng)函數(shù)名稱和系統(tǒng)函數(shù)在函數(shù)中的調(diào)用次數(shù)。
[0013]本發(fā)明通過對java程序標本構(gòu)建特征樹,作為該java程序的唯一識別標準,提高java程序經(jīng)過多混淆器混淆后識別的覆蓋率和準確率。
【專利附圖】

【附圖說明】
[0014]本發(fā)明的發(fā)明構(gòu)思將在下面通過結(jié)合附圖詳細說明和介紹,其中附圖包括:
[0015]圖1表示本發(fā)明實施例提供的JAVA文件的識別方法的流程圖;
[0016]圖2表示本發(fā)明實施例提供的JAVA文件的識別裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0017]以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,本部分描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0018]實施例一
[0019]本實施例提供一種JAVA編譯結(jié)果文件的識別方法,應(yīng)用于JAVA文件的混淆結(jié)果識別,也可應(yīng)用于Windows平臺下C#的混淆結(jié)果識別。如圖1所示,該方法包括:
[0020]步驟SllO:構(gòu)建標本JAVA文件的標本結(jié)構(gòu)特征樹;
[0021]在該步驟中:確定JAVA文件的安裝包標本,然后根據(jù)安裝包中的類文件得到標本JAVA文件的JAVA子文件,再建立各JAVA子文件的標本結(jié)構(gòu)特征子樹。具體為,確定標本java文件中的安裝apk包并將該apk包進行解壓得到其中的class文件,對該class分析文件進行反匯編得到標本java文件的各java子文件。為每個java子文件生成標本結(jié)構(gòu)特征子樹。
[0022]標本結(jié)構(gòu)特征子樹包括常量節(jié)點和變量節(jié)點;常量節(jié)點包括常量的類型、值和可見范圍標記;變量節(jié)點包括變量的類型和可見范圍標記。其中,變量為函數(shù)變量時,變量的類型包括函數(shù)的輸入變量類型和輸出變量類型??梢姺秶鷺擞洖榘惭b包可見標記、JAVA子文件可見標記、類可見標記和函數(shù)可見標記中的一種或多種。具體為,整個apk包可見的常量/變量標記為GLOBAL,JAVA子文件可見的常量/變量標記為LOCAL,類范圍可見的常量/變量標記為CLASS,函數(shù)范圍可見的常量/變量標記為FUNCTION。優(yōu)選在JAVA子文件的子樹下生成類子樹,類子樹的節(jié)點包括類常量節(jié)點和類變量節(jié)點,類常量節(jié)點包括常量的類型、值和類可見標記,類變量節(jié)點包括變量的類型和類可見標記。更優(yōu)選地,在JAVA子文件的子樹下(函數(shù)變量標記為LOCAL)或類子樹下生成類子樹下(函數(shù)變量標記為CLACSS)生成函數(shù)子樹,包括函數(shù)常量節(jié)點和函數(shù)變量節(jié)點。函數(shù)常量節(jié)點包括常量的類型、值和函數(shù)范圍可見標記(如FUNCTION),或者包括常量的類型、值和函數(shù)塊可見標記(如BLOCK)。函數(shù)變量節(jié)點包括變量的類型和函數(shù)范圍可見標記(如FUNCTION),或者包括變量的類型和函數(shù)塊可見標記(如BLOCK)。此外函數(shù)子樹的節(jié)點還可以包括系統(tǒng)函數(shù)調(diào)用節(jié)點,系統(tǒng)函數(shù)調(diào)用節(jié)點包括系統(tǒng)函數(shù)名稱和系統(tǒng)函數(shù)在函數(shù)中的調(diào)用次數(shù)。
[0023]步驟S120:按照標本結(jié)構(gòu)特征樹的構(gòu)建方式構(gòu)建待識別JAVA文件的待識別結(jié)構(gòu)特征樹。
[0024]在該步驟中,待識別JAVA文件的待識別結(jié)構(gòu)特征樹的構(gòu)建方式與標本結(jié)構(gòu)特征樹的相同。
[0025]步驟S130:比較待識別結(jié)構(gòu)特征樹與標本結(jié)構(gòu)特征樹。
[0026]在該步驟中,根據(jù)常量節(jié)點結(jié)合變量節(jié)點體現(xiàn)的變量和常量的位置、數(shù)量和賦值情況進行比較。
[0027]步驟S140:當(dāng)結(jié)構(gòu)特征與標本結(jié)構(gòu)特征樹相匹配時,確定待識別JAVA文件與標本JAVA文件相同。
[0028]在該步驟中,當(dāng)待識別特征結(jié)構(gòu)樹中的子樹與標本特征結(jié)構(gòu)樹中的子樹匹配時,刪除標本特征結(jié)構(gòu)樹中的文件子樹,刪除子樹為剪枝過程。如果最后特征樹為空,證明結(jié)構(gòu)特征與標本結(jié)構(gòu)特征樹相匹配,確定待識別JAVA文件與標本JAVA文件相同。
[0029]詳細的特征樹構(gòu)建示例如示例I和示例2所示,示例I包含原程序和兩個示例混淆結(jié)果的特征樹,示例2中包含原程序和一個示例混淆結(jié)果的特征樹:
[0030]示例 I
[0031]原程序:
[0032]
【權(quán)利要求】
1.一種JAVA編譯結(jié)果文件的識別方法,其特征在于,該識別方法包括: 構(gòu)建標本JAVA文件的標本結(jié)構(gòu)特征樹; 按照所述標本結(jié)構(gòu)特征樹的構(gòu)建方式構(gòu)建待識別JAVA文件的待識別結(jié)構(gòu)特征樹; 比較所述待識別結(jié)構(gòu)特征樹與所述標本結(jié)構(gòu)特征樹; 當(dāng)所述待識別結(jié)構(gòu)特征樹與所述標本結(jié)構(gòu)特征樹相匹配時,確定所述待識別JAVA文件與所述標本JAVA文件相同。
2.根據(jù)權(quán)利要求1所述的JAVA編譯結(jié)果文件的識別方法,其特征在于,所述構(gòu)建標本JAVA文件的結(jié)構(gòu)特征樹的步驟包括: 確定標本JAVA文件的安裝包標本; 根據(jù)所述安裝包中的類文件得到所述標本JAVA文件的JAVA子文件; 建立所述JAVA子文件的標本結(jié)構(gòu)特征子樹。
3.根據(jù)權(quán)利要求2所述的JAVA編譯結(jié)果文件的識別方法,其特征在于:所述標本結(jié)構(gòu)特征子樹包括常量節(jié)點和變量節(jié)點; 所述常量節(jié)點包括常量的類型、值和可見范圍標記; 所述變量節(jié)點包括 變量的類型和可見范圍標記。
4.根據(jù)權(quán)利要求3所述的JAVA編譯結(jié)果文件的識別方法,其特征在于: 所述可見范圍標記為安裝包可見標記、JAVA子文件可見標記、類可見標記和函數(shù)可見標記中的一種或多種。
5.根據(jù)權(quán)利要求4所述的JAVA編譯結(jié)果文件的識別方法,其特征在于: 所述標本結(jié)構(gòu)特征子樹還包括類子樹; 所述類子樹的節(jié)點包括類常量節(jié)點和類變量節(jié)點,所述類常量節(jié)點包括常量的類型、值和類可見標記,所述類變量節(jié)點包括變量的類型和類可見標記。
6.根據(jù)權(quán)利要求4或5任意一項所述的JAVA編譯結(jié)果文件的識別方法,其特征在于: 所述變量的節(jié)點包括函數(shù)變量的輸出類型、輸入類型和JAVA文件可見標記。
7.根據(jù)權(quán)利要求6中所述的JAVA編譯結(jié)果文件的識別方法,其特征在于: 所述標本結(jié)構(gòu)特征子樹還包括函數(shù)子樹; 所述函數(shù)子樹的節(jié)點包括函數(shù)常量節(jié)點和函數(shù)變量節(jié)點; 所述函數(shù)常量節(jié)點包括常量的類型、值和函數(shù)范圍可見標記,或者包括常量的類型、值和函數(shù)塊可見標記; 所述函數(shù)變量節(jié)點包括變量的類型和函數(shù)范圍可見標記,或者包括變量的類型和函數(shù)塊可見標記。
8.根據(jù)權(quán)利要求7所述的JAVA編譯結(jié)果文件的識別方法,其特征在于: 所述函數(shù)子樹的節(jié)點包括系統(tǒng)函數(shù)調(diào)用節(jié)點,所述系統(tǒng)函數(shù)調(diào)用節(jié)點包括系統(tǒng)函數(shù)名稱和所述系統(tǒng)函數(shù)在函數(shù)中的調(diào)用次數(shù)。
9.一種JAVA編譯結(jié)果文件的識別裝置,其特征在于,該裝置包括: 構(gòu)建單元,用于構(gòu)建標本JAVA文件的標本結(jié)構(gòu)特征樹,和按照所述標本結(jié)構(gòu)特征樹的構(gòu)建方式構(gòu)建待識別JAVA文件的待識別結(jié)構(gòu)特征樹; 比較單元,用于比較所述待識別結(jié)構(gòu)特征樹與所述標本結(jié)構(gòu)特征樹,當(dāng)所述待識別結(jié)構(gòu)特征樹與所述標本結(jié)構(gòu)特征樹相匹配時,確定所述待識別JAVA文件與所述標本JAVA文件相同。
10.根據(jù)權(quán)利要求9所述的JAVA編譯結(jié)果文件的識別裝置,其特征在于,所述構(gòu)建單元包括: 確定模塊,用于確定JAVA文件的安裝包標本; 匯編模塊,根據(jù)所述安裝包中的類文件得到所述標本JAVA文件的JAVA子文件; 構(gòu)建模塊,建立所述JAVA子文件的標本結(jié)構(gòu)特征子樹。
11.根據(jù)權(quán)利要求9所述的JAVA編譯結(jié)果文件的識別裝置,其特征在于: 所述標本結(jié)構(gòu)特征子樹包括常量節(jié)點和變量節(jié)點; 所述常量節(jié)點包括常量的類型、值和可見范圍標記; 所述變量節(jié)點包括變量的類型和可見范圍標記。
12.根據(jù)權(quán)利要求11所述的JAVA編譯結(jié)果文件的識別裝置,其特征在于: 所述可見范圍標記為安裝包可見標記、JAVA子文件可見標記、類可見標記和函數(shù)可見標記中的一種或多種。
13.根據(jù)權(quán)利要求11任意一項所述的JAVA編譯結(jié)果文件的識別裝置,其特征在于: 所述標本結(jié)構(gòu)特征子樹還包括類子樹; 所述類子樹的節(jié)點包括類常量節(jié)點和類變量節(jié)點,所述類常量節(jié)點包括常量的類型、值和類可見標記,所述類變量節(jié)點包括變量的類型和類可見標記。
14.根據(jù)權(quán)利要求11-12任意一項所述的JAVA編譯結(jié)果文件的識別裝置,其特征在于: 所述變量的節(jié)點包括函數(shù)變量的輸出類型、輸入類型和JAVA文件可見標記。
15.根據(jù)權(quán)利要求14任意一項所述的JAVA編譯結(jié)果文件的識別裝置,其特征在于: 所述標本結(jié)構(gòu)特征子樹還包括函數(shù)子樹; 所述函數(shù)子樹的節(jié)點包括函數(shù)常量節(jié)點和函數(shù)變量節(jié)點; 所述函數(shù)常量節(jié)點包括常量的類型、值和函數(shù)范圍可見標記,或者包括常量的類型、值和函數(shù)塊可見標記; 所述函數(shù)變量節(jié)點包括變量的類型和函數(shù)范圍可見標記,或者包括變量的類型和函數(shù)塊可見標記。
16.根據(jù)權(quán)利要求15中所述的JAVA編譯結(jié)果文件的識別裝置,其特征在于,還包括: 所述函數(shù)子樹的節(jié)點包括系統(tǒng)函數(shù)調(diào)用節(jié)點,所述系統(tǒng)函數(shù)調(diào)用節(jié)點包括系統(tǒng)函數(shù)名稱和所述系統(tǒng)函數(shù)在函數(shù)中的調(diào)用次數(shù)。
【文檔編號】G06F9/44GK103970523SQ201310047203
【公開日】2014年8月6日 申請日期:2013年2月5日 優(yōu)先權(quán)日:2013年2月5日
【發(fā)明者】陳曉洪, 莊仁峰, 孔軼, 黃偉湘, 鄭浩彬, 呂漢鑫, 譚俊, 雷志勇, 魏來, 李友國 申請人:中國移動通信集團廣東有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
灌阳县| 信丰县| 梅州市| 上杭县| 贵定县| 邻水| 罗平县| 潮安县| 闵行区| 晋州市| 龙岩市| 大新县| 延边| 彩票| 雅江县| 逊克县| 中卫市| 上林县| 四平市| 崇信县| 隆回县| 崇礼县| 壤塘县| 乌拉特前旗| 上高县| 卫辉市| 来宾市| 康平县| 巴中市| 屏东县| 灵璧县| 德清县| 安陆市| 宝丰县| 广德县| 小金县| 肇东市| 宝清县| 黄陵县| 浑源县| 定南县|