2010-03-10 196 views

回答

1

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

一般来说这是不可能的。每种语言都可以编辑他们的版本“你好,世界!”将给定的平台(或可执行格式)定位到相同的可执行文件(字节为字节)。

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

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

1

的高级语言转换成低级别的.EXE的编制通常是一个单向的过程 - 这是几乎不可能可靠地提取从可执行关于原语有意义的信息,一旦这个过程完成。你可能会很幸运,在二进制文件中找到一些可识别的线索,当然也可以找到一个伴随文件(比如.pdb),它可以产生关于原始语言的线索。

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

1

我将不得不抵触每个人,说明“将高级语言编译为低级别.EXE通常是单向过程”。由于并非所有的可执行文件都被编译为原始程序集

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

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

3

我遇到过这个问题。我只是在记事本中打开.exe文件。我发现编译器名称和版本。希望这可以帮助别人..