專利名稱::網(wǎng)絡(luò)中動態(tài)合并及分別執(zhí)行合并pe文件的方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于網(wǎng)絡(luò)數(shù)據(jù)通信領(lǐng)域,涉及一種網(wǎng)絡(luò)中動態(tài)合并及分別執(zhí)行合并PE文件的方法及其系統(tǒng)。
背景技術(shù):
:PE("portableexecutable",可移植的可執(zhí)行文件)文件格式,是微軟WindwosNT,Windows95和Win32子集中的可執(zhí)行的二進制文件的格式;在WindowsNT中,驅(qū)動程序也是這種格式。它還能被應(yīng)用于各種目標(biāo)文件和庫文件中。合并PE可執(zhí)行文件多被用來滿足一些特殊的需求,例如用戶想只通過一次運行操作運行多個PE文件,或者用戶想把自己的程序附著在其他程序上一起運行,或者在已有的PE文件程序上增加其他程序功能等等。傳統(tǒng)的PE可執(zhí)行文件合并技術(shù)都是在磁盤中進行的,首先將多個要合并的文件都讀進內(nèi)存,然后通過PE文件結(jié)構(gòu)的特性將多個文件的執(zhí)行體進行關(guān)聯(lián),來達到一次運行多個PE可執(zhí)行文件的目的。由于磁盤中的文件數(shù)據(jù)都是靜態(tài)存儲的,并且預(yù)先都能獲得多個文件的數(shù)據(jù),所以合并操作不會有太大困難。但是在網(wǎng)絡(luò)數(shù)據(jù)流中合并PE文件仍然是業(yè)界的一個難題,由于網(wǎng)絡(luò)數(shù)據(jù)流一直處于流動狀態(tài),不能像在磁盤中一樣隨時可以取得指定位置的數(shù)據(jù),并且在進行合并操作的過程中不能對網(wǎng)絡(luò)的數(shù)據(jù)流通造成阻塞,甚至有些情況我們無法在進行合并操作的時候?qū)⒍鄠€PE文件的數(shù)據(jù)都預(yù)先獲取到,這些難題使得在網(wǎng)絡(luò)中動態(tài)合并PE文件這樣的技術(shù)一直沒能得以實現(xiàn),也無法滿足我們在網(wǎng)絡(luò)中對指定PE文件動態(tài)添加功能、動態(tài)添加自己程序模塊的需求。
發(fā)明內(nèi)容本發(fā)明針對PE文件在網(wǎng)絡(luò)動態(tài)中合并的多種難題,提出了一種網(wǎng)絡(luò)中動態(tài)合并及分別執(zhí)行合并PE文件的方法及其系統(tǒng),實現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)流中合并PE文件,并且在合并后的PE文件執(zhí)行過程中執(zhí)行被合并的各個文件的方法。本發(fā)明的主要技術(shù)內(nèi)容為l)獲取負責(zé)執(zhí)行被合并文件的裝置(這個裝置也是PE文件,在本文檔中命名為"解密頭");42)將解密頭文件的長度和全部要參與合并的PE文件的長度,依次分別寫入解密頭PE文件結(jié)構(gòu)的指定字段中;3)將要參與合并的PE文件1的數(shù)據(jù)直接拼接在解密頭文件的末尾,形成一個新PE文件(新PE文件在本文檔中命名為"結(jié)合體");4)首先將結(jié)合體的數(shù)據(jù)發(fā)送到將要接收文件數(shù)據(jù)的一方,并且繼續(xù)保持網(wǎng)絡(luò)連接狀態(tài);5)在網(wǎng)絡(luò)中獲取某接收主機將要接收的PE文件(在本文檔中命名為"PE文件2")數(shù)據(jù);6)將獲取到的PE文件2的數(shù)據(jù)直接拼接在結(jié)合體的末尾進行發(fā)送,形成整個合并文件的網(wǎng)絡(luò)數(shù)據(jù)流;7)所有文件在網(wǎng)絡(luò)中傳輸結(jié)束后,在接收數(shù)據(jù)方形成一個文件,該文件在運行過程中由解密頭負責(zé)根據(jù)記錄的文件位置釋放并運行PE文件1和PE文件2。所述歩驟1)解密頭文件的功能是,根據(jù)文件長度的記錄,在磁盤中還原被合并的各個文件,然后逐一運行。所述步驟3)長度即是文件的大小,以字節(jié)為單位。所述步驟3)具體寫入哪2個字段可以依據(jù)實際情況自行選擇,最好選擇PE頭結(jié)構(gòu)保留的字段。所述步驟3)寫入長度的目的是為了記錄被合并各個文件的位置,以便運行過程中可以還原各個被合并文件并且逐個運行。所述歩驟4)結(jié)合體文件數(shù)據(jù)先行發(fā)送到網(wǎng)絡(luò)中接收文件的一方,并且此時的網(wǎng)絡(luò)數(shù)據(jù)傳輸還沒有結(jié)束。所述歩驟4)由于在此步驟之前的操作運行時間很短所以不會對網(wǎng)絡(luò)中接收文件一方的網(wǎng)絡(luò)造成阻塞。所述歩驟6)此時網(wǎng)絡(luò)數(shù)據(jù)傳輸結(jié)束,結(jié)合體和PE文件2在接收文件一方的磁盤中形成一個合并后的PE文件。所述步驟7)解密頭負責(zé)在磁盤中釋放PE文件1和PE文件2,并且逐個運行。一種在網(wǎng)絡(luò)中合并PE文件的系統(tǒng),包括解密運行裝置和網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置。所述解密運行裝置是用來負責(zé)釋放被合并的各個PE文件并且逐一運行的。它依據(jù)記錄到自身PE結(jié)構(gòu)中的文件長度,來找到原始文件在整個合并后文件的位置,根據(jù)位置依次讀出原始文件并運行。合并后的文件的結(jié)構(gòu)如圖l所示,sizel、size2是我們事先寫入解密頭中的,sizeO的長度可以在運行過程中計算出來,size3的計算公式如下-size3二size0-sizel-size2所述網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置是負責(zé)在網(wǎng)絡(luò)中對PE文件數(shù)據(jù)進行合并和轉(zhuǎn)發(fā)的,它首先對網(wǎng)絡(luò)中的PE文件數(shù)據(jù)傳輸進行檢測控制,當(dāng)識別出有PE文件傳輸?shù)臅r候就進行文件的合并??v上所述,本發(fā)明的技術(shù)方案概述如下一種網(wǎng)絡(luò)中動態(tài)合并PE文件的方法,其步驟為1)在網(wǎng)關(guān)內(nèi)設(shè)置一解密頭文件;所述解密頭文件為一PE文件,用于執(zhí)行被合并的PE文件;2)將所述解密頭文件的文件信息和全部要參與合并的PE文件的文件信息依次分別保存在所述解密頭文件的指定字段中;3)網(wǎng)關(guān)檢測發(fā)往某接收主機的數(shù)據(jù),識別出該接收主機要接收的PE文件數(shù)據(jù);4)將要參與合并的PE文件數(shù)據(jù)依次保存在所述解密頭文件的末尾,形成一新PE文件;同時將該新PE文件傳輸給所述接收主機;5)繼續(xù)將該接收主機將要接收的PE文件數(shù)據(jù)發(fā)送給該接收主機,依次保存在該新PE文件的末尾,形成一最終合并的PE文件。所述指定字段為所述解密頭文件結(jié)構(gòu)保留的字段;所述文件信息為文件長度、或文件屬性、或者文件特征數(shù)據(jù);所述長度以字節(jié)為單位。所述識別出該接收主機所要接收的PE文件的方法為首先依據(jù)文件后綴名稱判斷文件類型,然后根據(jù)文件類型識別出PE文件。所述識別出該接收主機所要接收的PE文件的方法為根據(jù)PE文件的特征識別出PE文件;所述PE文件特征為PE頭的固定特征碼。所述網(wǎng)關(guān)能夠部分或全部的、直接或間接的獲取若干主機的數(shù)據(jù);所述網(wǎng)關(guān)包括傳輸網(wǎng)關(guān)、應(yīng)用網(wǎng)關(guān)、中繼網(wǎng)關(guān)、接入網(wǎng)關(guān)、安全網(wǎng)關(guān)。一種網(wǎng)絡(luò)中分別執(zhí)行合并PE文件的方法,其步驟為1)運行合并PE文件中的解密頭文件;所述解密頭文件為一PE文件,用于執(zhí)行被合并的PE文件;2)所述解密頭文件定位待執(zhí)行PE文件的位置;3)將待執(zhí)行PE文件的數(shù)據(jù)轉(zhuǎn)存到磁盤中,形成新文件后運行。所述定位待執(zhí)行PE文件的位置方法為所述解密頭文件依據(jù)記錄的各PE文件長度和所述合并PE文件的總長度及被合并文件數(shù)據(jù)的次序定位待執(zhí)行PE文件的位置;或者依據(jù)各個被合并PE文件的數(shù)據(jù)特征定位文件的位置。所述合并PE文件的總長度通過各種程序語言的I/O操作庫函數(shù)獲得;所述庫函數(shù)包括windows的API函數(shù)、C語言庫函數(shù)、Java的API函數(shù)。一種網(wǎng)絡(luò)中動態(tài)合并及分別執(zhí)行合并PE文件的系統(tǒng),包括網(wǎng)關(guān)和若干主機,所述網(wǎng)關(guān)與主機通過網(wǎng)絡(luò)連接;所述網(wǎng)關(guān)包括解密運行裝置和網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置;所述解密運行裝置,用于負責(zé)釋放被合并的各個PE文件并且逐一運行;所述網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置,用于負責(zé)在網(wǎng)絡(luò)中對PE文件數(shù)據(jù)進行合并和轉(zhuǎn)發(fā)。所述解密運行裝置為一解密頭文件,所述解密頭文件為一PE文件,用于依據(jù)記錄到自身PE結(jié)構(gòu)中的各個被合并文件的長度或者特征信息,來執(zhí)行被合并的PE文件;所述網(wǎng)關(guān)可以部分或全部的、直接或間接的獲取若干主機的數(shù)據(jù)。本發(fā)明的有益效果是傳統(tǒng)的PE文件合并技術(shù)只適用于在本地磁盤中對PE文件進行靜態(tài)的合并,本發(fā)明所述方法不但適用于本地磁盤對PE文件的合并,而且克服了因網(wǎng)絡(luò)數(shù)據(jù)流一直處于流動狀態(tài)、不能像在磁盤中一樣隨時可以取得指定位置的數(shù)據(jù)、在進行合并操作的過程中不能對網(wǎng)絡(luò)的數(shù)據(jù)流通造成阻塞、有些情況無法在進行合并操作的時候?qū)⒍鄠€PE文件的數(shù)據(jù)預(yù)先都獲取到等原因所造成的,無法在網(wǎng)絡(luò)環(huán)境下進行動態(tài)的合并PE文件的缺陷。利用本發(fā)明,可以滿足一些需要在網(wǎng)絡(luò)環(huán)境下對PE文件進行動態(tài)合并的需求。圖l為本發(fā)明合并后的PE文件結(jié)構(gòu)圖;圖2為本發(fā)明網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置流程圖;圖3為本發(fā)明解密運行裝置流程圖。具體實施方式下面結(jié)合附圖,進一步詳細描述具體實施例方式在網(wǎng)關(guān)內(nèi)設(shè)有一個網(wǎng)絡(luò)數(shù)據(jù)控制系統(tǒng)(即網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置所在系統(tǒng),網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置可以作為其他系統(tǒng)的一個模塊,也可以獨立工作),其數(shù)據(jù)控制范圍內(nèi)有一臺B機器,網(wǎng)關(guān)可以部分或者全部的獲得B機器的網(wǎng)絡(luò)傳輸數(shù)據(jù)。數(shù)據(jù)控制系統(tǒng)需要使傳輸?shù)紹機器的每一個PE文件都與另一個PE文件(實施例中命名為"PE文件1",與上文中的"PE文件1"意義相同)進行合并,并且在B機器運行合并后的文件時,PE文件1和其他PE文件也需要同時被運行。實施過程需要如下步驟(1)、將解密頭文件的文件信息和全部要參與合并的PE文件(比如PE文件1和PE文件2)的文件信息依次分別保存在所述解密頭文件的指定字段中讀取解密頭文件和全部參與合并的PE文件的長度保存在解密頭文件的PE結(jié)構(gòu)中,以備解密頭還原原始文件并且執(zhí)行之用,長度寫好后進行(2)步驟。長度以字節(jié)為單位,可以保存在解密頭文件的任意PE結(jié)構(gòu)數(shù)據(jù)字段中,但是為了不影響windows操作系統(tǒng)加載運行解密頭文件,最好是將解密頭文件和PE文件的長度保存在PE頭結(jié)構(gòu)中保留未用的字段中,如DOS頭中的e_res2數(shù)組中,即將文件的長度以長整形的類型寫入解密頭文件起始偏移0x28字節(jié)處,或者是解密頭文件預(yù)留的文件地址空間中。(2)、檢測B機器的傳輸數(shù)據(jù)網(wǎng)絡(luò)數(shù)據(jù)控制系統(tǒng)對傳輸?shù)紹機器的網(wǎng)絡(luò)數(shù)據(jù)流進行監(jiān)控,如果檢測到B機器將要收取PE文件數(shù)據(jù)了,執(zhí)行下一步(3)。識別PE文件數(shù)據(jù)流的方法有很多,例如利用某些協(xié)議的特征,如HTTP協(xié)議在傳輸文件過程中會傳輸文件名,依據(jù)后綴名來判斷文件類型;也可以使用PE文件的特征進行判斷,如判斷PE頭的固定特征碼,"MZ"(16進制為0x4d,0x5a)、"PE"(16進制為0x50,0x45)等。(3)、將PE文件l直接拼接在解密頭文件的末尾形成一個新文件讀取PE文件1并且將文件數(shù)據(jù)直接寫在解密頭文件的末尾,解密頭文件追加了PE文件1的數(shù)據(jù)后形成了一個新的PE文件(實施例中命名為"結(jié)合體",與上文所述"結(jié)合體"意義相同)。(4)、數(shù)據(jù)控制系統(tǒng)將結(jié)合體文件通過B機器的文件傳輸鏈路發(fā)送到B機器中數(shù)據(jù)控制系統(tǒng)將整個結(jié)合體文件的數(shù)據(jù)從B機器的文件傳輸鏈路發(fā)送到B機器中,此時B機器所要接收的文件并未結(jié)束,數(shù)據(jù)鏈路仍然保持打開。由于數(shù)據(jù)控制系統(tǒng)在B機器的網(wǎng)關(guān)上,所以可以對B機器的任何網(wǎng)絡(luò)傳輸鏈路進行修改和控制,網(wǎng)絡(luò)PE合并需要一個能夠接管控制合并對象網(wǎng)絡(luò)數(shù)據(jù)的環(huán)境。(5)、數(shù)據(jù)控制系統(tǒng)將B機器要接收的PE文件繼續(xù)轉(zhuǎn)發(fā)給B機數(shù)據(jù)控制系統(tǒng)首先接收到了B機器最初要接收的PE文件(實施例中命名為"PE文件2",與前文所述"PE文件2"意義相同)數(shù)據(jù),然后直接通過剛才傳輸結(jié)合體文件的文件傳輸鏈路將數(shù)據(jù)轉(zhuǎn)發(fā)給B機器。B機器收完P(guān)E文件2的數(shù)據(jù)后整個文件傳輸鏈路關(guān)閉,B機器會將所接收到的所有數(shù)據(jù)形成一個文件,該文件就是合并后的PE文件。(6)、B機器的用戶運行合并后的PE文件B機器的用戶運行合并后的PE文件過程中,解密頭文件由于是在整個合并后PE文件的最開始處,所以實際上就是運行了解密頭文件即解密運行裝置被啟動,解密運行裝置依據(jù)之前記錄在解密頭文件中的長度,定位到PE文件1和PE文件2的數(shù)據(jù),讀取2個文件的數(shù)據(jù)并且在磁盤中進行還原,最后依次運行2個PE文件。定位PE文件1和PE文件2的計算方法如下,參考圖l、圖3:sizel、size2是我們事先寫入解密頭中的,size0的長度可以在運行過程中通過windows的API函數(shù)得知,size3的計算公式為size3=size0-sizel-size2?;蛘咭罁?jù)被合并PE文件中PE文件1和PE文件2的數(shù)據(jù)特征,定位PE文件1和PE文件2文件的位置,讀取2個文件的數(shù)據(jù)并且在磁盤中進行還原,最后依次運行2個PE文件。到此,網(wǎng)絡(luò)合并PE文件并分別執(zhí)行的發(fā)明實施完畢,整個過程中網(wǎng)絡(luò)中的PE文件數(shù)據(jù)一直處于流通狀態(tài),不會對數(shù)據(jù)傳輸?shù)碾p方造成網(wǎng)絡(luò)超時影響,并且被合并后的PE文件在運行過程中可以將合并之前的PE文件都運行起來,達到了合并PE文件并執(zhí)行的目的。權(quán)利要求1.一種網(wǎng)絡(luò)中動態(tài)合并PE文件的方法,其步驟為1)在網(wǎng)關(guān)內(nèi)設(shè)置一解密頭文件;所述解密頭文件為一PE文件,用于執(zhí)行被合并的PE文件;2)將所述解密頭文件的文件信息和全部要參與合并的PE文件的文件信息依次分別保存在所述解密頭文件的指定字段中;3)網(wǎng)關(guān)檢測發(fā)往某接收主機的數(shù)據(jù),識別出該接收主機要接收的PE文件數(shù)據(jù);4)將要參與合并的PE文件數(shù)據(jù)依次保存在所述解密頭文件的末尾,形成一新PE文件;同時將該新PE文件傳輸給所述接收主機;5)繼續(xù)將該接收主機將要接收的PE文件數(shù)據(jù)發(fā)送給該接收主機,依次保存在該新PE文件的末尾,形成一最終合并的PE文件。2.如權(quán)利要求1所述的方法,其特征在于所述指定字段為所述解密頭文件結(jié)構(gòu)保留的字段;所述文件信息為文件長度、或文件屬性、或者文件特征數(shù)據(jù);所述長度以字節(jié)為單位。3.如權(quán)利要求l所述的方法,其特征在于所述識別出該接收主機所要接收的PE文件的方法為首先依據(jù)文件后綴名稱判斷文件類型,然后根據(jù)文件類型識別出PE文件。4.如權(quán)利要求l所述的方法,其特征在于所述識別出該接收主機所要接收的PE文件的方法為根據(jù)PE文件的特征識別出PE文件。5.如權(quán)利要求1所述的方法,其特征在于所述網(wǎng)關(guān)能夠部分或全部的、直接或間接的獲取若干主機的數(shù)據(jù);所述網(wǎng)關(guān)包括傳輸網(wǎng)關(guān)、應(yīng)用網(wǎng)關(guān)、中繼網(wǎng)關(guān)、接入網(wǎng)關(guān)、安全網(wǎng)關(guān)。6.—種網(wǎng)絡(luò)中分別執(zhí)行合并PE文件的方法,其歩驟為1)運行合并PE文件中的解密頭文件;所述解密頭文件為一PE文件,用于執(zhí)行被合并的PE文件;2)所述解密頭文件定位待執(zhí)行PE文件的位置;3)將待執(zhí)行PE文件的數(shù)據(jù)轉(zhuǎn)存到磁盤中,形成新文件后運行。7.如權(quán)利要求6所述的方法,其特征在于所述定位待執(zhí)行PE文件的位置方法為所述解密頭文件依據(jù)記錄的各PE文件長度和所述合并PE文件的總長度及被合并文件數(shù)據(jù)的次序定位待執(zhí)行PE文件的位置;或者依據(jù)各個被合并PE文件的數(shù)據(jù)特征定位文件的位置。8.如權(quán)利要求7所述的方法,其特征在于所述合并PE文件的總長度通過各種程序語言的I/O操作庫函數(shù)獲得;所述庫函數(shù)包括windows的API函數(shù)、C語言庫函數(shù)、Java的API函數(shù)。9.一種網(wǎng)絡(luò)中動態(tài)合并及分別執(zhí)行合并PE文件的系統(tǒng),包括網(wǎng)關(guān)和若干主機,所述網(wǎng)關(guān)與主機通過網(wǎng)絡(luò)連接;所述網(wǎng)關(guān)包括解密運行裝置和網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置;所述解密運行裝置,用于負責(zé)釋放被合并的各個PE文件并且逐一運行;所述網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置,用于負責(zé)在網(wǎng)絡(luò)中對PE文件數(shù)據(jù)進行合并和轉(zhuǎn)發(fā)。10.如權(quán)利要求9所述的系統(tǒng),其特征在于所述解密運行裝置為一解密頭文件,所述解密頭文件為一PE文件,用于依據(jù)記錄到自身PE結(jié)構(gòu)中的各個被合并文件的長度或者特征信息,來執(zhí)行被合并的PE文件;所述網(wǎng)關(guān)能夠部分或全部的、直接或間接的獲取若干主機的數(shù)據(jù)。全文摘要本發(fā)明公開了一種網(wǎng)絡(luò)中動態(tài)合并及分別執(zhí)行合并PE文件的方法及其系統(tǒng),屬于網(wǎng)絡(luò)通信領(lǐng)域。本發(fā)明方法1)在網(wǎng)關(guān)內(nèi)設(shè)一解密頭文件;2)將解密頭文件的長度和全部要參與合并的PE文件長度分別寫入解密頭文件的指定字段中;3)將要參與合并的PE文件數(shù)據(jù)直接拼接在解密頭文件末尾,形成一個新PE文件,并將該新PE文件傳輸給該接收主機;4)繼續(xù)發(fā)送該接收主機將要接收的PE文件數(shù)據(jù),依次保存在該新PE文件的末尾,形成一最終合并的PE文件;5)在接收方解密頭文件定位文件位置,釋放并運行待執(zhí)行的PE文件。本系統(tǒng)包括解密運行裝置和網(wǎng)絡(luò)PE文件數(shù)據(jù)流合并裝置。本發(fā)明可動態(tài)合并PE文件且不會對網(wǎng)絡(luò)的數(shù)據(jù)流通造成阻塞。文檔編號H04L29/06GK101651678SQ20091009241公開日2010年2月17日申請日期2009年9月11日優(yōu)先權(quán)日2009年9月11日發(fā)明者姚曉宇申請人:北京銳安科技有限公司