如何找到编译可执行文件的语言?

时间:2011-09-16 05:48:55

标签: programming-languages executable

鉴于应用程序的可执行文件(Windows,Linux或Mac OS X),有没有办法找出用于编写该应用程序的编程语言?

3 个答案:

答案 0 :(得分:0)

在一般情况下,我认为不会。但是,在特定情况下,它可能是可能的。

答案 1 :(得分:0)

除非有与之关联的特定元数据或与该exe相关联的某些语言特定功能,否则极不可能。可执行文件(通常)是针对特定平台或中间代码编译的代码,这些代码将针对特定语言进行即时编译。在JITed代码的情况下,您可能能够确定其.NET或其他语言是否产生中间代码,但在大多数情况下,这是一项相当困难和不合理的任务。我可能错了,但从我的理解来看,这是不可能的。

答案 2 :(得分:0)

我不妨回答一下。

即使给定编程语言的编译器决定抛出一些元数据(例如数据部分中的符号)和“编译自Joe的C编译器版本4.1.104”之类的消息,也没有什么能阻止我写作一个Go编译器,它将相同的消息写入数据部分的同一位置,以欺骗不知情的人查看可执行文件。

更不用说可以为任何给定的语言编写无数的编译器。

假设我们查看一个只包含几个字节的可执行文件......只需增加一个寄存器即可。数以百计的不同语言允许编译器在理论上可以优化到无元数据的单节可执行文件。

答案是否定的。

TL; DR:你总是可以欺骗。