如何反编译一个程序?

C/C++不同于C#和JAVA。C#和JAVA等解释性语言运行在虚拟机上,基于虚拟机规范,所以反编译过程很容易实现。但是C/C++更接近底层系统,依赖于编译器。不同的编译器生成的二进制代码在不同的平台上会有所不同,甚至同一操作系统的不同编译器也会有些许不同。比如在windows平台上运行linux下编译C/C++得到的二进制代码是很难或者不可能的,反之亦然,所以反编译是非常困难的。现在大部分反编译软件只能反编译成汇编。有一些工具号称反编译成C或者C++,但是大部分反编译的结果都是无法理解的,所以还是用汇编比较好。