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