專利名稱:Pe文件源代碼一致性的判定方法及裝置的制作方法
技術領域:
本發明涉及一種PE文件源代碼一致性的判定方法及裝置。
背景技術:
碼進行編譯,而隨著dailybuild (日常編譯)技術的引入,產品可時刻不停地進 行編譯,從而產生大量的PE文件,由于編譯時嵌入了一些與編譯時間、編譯器 版本等相關的信息,這些信息被編譯進入PE文件內部,導致即使是基于相同源 代碼的PE文件,多次編譯以后的二進制文件對比也不盡相同,產品版本號也不 停地發生變化,此外,在添加數字簽名技術以后,數字簽名機制及hash機制也 會造成對PE文件的二進制格式基礎上的修改。雖然可以通過自動化測試技術進 行一些技術上的測試保障,測試人員還是需要確認在編譯過程中有哪些模塊進 行了源代碼級別的變更,以便于測試人員確定測試重點,此外,對于軟件版本 發布人員而言,需要確認測試通過的版本與當前準備發布的版本是不是基于相 同的源代碼,如果是基于相同的源代碼,則可以進行發布。
在現有技術中,在判斷兩個PE文件是否基于相同的源代碼時,通常是對比
否相同,若源代碼相同,則是基于相同的源代碼,這種判定方式,要訪問生成 PE文件的所有源代碼,需要較高的源代碼庫的權限,甚至會威脅到源代碼庫的 保密安全。
發明內容
本發明的目的在于提供一種基于PE文件,不需訪問源代碼庫,即可判定 PE文件內容是否基于相同的源代碼的方法及裝置,即PE文件源代碼一致性的 判定方法及裝置,可以不影響源代碼庫的安全性。為達到上述目的,本發明采用以下技術方案 一種pe文件源代碼一致性的判定方法,包括步驟 判斷各pe文件所包含的段的數目是否相同;
若是,枚舉所述各pe文件所包含的段,并判斷所述各pe文件所具有的關 鍵段的內容是否相同,若相同,則判定所述各pe文件內容是基于相同的源代碼, 若不相同,則判定所述各pe文件內容是基于不同的源代碼;
若否,則判定所述各pe文件基于不同的源代碼。
一種pe文件源代碼一致性的判定裝置,包括
段數目判別模塊,用于判斷各pe文件所包含的段的數目是否相同,若不相 同,則比較結果處理模塊判定所述各pe文件是基于不同的源代碼;
段枚舉模塊,用于當所述段數目判別模塊判斷結果為相同時,對所述各pe 文件所包含的段進行枚舉;
關鍵段判別模塊,用于判斷所述段枚舉模塊所枚舉的當前枚舉段是否為關 鍵段,若是,則判斷各關鍵段是否相同,若否,則不進行判斷;
比較結果處理模塊,用于根據所述段數目判別模塊及所述關鍵段判別模塊 的判別結果,判斷所述各pe文件內容是否基于相同的源代碼,當所述段數目判 別模塊判定結果為相同且所述關鍵段判別模塊判定結果為相同時,所述比較結 果處理模塊判定所述各pe文件內容是基于相同的源代碼。
根據本發明的pe文件源代碼一致性的判定方法及其裝置,其可以根據pe 文件的公開結構,獲得pe文件所包含的段的數目及類型,對于來源于相同的源
代碼的pe文件,其包含的段的數目相同,且所包含的關鍵^a的內容也相同,即,
當所對比的各待分析pe文件所包含的段的數目相同,且所包含的各關鍵段的內 容也相同時,即可確定各待分析pe文件是基于相同的源代碼,本發明的偵測方 式不需要依賴于pe文件所對應的原始的源代碼,操作方便,且不會影響源代碼 庫的安全性。
圖1是本發明PE文件源代碼一致性的判定方法的實施例一的流程示意圖; 圖2是本發明PE文件源代碼一致性的判定方法的實施例二的流程示意圖; 圖3是本發明PE文件源代碼一致性的判定裝置的較佳實施例的結構示意圖。
具體實施例方式
本發明的PE文件源代碼一致性的判定方法,可以對兩個及兩個以上的PE 文件是不是基于相同的源代碼進行判定。
根據PE文件的公開結構(通常是線性的數據流),可以獲得PE文件所包含 的段的數目及類型,對于由相同的源代碼所生成的PE文件,其所包含的段的數 目必須相同,因為段數目的制定需要修改源代碼的內容,從而,當檢測出各PE 文件所包含的段的數目不相同時,即可直接判定各PE文件是來源于不同的源代 碼;此外,對于相同的源代碼,即使其編譯多次,其某些段的內容都是不會發 生變化的,稱之為關鍵段,通常情況下,這些段的名稱是確定的,例如
.text段,這個段為代碼段,其所包含的內容是指令代碼,如果這個段的內 容發生了變化,其所對應的源代碼也一定是被修改過,即,如果是基于相同的 源代碼,各PE文件所包含的該.text段必然包含相同的內容;
.data段,這個段為初始化數據段,包括了源代碼編譯時被初始化的全局和 靜態變量,因此,如果這個段的內容發生了變化,那么,源代碼也必然被修改
過;
.idata段,這個段相當于一個導入表,包含了外來模塊的函數以及數據信息, 因此,如果這個段的內容發生了變化,則必然對其所對應的源代碼進行了修改。
基于此,本發明的PE文件源代碼一致性的判定方法,包括以下步驟
判斷各PE文件所包含的段的數目是否相同;
若是,枚舉所述各PE文件所包含的段,并判斷所述各PE文件所具有的關
820071
鍵段的內容是否相同,若相同,則判定所述各PE文件內容是基于相同的源代碼,
若不相同,則判定所述各PE文件內容是基于不同的源代碼; 若否,則判定所述各PE文件基于不同的源代碼。
根據本發明的PE文件源代碼一致性的判定方法,可以不需要依賴于PE文 件所對應的源代碼的內容,可直接根據PE文件的公開結構,對各待分析PE文 件內容是不是基于相同的源代碼進行判斷,當檢測出各PE文件所包含的段的數 目不相同時,即可直接判定各PE文件是來源于不同的源代碼;當各PE文件所 包含的段的數目相同且所包含的各關鍵段的內容相同時,即可以判定各PE文件 是基于相同的源代碼,從而,應用本發明的判定方式,不需要依賴于原始的源 代碼內容,即可對PE文件的源代碼的一致性進行判定,可以不影響源代碼的安 全性,操作便捷。[G]
當判斷了 PE文件是否基于相同的源代碼時,即可進行具體應用時的下一步 應用操作過程,比如,當判定PE文件是基于不同的源代碼時,可以對PE文件 重新進行測試,當判定PE文件是基于相同的源代碼時,則可以對確定的PE文 件施行自動版本發布,或者做軟件版本管理,或者是其他的應用操作過程,根 據具體應用需要及環境的不同可以有所不同。
此外,由于PE文件中還包含有調試信息,而對于來自于相同源代碼的PE 文件,其各自所包含的調試信息中除了第 一非必要信息之外的其他信息也必要 相同,該第一非必要信息包括時間戳信息,根據編譯器類型及編譯時的控制策 略的不同,調試信息可以位于關鍵段也可以位于非關鍵段,通常情況下,該調 試信息可位于非關鍵段。當調試信息位于關鍵段時,可采用上述本發明的方法 進行判斷,即當各PE文件所包含的段的數目相同且所包含的關4定段的內容相同 時,所述各PE文件是基于相同的源代碼,而當調試信息位于非關鍵^:時,則還 要對各PE文件所包含的調試信息是否相同進行判定。
故此,本發明的PE文件源代碼一致性的判定方法,在判斷各PE文件所具 有的關鍵段的內容是否相同之前,還可以包括步驟
9檢測當前枚舉段是否包含調試信息;
若是,判斷調試信息中除了第一非必要信息之外的其他信息是否相同,若
不相同,則判定所述各PE文件內容是基于不同的源代碼,若相同,則判斷所述 當前枚舉段是否為關鍵段,所述第 一非必要信息包括時間戳信息;
若否,則判斷所述當前枚舉段是否為關鍵段。
根據本發明的這種PE文件源代碼一致性的判定方法,當無法確定調試信息 是位于關鍵段還是位于非關鍵段時,或者是已經確定調試信息是位于非關鍵段 時,則可以在已判定各PE文件的段的數目相同的情況下,可首先判定當前枚舉 段是否包含調試信息,若是,則首先判斷各PE文件的調試信息中除了第一非必 要信息之外的其他信息是否相同,若相同,則繼續對關鍵段進行判定,若不同, 則可直接判定各PE文件是基于不同的源代碼,分析判斷速度較快,節省了時間。
此外,在軟件開發過程中,根據具體開發環境的需要、以及具體功能實現 的不同,開發人員可能根據需要定義一些自定義段,在各PE文件是來源于相同 源代碼的情況下,其所包含的自定義段的的數量和內容也必然相同。因此,本 發明的PE文件源代碼一致性的判定方法,還可以包括
當所述各PE文件具有自定義段時,判斷所述各PE文件的自定義段的數量 和內容是否相同;
若相同,且所述各PE文件所包含的段的數目相同以及所包含的關鍵段的內 容相同,則判定所述各PE文件是基于相同的源代碼。
從而,若PE文件中包含有自定義段,或者無法確定PE文件中是否包含自 定義段時,在對PE文件源代碼的一致性進行判斷時,還需判定各PE文件的自 定義段是否相同,當各PE文件的自定義段的數量和/或內容不同時,則可直接 判定各PE文件內容是基于不同的源代碼,當各PE文件的自定義段的數量和內 容相同時,則可以結合關鍵段的判定結果進行綜合判斷。其中,對自定義段的分析判斷過程可以是在任意時刻進行,即,可以在對 關鍵段進行判別之前進行,也可以是在對關鍵段進行判別之后進行,還可以是 在對調試信息進行判別的之前或者之后進行,根據需要的不同以及具體判別環 境的不同可以有所不同。
此外,由于關鍵段可以是資源段,也可以是非資源段,而資源段必然是關 鍵段,故而在對關鍵段進行判斷時,可以將關鍵段分為資源段與非資源段來區
別對待,即
若關鍵段為資源段,例如.rsrc段,由于資源段包含了模塊的全部資源數據, 例如圖片信息、位圖信息、圖表信息、波形信息以及版本信息等信息,而這些 信息中,會包含一些即使源代碼不發生變化、根據編譯次數或者編譯環境的不 同會發生改變的第二非必要信息,比如版本信息,在使用相同的源代碼的情況 下,根據編譯次數的不同,可以產生不同的版本信息,而圖片信息、位圖信息、 圖表信息等信息,則在基于相同源代碼的情況下,即使編譯多次也不會發生改 變,因此,在對資源段進行比較時,可不考慮該第二非必要信息,即,可以對 資源段所包含的資源信息進行遍歷搜索,只要除了該第二非必要信息之外的其 他信息相同,則可以判定當前枚舉的關鍵段為相同,而當除了該第二非必要信 息的其他任意一個信息不同時,則可以判定當前枚舉的關鍵段不相同;
若關鍵段為非關鍵段,由于每一次編譯時的時間及環境的不同,在生成PE 文件時可能包含即使源代碼相同、隨著編譯次數或者編譯環境的不同仍會發生 改變的第三非必要信息,比如時間戳信息,因此,在對非資源段進行比較時, 可以不考慮該第三非必要信息,只要除了該第三非必要信息之外的其他信息相 同,則可以判定當前枚舉的關鍵段為相同,而當除了該第三非必要信息之外的 其他任意一個信息不同時,則可以判定當前枚舉的關鍵段不相同。
基于此,本發明的PE文件源代碼一致性的判定方法,在對關鍵段是否相同 進行判斷時,具體可以包括
當所述關鍵段為資源段時,比較該資源段中除了第二非必要信息之外的信息是否相同,若相同,則判定所述各關鍵段的內容相同,所述第二非必要信息
包括版本信息;
當所述關鍵段為非資源段時,比較該資源段中除了第三非必要信息的信息 是否相同,若相同,則判定所述各關鍵段的內容相同,所述第三非必要信息包 括時間戳信息。
因此,根據本發明的方法,當關鍵段為資源段時,則可以對資源段所包含的 資源信息進行遍歷搜索,只要除了第二非必要信息的其他信息相同,則可以判 定當前枚舉的關鍵段為相同,而當除了該第二非必要信息的其他任意一個信息
不同時,則可以判定當前枚舉的關鍵段不相同;當關鍵段為非關鍵段時,只要 除了第三非必要信息的其他信息相同,則可以判定當前枚舉的關鍵段為相同, 而當除了該第三非必要信息的其他任意 一個信息不同時,則可以判定當前枚舉 的關鍵段不相同。其通過對關鍵段為資源段以及關鍵段為非資源段進行區別對 待,有效提高對PE文件源代碼的一致性判斷的準確性。
下面針對本發明PE文件源代碼一致性的判定方法的兩個較佳實施例進行詳 細i兌明。
實施例一
如圖1所示,是本發明實施例一的流程示意圖,在本實施例中,本發明方 法包括步驟
步驟S101:分析當前待分析文件是否為PE文件,若是,進入步驟S102, 若否,則直接結束該分析過程;
代碼進行偵測,而在某些情況下,例如目的是需要找出與待定PE文件是來自于 相同源代碼的其他PE文件時,可能無法確定加入偵測隊列的文件是不是PE文 件,因此,可首先對當前待分析文件是否為PE文件進行判定,若不是,則可以 直接結束對當前待分析文件的判斷過程,以節省時間;步驟S102:判斷待分析各PE文件所包含的段的數目是否相同,若相同, 則進入步驟S103,若否,則直接判定所述各PE文件是基于不同的源代碼,這 是因為,對于由相同的源代碼所生成的PE文件,所包含的段的數目必然相同, 若段的數目發生了改變,則必然是因為源代碼的內容發生了改變;
步驟S103:依次枚舉各PE文件所包含的段,當還存在需枚舉的段時,進 入步驟S104,若不再具有需要枚舉的段,即各PE文件的段枚舉完畢,則進入 步驟S110;
步驟S104:判斷調試信息是否位于當前枚舉段,若是,進入步驟S105,若 否,進入步驟S106;
步驟S105:判斷各PE文件的當前枚舉段的調試信息中除了第一非必要信 息之外的其他信息是否相同,若是,進入步驟S106,若否,則直接判定所述各 PE文件是基于不同的源代碼,其中,所述第一非必要信息包括時間戳信息;
步驟S106:判斷當前枚舉段是否為關鍵段,若是,進入步驟S107,若否, 返回步驟S103;
步驟S107:判斷當前關鍵段是否為資源段,若是,進入步驟S108,若否, 進入步驟S109;
步驟S108:使用資源段對比方式對資源段進行對比,即,不考慮資源段中 所包含的第二非必要信息,對除了該第二非必要信息的其他信息進行比對,若 該其他信息相同,則判定所對比的關鍵段內容相同,若該其他信息不同,則判 定所對比的關鍵段的內容不同,并返回步驟S103,其中,該第二非必要信息包 括版本信息;
步驟S109:使用非資源段對比方式對該非資源段進行對比,即,不考慮該 非資源段中所包含的第三非必要信息,對除了該第三非必要信息之外的其他信 息進行比較,若相同,則判定所對比的關鍵段內容相同,若不同,則判定所對 比的關鍵段的內容不相同,并返回步驟S103,其中,該第三非必要信息包括時 間戳信息;
13在多次執行上述步驟SI03至步驟S109后,即可對各PE文件所包含的多個 段分別進行比較,然后,進入步驟S110;
步驟SllO,處理上述各步驟的比較結果,判斷各PE文件是否基于相同的 源代碼,即,在各PE文件所包含的段的數目相同、調試信息相同且各關鍵段的 內容相同,則判定所述各PE文件是基于相同的源代碼。
實施例二
在本實施例中,與實施例一的不同在于,還對各PE文件中所包含的自定義 段的內容進行判斷,如圖2所示,其包括步驟
步驟S201:分析待分析文件是否為PE文件,若是,進入步驟S202,若否, 結束當前判別進程;
步驟S202:判斷當前各待分析PE文件所包含的段的數目是否相同,若相 同,進入步驟S203,若不同,則直接判定各PE文件是基于不同的源代碼;
步驟S203:枚舉各待分析PE文件所包含的段,當還具有需要枚舉的段時, 進入步驟S204,若已經沒有需要枚舉的段,則進入步驟S212;
步驟S204:判斷當前枚舉段是否為自定義段,若是,進入步驟S205,若否, 進入步驟S206;
步驟S205:判斷各待分析PE文件所包含的自定義段的數量和內容是否相 同,若相同,則進入步驟S206,若不同,則直接判定所述各待分析PE文件是 基于不同的源代碼;
步驟S206:判斷調試信息是否位于當前枚舉段,若是,進入步驟S207,若 否,進入步驟S208;
步驟S207:判斷當前所枚舉的段所包含的調試信息中除了第一非必要信息 之外的其他信息是否相同,若相同,則進入步驟S208,若不同,則直接判定所 述各待分析PE文件是基于不同的源代碼;
14步驟S208:判斷當前枚舉段是否為關鍵段,若是,進入步驟S209,若否, 返回步驟S203;
步驟S209,判斷當前關鍵段是否為資源段,若是,進入步驟S210,若否, 則進入步驟S211;
步驟S210:使用資源段對比方式對當前資源段進行對比,即,判斷除了第 二非必要信息之外的其他信息進行同異性比較,若相同,則判定所對應的各關 鍵段的內容相同,若不同,則判定所對應的各關鍵段的內容不相同,并返回步 驟S203,所述第二非必要信息包括軟件版本信息;
步驟S21k使用非資源段對比方式對當前非資源段進行對比,即,判斷除 了第三非必要信息之外的其他信息進行同異性比較,若相同,則判定所對應的 各關鍵段的內容相同,若不同,則判定所對應的各關鍵段的內容不相同,并返 回步驟S203,所述第三非必要信息包括時間戳信息;
多次進行上述步驟S203至步驟S211后,可得到對各待分析文件的各個段 的比較結果,從而可進入步驟S212,對各PE文件是不是基于相同的源代碼進 行綜合性判定;
步驟S212:處理上述各步驟的比較結果,判斷各待分析PE文件是否基于 相同的源代碼,即,在具有自定義段的情況下,若各PE文件所包含的段的數目 相同、所包含的自定義段的數量和內容、調試信息相同且各關鍵段的內容相同, 則判定所述各PE文件是基于相同的源代碼。
本實施例的其他技術特征與實施例一相同,在此不予贅述。
由此可見,當軟件開發優化在進行軟件開發時,如果用戶定義了自定義段,
基于相同源代碼的各項分析更全面且更準確。
其中,在本實施例二中,對自定義段的同異性判斷是在對調試信息的判定 之前進行,實際上,對各PE文件所包含的自定義段的同異性判斷,還可以是在 對調試信息判別之后進行,可以是在對關鍵段的判別之前進行,也可以是在對關鍵段的內容進行判別之后進行,根據具體的需要及應用環境的不同可以有所 不同。
此外,在上述各實施例中,均是針對判斷各PE文件是否基于相同的源代碼
進行說明,本發明的PE文件源代碼一致性的判定方法,還可以用于查找與某一 個特定的PE文件是基于相同源代碼的其他PE文件,也可以用來判定兩個不同 的目錄中是否存在是基于相同的源代碼的PE文件,在這種應用中,可在執行本 發明方法之前,首先判定是否存在待分析文件,若存在,則執行本發明方法的 步驟,若不存在,則可以直接結束,不進行判別。
如圖3所示,是本發明PE文件源代碼一致性的判定裝置的一個較佳實施例 的結構示意圖,如圖所示,在該較佳實施例中,本發明的裝置包括
段數目判別模塊301,用于判斷各PE文件所包含的段的數目是否相同,若
段枚舉模塊302,用于當所述段數目判別模塊301判斷結果為相同時,對所 述各PE文件所包含的段進行枚舉;
關鍵段判別模塊305,用于判斷所述段枚舉模塊302所枚舉的當前枚舉段是 否為關鍵段,若是,判斷各關鍵段是否相同,若否,則不進行判斷;;
比較結果處理模塊306,用于根據所述段數目判別模塊301及所述關鍵段判 別模塊305的判別結果,判斷所述各PE文件內容是否基于相同的源代碼,當所 述段數目判別模塊301的判定結果為相同且所述關鍵段判別模塊305的判定結 果為相同時,所述比較結果處理模塊306判定所述各PE文件內容是基于相同的 源代碼。
根據本發明的PE文件源代碼一致性的判定裝置,其不需要依賴于各PE文 件所對應的源代碼內容,只需結合各PE文件所包含的段的數目、以及各PE文 件所包含的內容的異同,即可對PE文件是不是基于相同的源代碼進行判定,即, 當各PE文件所包含的數目相同,且所包含的關鍵段的內容相同,則可以判定各分析PE文件是基于相同的源代碼,從而不會破壞了源代碼數據庫的安全性,具 有較大的便利性。
本發明的PE文件源代碼一致性的判定裝置,還可以包括
調試信息判別模塊303,用于判斷所述段枚舉模塊301的當前枚舉段是否包 含調試信息,若是時,判斷調試信息中除了第一非必要信息之外的其他信息是 否相同,若不相同,則所述比較結果處理模塊306直接判定所述各PE文件內容 是基于不同的源代碼,若相同,則由所述關鍵段判別模塊進行判斷;當所述段 數目判別模塊的判定結果為相同、所述關鍵段判別模塊判定結果為相同以及所 述調試信息判別模塊的判定結果為相同時,所述比較結果處理模塊判定所述各 PE文件是基于相同的源代碼,其中,所述第一非必要信息包括時間戳信息。
由于調試信息既可以位于關鍵段,也可以位于非關鍵段,若確定調試信息 位于關鍵段,則可以釆用上述裝置進行判定,若無法確定調試信息所在段為關 鍵段還是非關鍵段,則可以通過該調試信息判別模塊303事先判定當前枚舉段 是否包含調試信息,若是,當枚舉段所包含的調試信息中除了第一非必要信息 之外的其他信息不相同時,則可以直接確定各PE文件是基于不同的源代碼,僅 當PE文件所包含的段的數目相同、調試信息中除了第一非必要信息之外的其他 信息相同且各關4定段相同時,判定PE文件是基于相同的源代碼,判定速度更快, 效率更高。
此外,本發明的PE文件源代碼一致性的判定裝置,還可以包括
自定義段判別模塊304,用于當PE文件具有自定義段時,判斷各PE文件 的自定義段的數量和內容是否相同,若不相同,則所述比較結果處理模塊306 可直接判定所述各PE文件內容是基于不同的源代碼;
當所述段數目判別模塊判定結果為相同、所述關鍵段判別模塊判定結果為 相同且所述自定義段判別結果為相同時,所述比較結果處理;漠塊判定所述各PE文件內容是基于相同的源代碼。
根據軟件開發所采用的方法手段的不同,軟件開發人員在進行開發時可能 會增加自定義段,故在偵測PE文件是否基于相同源代碼時,可通過自定義段判
別模塊304對自定義段進行判別,以完整地進行判斷,當該自定義段判別模塊 304判斷出各待分析文件的自定義段的數量和/或內容不同時,可直接判定各PE 文件是基于不同的源代碼,僅當各PE文件所包含的段的數目相同、關鍵段的內 容相同、自定義段的內容相同,在具有調試信息判別模塊303時,調試信息中 除了第 一非必要信息之外的其他信息也相同時,即可判定各PE文件是基于相同 的源代碼。
由于關鍵段可以包含資源段與非資源段,而資源信息可以包括圖片信息、 版本信息、位圖信息、圖標信息、波形信息等信息,而即使是對于相同的源代 碼,根據編譯次數的不同,版本信息也可以有所不同,而圖片信息、位圖信息 等信息,如果是對于相同的源代碼,即使編譯多次也不會發生改變,因此,在 對資源段的同異性進行判斷時,可以排除對版本信息等第二非必要信息的判斷。
同理,由于非資源段可以包含時間戳信息,即使對于相同的源代碼,其所 生成的PE文件中所包含的時間戳信息可能不同,因此,在對非資源段的同異性 進行判斷時,可以排除對時間戳信息等信息的判斷。
基于此,本發明中的關鍵段判別模塊305具體可以包括
資源段判別模塊3051,用于當所述關鍵段為資源段時,比較該資源段中除 了第二非必要信息之外的信息是否相同,若相同,則判定所述各關鍵段的內容 相同,所述第二非必要信息包括版本信息;
非資源段判別模塊3052,用于當所述關鍵段為非資源段時,比較該資源段 中除了第三非必要信息之外的信息是否相同,若相同,則判定所述各關鍵段的 內容相同,所述第三非必要信息包括時間戳信息。
從而,本發明的PE文件源代碼的一致性的判別裝置,在對資源,殳進行判斷時,可以通過資源段判別模塊3051對資源段所包含的資源信息進行遍歷搜索, 當除了第二非必要信息之外的其他信息相同時,即判定各資源段相同,而當除
了該第二非必要信息之外的其他信息不相同時,則判定各資源段不相同;在對 非資源段的同異性進行判斷時,可以通過非資源段判別模塊3052排除對時間戳 信息的判斷,即,當除了第三非必要信息之外的其他信息相同時,則判定各非 資源段相同,而當除了該第三非必要信息之外的其他信息不相同時,則判定各 非資源段不相同,其通過對關鍵段為資源段以及關鍵段為非資源段進行區別對 待,有效提高對PE文件源代碼的一致性判斷的準確性,。
以上所述的本發明實施方式,并不構成對本發明保護范圍的限定。任何在 本發明的精神和原則之內所作的修改、等同替換和改進等,均應包含在本發明 的權利要求保護范圍之內。
權利要求
1、一種PE文件源代碼一致性的判定方法,包括步驟判斷各PE文件所包含的段的數目是否相同;若是,枚舉所述各PE文件所包含的段,并判斷所述各PE文件所具有的關鍵段的內容是否相同,若相同,則判定所述各PE文件內容是基于相同的源代碼,若不相同,則判定所述各PE文件內容是基于不同的源代碼;若否,則判定所述各PE文件基于不同的源代碼。
2、 根據權利要求1所述的PE文件源代碼一致性的判定方法,其特征在于, 在判斷所述各PE文件所具有的關鍵段的內容是否相同之前,還包括步驟檢測當前枚舉段是否包含調試信息;若是,判斷調試信息中除了第一非必要信息之外的信息是否相同,若不相 同,則判定所述各PE文件內容是基于不同的源代碼,若相同,則判斷所述當前 枚舉段是否為關鍵段,所述第 一非必要信息包括時間戳信息;若否,則判斷所述當前枚舉段是否為關鍵段。
3、 根據權利要求1所述的PE文件源代碼一致性的判定方法,其特征在于, 還包括步驟當所述各PE文件具有自定義段時,判斷所述各PE文件的自定義段的數量 和內容是否相同;若不相同,則判定所述各PE文件內容是基于不同的源代碼;若相同,且所述各PE文件所包含的段的數目相同以及所包含的關鍵段的內 容相同,則判定所述各PE文件是基于相同的源代碼。
4、 根據權利要求1所述的PE文件源代碼一致性的判定方法,其特征在于, 還包括步驟在判斷所述各PE文件所具有的關鍵段的內容是否相同之前,檢測當前枚舉 段是否包含調試信息;若是,判斷調試信息中除了第一非必要信息之外的信息是否相同,若不相 同,則判定所述各PE文件內容是基于不同的源代碼,若相同,則判斷所述當前枚舉段是否為關鍵段,所述第一非必要信息包括時間戳信息; 若否,則判斷所述當前枚舉段是否為關鍵段;以及,當所述各PE文件具有自定義段時,判斷所述各PE文件的自定義段 的數量和內容是否相同;若相同,且所述各PE文件所包含的段的數目相同以及所包含的關鍵段的內 容相同,則判定所述各PE文件是基于相同的源代碼。
5、 根據權利要求1至4任意一項所述的PE文件源代碼一致性的判定方法, 其特征在于,所述判斷關鍵段的內容是否相同的方法具體包括當所述關鍵段為資源段時,比較所述資源段中除了第二非必要信息之外的 信息是否相同,若相同,則判定所述各關鍵段的內容相同,若不相同,則判定 所述各關鍵段的內容不相同,所述非必要信息包括版本信息;當所述關鍵段為非資源段時,比較該資源段中除了第三非必要信息之外的 信息是否相同,若相同,則判定所述各關鍵段的內容相同,若不相同,則判定 所述各關鍵段的內容不相同,所述第三非必要信息包括時間戳信息。
6、 一種PE文件源代碼一致性的判定裝置,包括段數目判別模塊,用于判斷各PE文件所包含的段的數目是否相同,若不相 同,則比較結果處理模塊判定所述各PE文件是基于不同的源代碼;段枚舉模塊,用于當所述段數目判別模塊判斷結果為相同時,對所述各PE 文件所包含的段進行枚舉;關鍵段判別模塊,用于判斷所述段枚舉模塊所枚舉的當前枚舉段是否為關 鍵段,若是,則判斷各關鍵段是否相同,若否,則不進行判斷;比較結果處理模塊,用于根據所述段數目判別模塊及所述關鍵段判別模塊的判別結果,判斷所述各PE文件內容是否基于相同的源代碼,當所述段數目判 別模塊判定結果為相同且所述關鍵段判別模塊判定結果為相同時,所述比較結 果處理;漠塊判定所述各PE文件內容是基于相同的源代碼。
7、 根據權利要求6所述的PE文件源代碼一致性的判定裝置,其特征在于, 還包括調試信息判別模塊,用于判斷所述段枚舉模塊的當前枚舉段是否包含調試 信息,若是時,判斷調試信息中除了第一非必要信息之外的信息是否相同,若 不相同,則所述比較結果處理模塊判定所述各PE文件內容是基于不同的源代碼, 若相同,則由所述關鍵段判別模塊進行判斷,所述第一非必要信息包括時間戳 信息;當所述段數目判別模塊的判定結果為相同、所述關鍵段判別模塊判定結果 為相同以及所述調試信息判別模塊的判定結果為相同時,所述比較結果處理模 塊判定所述各PE文件是基于相同的源代碼。
8、 根據權利要求6所述的PE文件源代碼一致性的判定裝置,其特征在于, 還包括自定義段判別模塊,用于當所述各PE文件具有自定義段時,判斷所述各 PE文件的自定義段的數量和內容是否相同,若不相同,則所述比較結果處理模 塊判定所述各PE文件內容是基于不同的源代碼;當所述段數目判別模塊判定結果為相同、所述關鍵段判別模塊判定結果為 相同且所述自定義段判別結果為相同時,所述比較結果處理模塊判定所述各PE 文件內容是基于相同的源代碼。
9、 根據權利要求6所述的PE文件源代碼一致性的判定裝置,其特征在于, 還包括調試信息判別模塊,用于判斷所述段枚舉模塊的當前枚舉段是否包含調試 信息,若是時,判斷調試信息中除了第一非必要信息的信息是否相同,若不相 同,則所述比較結果處理模塊判定所述各PE文件內容是基于不同的源代碼,若相同,則由所述關鍵段判別模塊進行判斷,所述第 一非必要信息包括時間戳信息;自定義段判別模塊,用于當所述各PE文件具有自定義段時,判斷所述各 PE文件的自定義段的數量和內容是否相同,若不相同,則所述比較結果處理模 塊判定所述各PE文件內容是基于不同的源代碼;當所述段數目判別模塊判定結果為相同、所述關鍵段判別模塊的判定結果 為相同、所述調試信息判別模塊判定結果為相同且所述自定義段判別模塊的判 定結果為相同時,所述比較結果處理模塊判定所述各PE文件內容是基于相同的 源代碼。
10、根據權利要求6至9任意一項所述的PE文件源代碼一致性的判定裝置, 其特征在于,所述關鍵段判別模塊包括資源段判別模塊,用于當所述關鍵段為資源段時,比較該資源段中除了第 二非必要信息之外的信息是否相同,若相同,則判定所述各關鍵段的內容相同, 若不相同,則判定所述各關鍵段的內容不相同,所述非必要信息包括版本信息;非資源段判別模塊,用于當所述關鍵段為非資源段時,比較該資源段中除 了第三非必要信息之外的信息是否相同,若相同,則判定所述各關鍵段的內容 相同,若不相同,則判定所述各關鍵段的內容不相同,所述第三非必要信息包 括時間戳信息。
全文摘要
本發明公開了一種PE文件源代碼一致性的判定方法及裝置,通過對PE文件的公開結構進行分析,當各待分析PE文件所包含的段的數目相同、包含的關鍵段的內容相同時,即可判定各待分析PE文件是基于相同的源代碼,這種PE文件源代碼一致性的判定方法及裝置,不依賴于原始源代碼的內容,可以不訪問源代碼庫,保證了源代碼庫的保密安全性。
文檔編號G06F9/45GK101470620SQ20071003303
公開日2009年7月1日 申請日期2007年12月29日 優先權日2007年12月29日
發明者張康宗, 釗 王 申請人:珠海金山軟件股份有限公司