2012-11-24 80 views
1

我存儲了一個外部.exe文件的所有字節,然後將它們重新寫入到另一個.exe文件中,該文件是使用FileOutputStream/BufferedOutputStream創建的。如何使用Java創建外部.exe文件

字節寫得很好,第二個程序是在我選擇的位置創建的,但是當我運行該文件時,它說它不是有效的.exe文件或不是有效的32/64位應用程序。

我猜,因爲它沒有打包和生成正確。

我該如何製作它,因此它是一個可執行文件,並且與第一個文件的作用相同?

p.s我不能使用任何文件的複製,因爲最終我會加密字節並將它們寫入文件,但我仍然希望它可用。

+1

你需要的是什麼寶貝? – AlexWien

+0

我正在做一個籌碼,我需要知道如何做到這一點,所以如果你知道請分享。 – user1848712

+0

從cmd提示符「fc old.exe new.exe」運行時會發生什麼情況。你的新的.exe是否真的有完全相同的字節? –

回答

0

如果所有字節都相同,它將運行。如果原始文件運行且複製不成功,則某些字節必須不同。它與包裝無關。 也許您正在使用一個字節變量來存儲讀取的數據。不要這樣做。只需使用int。如果您沒有正確使用字節變量,則可能會由於自動符號擴展而遇到問題。

這工作正常,我

import java.io.*; 

public class Test { 

    public static void main(String[] args) throws Exception { 
     BufferedInputStream in = new BufferedInputStream(new FileInputStream("a.exe")); 
     BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("b.exe")); 
     int data = in.read(); 
     while(data >= 0) { 
      out.write(data); 
      data = in.read(); 
     } 
     in.close(); 
     out.close(); 
    } 
} 
相關問題