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代码,您可以使用它来发现特定功能和例程的工作方式。