是否有可靠的方法来检测使用哪个编译器来编译和构建给定的 Windows 可执行文件?
单独这个话题太宽泛了,所以我缩小了范围:
- 我只对 C 家族的语言(C、C++、C#)感兴趣
- 让我们假设可执行文件未被篡改以隐藏此信息。
- Visual Studio 和最著名的 gnu 编译器就足够了,因此无需处理非常旧的或未广泛使用的编译器。
在 C# 的情况下,很明显它使用了 Visual Studio 附带的编译器,所以在这种情况下,是否可以获得 Studio 的版本(年份)和类型(express 等)?
编辑:
从答案看来,确定起来很困难而且并不总是可靠的,因为必须使用启发式方法。那么,是否有任何编译器故意在可执行文件中插入某种“水印”?我在猜测是否有,Visual Studio 可能是这样的编译器(如果没有别的,我可以想象他们这样做只是为了知道是否有人使用免费快递版,或者只是他们正式购买的另一个版本)。但是,我在谷歌上找不到任何明确的答案。