天天看點

将多個檔案綁在一起執行

将多個檔案合并成一個最終可執行檔案,運作這個最終檔案時,就相當于運作了合并前的多個檔案。這種程式在木馬程式合并中會經常用到,你想知道它是怎麼用程式實作的麼?下面我就用我用VC6.0做的一個檔案捆綁器的例子代碼來告訴你,程式運作後界面如下:

圖一

    基本組成思想:其實,其中的構成思想非常簡單。建立一個新的二進制檔案,先寫入你的捆綁程式的資料和其檔案長度,再寫入你要捆綁的第一個檔案的資料和其檔案長度,後再直接寫入你要捆綁的第二個檔案的資料和檔案長度……,最後就可直接寫入你要捆綁的最後一個檔案的資料(不需其檔案長度)。最終檔案被執行時,也就是将上面的方法思想倒過來既可。(下面執行個體僅告訴你如何實作二個檔案的捆綁,至于多個檔案的捆綁,讀者隻需略加改動既可,詳情請細看下載下傳後的執行個體代碼。)

下面我來講講如何具體将其來實作:

1、捆綁多個檔案為一個可執行程式

    先得到自身捆綁程式的檔案長度和第一個要捆綁檔案的檔案長度,枚舉第一個要捆綁檔案有無圖示,有的話就用它做為最終生成檔案的圖示,否則用自身捆綁程式所帶預設圖示做最終生成檔案的圖示。在建立二進制檔案中寫入自身捆綁程式的資料和其檔案長度,再寫入第一個要捆綁檔案的資料及其檔案長度,最後直接寫入第二個檔案的資料既可。

捆綁涵數代碼實作如下:

//綁定多個檔案為一個可執行檔案

2、釋放最終合成檔案并同時運作它們。

   打開自身檔案,從中得到自身捆綁程式的檔案長度,便可将檔案指針定位到第一個被捆綁檔案的位置,讀取其檔案長度和其資料,将其讀出資料寫入第一個建立檔案中。同樣,通過已讀取的自身捆綁程式檔案長度和第一個被捆綁檔案的檔案長度加上其儲存這兩個檔案長度值的位元組數,既可準确定位第二個被捆綁檔案的位置,讀取其資料,寫入到第二個建立檔案中。同時,運作這兩個檔案,最後再删除這兩個檔案既可。

釋放最終合成檔案的代碼具體實作如下:

//分解已合并的檔案,同時運作它們

其中具體實作細節問題,可在下載下傳執行個體代碼後,仔細檢視既可(内有詳細注釋)。

繼續閱讀