【问题标题】:MFC decompile to any code not assembly [duplicate]MFC反编译为任何代码而不是汇编[重复]
【发布时间】:2012-04-30 06:54:19
【问题描述】:

可能重复:
Is there a C++ decompiler?
Is there a decompiler that will work on Visual Studio 6 C++

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

谢谢

【问题讨论】:

    标签: c++ assembly mfc decompiling decompiler


    【解决方案1】:

    没有。编译过程会破坏所有元数据,包括变量名,而优化过程使得即使是原始源的伪代码副本也难以恢复。

    这是一个高度简化的示例。假设您编写“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 代码,您可以使用它来发现特定函数和例程的工作原理。

    【讨论】:

    • 也看看这个问题:stackoverflow.com/questions/273145/…
    • 我必须选择哪个选项:新的装配数据库面板?
    • 我不明白这个问题。你用的是什么软件?你想做什么?
    • 我正在使用 IDA pro,我正在尝试按照您所说的“Hex-Rays Decompiler”工作,但我不知道在 IDA pro 中创建新项目时必须选择哪个选项
    • 是的,但我不知道你具体想用它做什么。当您购买 Hex-Rays 时,您会获得有关如何联系支持的详细信息。你应该去和他们谈谈 - 考虑到你刚刚花了 1721 欧元,还不如让你的钱物有所值!
    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 2011-06-14
    • 2011-05-09
    • 1970-01-01
    • 2012-05-17
    • 2017-08-18
    • 2016-05-05
    • 1970-01-01
    相关资源
    最近更新 更多