【发布时间】:2011-01-05 09:46:07
【问题描述】:
我已经编译了一个完全不执行任何操作的 C 文件(只是一个返回的 main... 甚至没有打印“Hello, world”),并且我已经使用各种编译器(MinGW GCC, Visual C++、Windows DDK 等)。它们都与标准的 C 运行时链接。
但我不明白的是:当我在十六进制编辑器(或反汇编器)中打开文件时,为什么我看到 16 KB 的几乎一半只是 0x00 字节或 0xCC 字节的巨大部分?对我来说这似乎很荒谬......有什么办法可以防止这些发生吗?他们为什么会在那里?
谢谢!
【问题讨论】:
-
假设是 Windows 环境,如果您愿意做一些推断,以下相当直接地回答了您的问题:support.microsoft.com/kb/65122
-
@jleedev:我没有使用 ELF,但我确实觉得这很有趣,谢谢! @Cody:我不确定这如何回答我的问题——如果这些是必需的条目,那么为什么它们会导致代码中间出现 0xCC 字节?可执行文件中的标头不大于 1-2 KB(我之前创建过具有这些大小的 EXE,因此标头显然更小),所以我不确定这如何回答我的问题。
-
如果您有兴趣,我自己找到了答案。 :)
-
您可能也对 Matt Pietrek 的这篇旧文章感兴趣,尽管我不确定今天仍有多少相关/准确:microsoft.com/msj/archive/s572.aspx
标签: c null executable exe zero