2009-10-30 42 views
0

我在VC++ 2008的工作(快遞),我想用C來寫東西,創造一個「空」 exe文件,我可以再打上LoadLibrary和使用BeginUpdateResourceUpdateResourceEndUpdateResource修改內容。從C創建一個新的EXE

只寫一個0字節的文件不允許我用LoadLibrary打開它,因爲它不是資源。

回答

4

您可以編譯一個空的.exe文件,例如,

int main() { return 0; } 

,並用它作爲模板。 (或者是一個空的.dll,不管)

+1

表示「返回0;」是多餘的。 http://stackoverflow.com/questions/1610030/why-can-you-return-from-a-non-void-function-without-returning-a-value-without-pro/1610454#1610454 – 2009-10-30 18:31:00

+0

哦,我didn不知道,謝謝!順便說一句,我不使用C.我曾經使用C但只是爲了'有趣'的目的,現在更喜歡C#,PHP,JS或更奇怪的東西;) – 2009-10-30 18:39:57

+0

謝謝!所有的答案看起來不錯,但我試過這個,它的工作。 – 2009-10-30 20:24:51

3

.EXE格式是一種複雜的文件格式。它有一堆必需的頭文件來描述它的基本執行屬性(16位,32位或64位,以及DOS/Win16/Win32/Win64模式和EXE與DLL)。之後,它必須有一個正確的地址重定位表。它不是微不足道的,而且您已經對.EXE文件格式進行了一些研究,以便正確執行此操作。

3

「創建」一個exe是編譯器非常擅長的東西擅長。那麼爲什麼不讓編譯器創建你想要的可執行文件,並使用該文件(或其內容的二進制表示)來複制?