如何检查程序(.exe)的编写语言。如何查看代码?

时间:2010-03-10 21:18:07

标签: assemblies

我有一个.exe文件,我需要知道该程序的开发语言。还有一个技巧来查看代码(基于.exe文件)?我使用了Reflector,现在我知道它不是.NET

4 个答案:

答案 0 :(得分:3)

我之前遇到过这个问题。我刚刚在记事本中打开了.exe文件。我找到了编译器名称和版本。希望这有助于某人......

答案 1 :(得分:1)

  

我有一个.exe文件,我需要知道该程序的开发语言。

一般来说,这是不可能的。可以想象,每种语言都可以编译“Hello,world!”的版本。将给定平台(或可执行格式)定位到相同的可执行文件(字节为字节)。

  

还有一个查看代码的技巧(基于该.exe文件)?

不,见上文。但是,您可以尝试自己选择的decompiler

答案 2 :(得分:1)

将高级语言编译为低级.EXE通常是单向过程 - 一旦过程完成,几乎不可能从可执行文件中可靠地提取有关原始语言的有意义信息。您可能会很幸运,并在二进制文件中找到一些可识别的提示,或者当然找到一个附带的文件(如.pdb),它可以提供有关原始语言的线索。

但是,.EXE包含的是(通常)汇编语言,有时可以将其反编译回程序的高级表示形式。请注意,这永远不会给你一个准确的指令源文件 - 结果很可能是'罗嗦'而且难以理解,仅仅因为编译器首先做了什么 - 这是一个高级别的将“概念性”复杂语言转换为低级指令流,丢弃CPU执行代码所不需要的大部分上下文提示。

答案 3 :(得分:1)

我将不得不反驳每个人,说出任何类似于"将高级语言编译成低级别的内容.EXE通常是一个单向过程"。因为并非所有可执行文件都编译为原始程序集。

因为情况并非总是这样。一个很好的例子是C#(。net),其中文件被编译为IL而不是原始程序集。在IL的情况下,您可以反汇编为源代码(即使进程在内存中运行,例如从全局程序集缓存中提取)

如果文件直接编译为原始程序集,那么语法/结构中通常会有一些原始语言的指示。虽然这更像是编译器的副产品,但它是自己的语言。