2009-10-30 78 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是编译器非常擅长的东西擅长。那么为什么不让编译器创建你想要的可执行文件,并使用该文件(或其内容的二进制表示)来复制?