如何获取Windows可执行文件的源代码?

Ali*_*der 17 c# c++ vb.net executable visual-studio

我有一些旧的Windows可执行文件.如何使用Visual Studio 2010编辑它们?有什么方法可以查看exe的源代码?

i_a*_*orf 24

您无法从exe获取C++源代码,并且您只能通过反射获得某些版本的C#源代码.从你问这个问题的方式来看,对你来说都没有多大用处.

  • 我尝试使用 Reflector 来创建一个简单的 C# VS 2012 Express 项目 exe,但我丢失了源文件,当我打开为代码创建的项目时,Reflector 导出的内容有 100 多个错误。我尝试了其他方法,但我只对 http://ilspy.net/ 感到幸运 - 不仅没有停止构建的错误,它似乎还保留了变量名称,并且我能够进行足以进行最终构建的更改,并且获取一个新的.exe。不过,我无法让表单在 VS 2012 Express 中正确显示,因此我所做的更改全部在代码中。我的建议是只进行微小的调整。 (2认同)

Mar*_*ers 19

如果程序是用C#编写的,那么可以使用.NET Reflector几乎原始的形式获取源代码.您将无法看到注释和局部变量名称,但它非常易读.

如果它是用C++编写的,那就不那么容易了......即使你可以将代码反编译成有效的C++,由于内联函数和优化很难逆转,它不太可能像原始源一样.

请注意,通过逆向工程和修改源代码,您可能会违反程序的使用条款,除非您自己编写或获得作者的许可.


Hen*_*nri 6

如果是本机代码,您可以将其反汇编.但你不会看到程序员写的原始代码.您将看到编译器(汇编程序)生成的代码.这段代码可能已经过优化,虽然它在语义上是等效的,但它比普通的ASM更难阅读.

如果是字节码(MSIL或javabytecode),有反编译器可以产生相当好的源代码.对于.net,这将是反射器.