我在 VS2005 中创建了一个简单的“Hello World”应用程序。这是一个直接的控制台应用程序;它只包含以下几行:
Console.WriteLine("Hello World");
Console.ReadLine();
当我尝试重建同一个控制台应用程序而不执行任何更改时(只需按下重建按钮),我得到一个略有不同的可执行文件。(我从第一个和第二个生成的可执行文件中生成了一个 SHA-1 哈希,它是不同的!)
为什么没有代码更改时会有所不同?究竟发生了什么变化?我使用十六进制编辑器进行比较,只看到几个不同的字节。
我想我的最终问题是,我怎么知道“组装”是否真的发生了变化?(当然不看文件版本、文件大小等)
编辑
到目前为止,我们已经确定区别在于 PE 标头(时间戳和一些调试数据)。在我重新发明轮子之前,是否有忽略 PE 标头的“程序集比较”工具?
谢谢,伊恩