<分区>
Possible Duplicate:
Is there a C++ decompiler?
Is there a decompiler that will work on Visual Studio 6 C++
我需要任何方法来反编译用 MFC 编写的 exe 文件,我尝试了 IDA Pro,但是它将文件转换为程序集并不太好,因为它有很多问号字符。 如果直接将文件转换成代码是不可能的,有没有办法将汇编转换为C++? :(
谢谢
<分区>
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 代码,您可以使用这些代码来发现特定函数和例程的工作原理。
关于c++ - MFC反编译为任何非汇编代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216559/
相关文章:
optimization - ARM NEON : How to implement a 256bytes Look Up table
assembly - 引导加载程序如何读取 DVD(cd)?
visual-c++ - MFC 的 GetClientRect 和 MoveWindow 不保留大小?
c++ - 调用 LoadFrame() 时断言失败 MFC、RIBBON、VS2008、C++
c++ - 将 C++ 项目与 visual studio 中的表单项目链接起来
c++ - 为什么在 mfc 的 listcontrol 中插入的文本显示截断文本? listcontrol 是重新调整大小?