CFF Explorer能够从PE文件中检测VC编译器版本。 它为我的exe文件显示“Microsoft Visual C ++ 8”,它静态链接到libCMT(没有dll依赖)。
怎么做的?它必须回复PE文件中的一些我不知道的结构。
更新
似乎CFF资源管理器正在使用一种更可靠的方法来检测VC编译器版本。
答案 0 :(得分:1)
PE Header有一些关于链接器(或编译器)的信息。退房:
还有:
http://mirror.sweon.net/madchat/vxdevl/papers/winsys/pefile/pefile.htm
PE标题中的神奇字词可能是你答案的关键。
修改:
似乎CFF资源管理器依赖于代码签名。我在这里发现了一些有趣的帖子:
Determining Which Compiler Built a Win32 PE
在RBerteig的回复中,内部符号可用于确定编译器。
http://www.codeproject.com/Articles/24417/Portable-Executable-P-E-Code-Injection-Injecting-a
从这篇文章中,_main地址是确定它的签名之一。
和这篇文章:http://ntcore.com/files/richsign.htm
提供有关Microsoft编译器签名的更多线索。