可能重复:
Is there a C++ decompiler?
Is there a decompiler that will work on Visual Studio 6 C++
我需要以任何方式反编译用MFC编写的exe文件,我试过IDA Pro,但它将文件转换为汇编并没有那么好,因为它有很多问号字符。 如果直接将文件转换为代码是不可能的,有没有办法将程序集转换为C ++? :(
感谢
答案 0 :(得分:1)
没有。 compliation进程会破坏所有元数据,包括变量名称,优化过程使得甚至难以恢复原始源的伪代码副本。
这是一个高度简化的例子。假设你写的是“foo ++”,其中foo是一个int。根据编译器的不同,这可以编译为以下任何一种:
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代码,您可以使用它来发现特定函数和例程的工作方式。