Possible Duplicate:
Is there a C++ decompiler?
  Is there a decompiler that will work on Visual Studio 6 C++




我需要反编译以MFC编写的exe文件的任何方法,我尝试使用IDA Pro,但是它将文件转换为汇编文件并没有那么好,因为它有很多问号字符。
如果无法将文件直接转换为代码,是否有任何方法可以将程序集转换为C ++? :(

谢谢

最佳答案

不会。编译过程会破坏所有元数据,包括变量名,并且优化过程甚至使原始源的伪代码副本也很难恢复。

这是一个高度简化的示例。假设您写的是“ foo ++”,其中foo是一个整数。根据编译器的不同,它可以编译为以下任意一种:


inc dword ptr [esp+12h]-foo在堆栈中保留为本地变量
inc dword ptr [00000f00h]-foo是一个堆变量
add dword ptr [00000f00h], 1-另一种递增方式
mov eax, dword ptr [esp+12h]; inc eax-从堆栈移至eax,然后递增
等等...


可能性几乎是无限的。

最好的办法是研究一下Hex-Rays Decompiler,尽管它并不便宜。它与IDA一起产生伪C代码,您可以使用它来发现特定功能和例程的工作方式。

10-04 15:09
查看更多