我有一个.exe文件,我需要知道该程序的开发语言。还有一个技巧来查看代码(基于.exe文件)?我使用了Reflector,现在我知道它不是.NET
答案 0 :(得分:3)
我之前遇到过这个问题。我刚刚在记事本中打开了.exe文件。我找到了编译器名称和版本。希望这有助于某人......
答案 1 :(得分:1)
我有一个.exe文件,我需要知道该程序的开发语言。
一般来说,这是不可能的。可以想象,每种语言都可以编译“Hello,world!”的版本。将给定平台(或可执行格式)定位到相同的可执行文件(字节为字节)。
还有一个查看代码的技巧(基于该.exe文件)?
不,见上文。但是,您可以尝试自己选择的decompiler。
答案 2 :(得分:1)
将高级语言编译为低级.EXE通常是单向过程 - 一旦过程完成,几乎不可能从可执行文件中可靠地提取有关原始语言的有意义信息。您可能会很幸运,并在二进制文件中找到一些可识别的提示,或者当然找到一个附带的文件(如.pdb),它可以提供有关原始语言的线索。
但是,.EXE包含的是(通常)汇编语言,有时可以将其反编译回程序的高级表示形式。请注意,这永远不会给你一个准确的指令源文件 - 结果很可能是'罗嗦'而且难以理解,仅仅因为编译器首先做了什么 - 这是一个高级别的将“概念性”复杂语言转换为低级指令流,丢弃CPU执行代码所不需要的大部分上下文提示。
答案 3 :(得分:1)
我将不得不反驳每个人,说出任何类似于"将高级语言编译成低级别的内容.EXE通常是一个单向过程"。因为并非所有可执行文件都编译为原始程序集。
因为情况并非总是这样。一个很好的例子是C#(。net),其中文件被编译为IL而不是原始程序集。在IL的情况下,您可以反汇编为源代码(即使进程在内存中运行,例如从全局程序集缓存中提取)
如果文件直接编译为原始程序集,那么语法/结构中通常会有一些原始语言的指示。虽然这更像是编译器的副产品,但它是自己的语言。