作为编写编译器的前兆,我试图了解Windows(32位)便携式可执行文件格式。特别是我想看到一个裸机可执行文件的例子,除了加载正确,运行和退出之外什么都不做。
我已经尝试编写和编译一个简单的C main函数,它不需要做任何事情,只是所产生的.exe是〜22KB,并且包含许多从KERNEL32.DLL导入(大概是由LIBC用来设置环境,堆等等)。即使DOS头可能会更小(它当前打印默认的“这个程序不能在DOS模式下运行”)。
最小可能的Windows 32位可执行文件的结构是什么?
更新:最小的Windows EXE是97字节,可以从here下载。
最重要的参考是
LibCTiny,替代正常的C库。我已经在很多场合下搭建了4KB下的有用的助手应用程序。