本發(fā)明涉及文件檢測領(lǐng)域,特別是涉及一種判斷混淆文件的方法和裝置。
背景技術(shù):
可移植可執(zhí)行的文件可以輕而易舉的被反編譯,文件反編譯后可以看到文件的源代碼,導(dǎo)致源代碼泄漏。所以,為了保護(hù)源代碼不被他人獲取,工程技術(shù)人員通常使用混淆工具對(duì)文件進(jìn)行混淆。軟件發(fā)布前,使用第三方工具進(jìn)行反編譯,需要人眼查看反編譯后的源代碼進(jìn)行判斷,來攔截那些沒有經(jīng)過混淆的文件。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)人眼查看反編譯后的源代碼的問題,提供一種判斷混淆文件的方法和裝置。
一種判斷混淆文件的方法,包括:獲取可移植可執(zhí)行的文件列表;加載所述文件列表中各可移植可執(zhí)行的文件,獲得各文件對(duì)應(yīng)的程序集;獲取所述程序集對(duì)應(yīng)的類名稱;檢測所述類名稱是否包含預(yù)設(shè)的特殊字符,若所述類名稱包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為已被混淆。
一種判斷混淆文件的裝置,包括:文件獲取模塊、加載模塊、類名稱獲取模塊和檢測模塊;所述文件獲取模塊,用于獲取可移植可執(zhí)行的文件列表;所述加載模塊,加載所述文件列表中各可移植可執(zhí)行的文件,獲得各文件對(duì)應(yīng)的程序集;所述類名稱獲取模塊,用于獲取所述程序集對(duì)應(yīng)的類名稱;所述檢測模塊,用于檢測所述類名稱是否包含預(yù)設(shè)的特殊字符,若所述類名稱包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為已被混淆,若所述類名稱不包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為沒有被混淆。
本發(fā)明通過獲取待檢測文件的類名稱,檢測所述類名稱字符串是否包含預(yù)設(shè)的特殊字符,自動(dòng)判斷待檢測文件是否被混淆,不需要依賴人工判斷。
附圖說明
圖1為一實(shí)施例的一種判斷混淆文件的方法的示意性流程圖;
圖2為另一實(shí)施例的一種判斷混淆文件的方法的示意性流程圖;
圖3為另一實(shí)施例的一種判斷混淆文件的方法的示意性流程圖;
圖4為一實(shí)施例的一種判斷混淆文件的裝置的示意性結(jié)構(gòu)圖。
具體實(shí)施方式
為了更進(jìn)一步闡述本發(fā)明所采取的技術(shù)手段及取得的效果,下面結(jié)合附圖及較佳實(shí)施例,對(duì)本發(fā)明的技術(shù)方案,進(jìn)行清楚和完整的描述。
圖1為一實(shí)施例的一種判斷混淆文件的方法的示意性流程圖。
如圖1所示,一種判斷混淆文件的方法,包括:
S101,獲取可移植可執(zhí)行的文件列表。
作為一優(yōu)選實(shí)施例,可移植可執(zhí)行(PE)文件是微軟Windows操作系統(tǒng)上的程序文件;獲取的PE文件的文件格式符合CLI標(biāo)準(zhǔn)的托管程序集,包括部分的dll和exe格式。
S102,加載所述文件列表中各可移植可執(zhí)行的文件,獲得各文件對(duì)應(yīng)的程序集。
S103,獲取所述程序集對(duì)應(yīng)的類名稱。
作為一優(yōu)選實(shí)施例,所述類名稱是實(shí)際代碼中的類名和類型名等。比如,程序集代碼中定義了:
public class BusinessModule
{
......
}
則獲取到的類名稱就是BusinessModule。
S104,檢測所述類名稱是否包含預(yù)設(shè)的特殊字符,若所述類名稱包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為已被混淆。
作為一優(yōu)選實(shí)施例,檢測所述類名稱是否包含預(yù)設(shè)的特殊字符的步驟之后還包括:若所述類名稱不包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為沒有被混淆。
本實(shí)施例通過獲取待檢測文件的類名稱,檢測所述類名稱是否包含預(yù)設(shè)的特殊字符,自動(dòng)判斷待檢測文件是否被混淆,不需要依賴人工判斷。
圖2為另一實(shí)施例的一種判斷混淆文件的方法的示意性流程圖。
如圖2所示,一種判斷混淆文件的方法,包括:
S201,選擇一個(gè)待檢測的目錄或文件,過濾所述目錄或文件,獲取可移植可執(zhí)行的文件列表。
作為一優(yōu)選實(shí)施例,自動(dòng)對(duì)所述目錄或文件過濾,過濾掉除dll和exe后綴的文件,保留符合CLI標(biāo)準(zhǔn)的托管程序集的dll和exe后綴的文件。
S202,加載所述文件列表中各可移植可執(zhí)行的文件,獲得各文件對(duì)應(yīng)的程序集。
作為一優(yōu)選實(shí)施例,自動(dòng)加載所述文件列表中保留的文件,獲得各文件對(duì)應(yīng)的程序集。
S203,獲取所述程序集對(duì)應(yīng)的類名稱。
作為一優(yōu)選實(shí)施例,自動(dòng)獲得各文件程序集對(duì)應(yīng)的類名稱。
S204,檢測所述類名稱是否包含預(yù)設(shè)的特殊字符;若是,執(zhí)行步驟S206,若否,執(zhí)行步驟S205。
作為一優(yōu)選實(shí)施例,可以檢測類名稱字符串中是否包括Unicode不可打印字符,Unicode不可打印字符包括:\u0000~\u001F、\u007F和\u0080~\u009F等。
S205,將對(duì)應(yīng)的文件標(biāo)記為沒有被混淆。
作為一優(yōu)選實(shí)施例,若所述類名稱不包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為沒有被混淆。
S206,將對(duì)應(yīng)的文件標(biāo)記為已被混淆。
作為一優(yōu)選實(shí)施例,若所述類名稱包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為已被混淆。
S207,將標(biāo)記結(jié)果顯示出來。
本實(shí)施例通過選擇一個(gè)待檢測的目錄或文件,獲取待檢測文件的類名稱,檢測所述類名稱是否包含預(yù)設(shè)的特殊字符,自動(dòng)判斷待檢測文件是否被混淆,不需要人工查看源代碼。
圖3為另一實(shí)施例的一種判斷混淆文件的方法的示意性流程圖。
如圖3所示,一種判斷混淆文件的方法,包括:
S301,選擇一個(gè)待檢測的目錄或文件。
S302,過濾所述目錄或文件,獲取后綴名為dll和exe的文件列表。
作為一優(yōu)選實(shí)施例,自動(dòng)對(duì)所述目錄或文件過濾,過濾掉除dll和exe后綴的文件,保留符合CLI標(biāo)準(zhǔn)的托管程序集的dll和exe后綴的文件。
S303,判斷所述文件列表是否為空,若文件列表不為空,執(zhí)行步驟S304,若文件列表為空,將標(biāo)記結(jié)果顯示出來。
作為一優(yōu)選實(shí)施例,顯示結(jié)果包括哪些文件已被混淆和哪些文件沒有被混淆。
S304,從所述文件列表中取出一個(gè)文件。
S305,加載所述文件獲取程序集。
S306,獲取所述程序集對(duì)應(yīng)的類名稱。
S308,判斷所述類名稱是否包含預(yù)設(shè)的特殊字符,若所述類名稱不包含預(yù)設(shè)的特殊字符,執(zhí)行步驟S303,若所述類名稱包含預(yù)設(shè)的特殊字符,執(zhí)行步驟S309。
S309,將對(duì)應(yīng)的文件標(biāo)記為已被混淆,返回執(zhí)行步驟S303。
作為一優(yōu)選實(shí)施例,若所述類名稱包含預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為已被混淆。
本實(shí)施例依次讀取一個(gè)目錄下后綴名為dll和exe的文件,自動(dòng)獲取待檢測文件的類名稱,檢測所述類名稱是否包含預(yù)設(shè)的特殊字符,可以同時(shí)自動(dòng)判斷一個(gè)目錄下的所有文件是否被混淆了。
圖4為另一實(shí)施例的一種判斷混淆文件的裝置的示意性結(jié)構(gòu)圖。
如圖4所示,一種判斷混淆文件的裝置,包括:文件獲取模塊101、加載模塊102、類名稱獲取模塊103和檢測模塊104;所述文件獲取模塊101,用于獲取可移植可執(zhí)行的文件列表;所述加載模塊102,加載所述文件列表中各可移植可執(zhí)行的文件,獲得各文件對(duì)應(yīng)的程序集;所述類名稱獲取模塊103,用于獲取所述程序集的對(duì)應(yīng)的類名稱,若所述類名稱不包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為沒有被混淆;所述檢測模塊104,用于檢測所述類名稱是否包含預(yù)設(shè)的特殊字符,若所述類名稱包括預(yù)設(shè)的特殊字符,將對(duì)應(yīng)的文件標(biāo)記為已被混淆。
作為一優(yōu)選實(shí)施例,所述判斷混淆文件的裝置還包括選擇模塊;所述選擇模塊,用于選擇一個(gè)待檢查的目錄或文件。
作為一優(yōu)選實(shí)施例,所述判斷混淆文件的裝置還包括過濾模塊;所述過濾模塊,用于過濾所述目錄或文件,獲取可移植可執(zhí)行的文件列表。
作為一優(yōu)選實(shí)施例,所述判斷混淆文件的裝置還包括顯示模塊;所述顯示模塊,用于將標(biāo)記結(jié)果顯示出來。
作為一優(yōu)選實(shí)施例,所述文件獲取模塊獲取的文件列表中文件的格式符合CLI標(biāo)準(zhǔn)的托管程序集。
作為一優(yōu)選實(shí)施例,開發(fā)工程師在進(jìn)行文件混淆時(shí)可以選擇使用Unicode不可打印字符進(jìn)行混淆,測試工程師在拿到送測的安裝包,將其安裝后,使用所述判斷混淆文件的裝置選擇安裝包的安裝目錄,所述裝置會(huì)篩選目錄下的文件,過濾掉除dll和exe后綴的文件,然后遍歷該待驗(yàn)證列表,對(duì)每一個(gè)文件加載并獲取其程序集,并獲取程序集對(duì)應(yīng)的類名稱;如果發(fā)現(xiàn)文件的類名稱包括Unicode不可打印字符,比如\u0001、\u0002,就標(biāo)記該文件被混淆了,否則標(biāo)記該文件未被混淆。
本實(shí)施例自動(dòng)篩選目錄下的文件,過濾掉除dll和exe后綴的文件,獲取保留的文件對(duì)應(yīng)的類名稱,并檢測所述類名稱字符串是否包含預(yù)設(shè)的特殊字符,來自動(dòng)判斷待檢測文件是否被混淆,不需要依賴人工。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡潔,未對(duì)上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。