【问题标题】:How to get source code of a Windows executable?如何获取 Windows 可执行文件的源代码?
【发布时间】:2011-02-09 05:05:24
【问题描述】:

我有一些旧的 Windows 可执行文件。如何使用 Visual Studio 2010 编辑它们?有哪些方法可以查看exe的源代码?

【问题讨论】:

    标签: c# c++ vb.net visual-studio executable


    【解决方案1】:

    您无法从 exe 中获取 C++ 源代码,您只能通过反射获取某些版本的 C# 源代码。

    【讨论】:

    • 我为一个简单的 C# VS 2012 Express 项目 exe 尝试了 Reflector,但我丢失了源文件,当我打开它为代码创建的项目时,Reflector 导出的内容有 100 多个错误。我尝试了其他人,但我只对ilspy.net 感到幸运-不仅没有停止构建的错误,而且似乎还保留了变量名,而且我能够进行足够的更改以进行最终构建并获得新的 .exe .我无法让表单在 VS 2012 Express 中正确显示,所以我所做的更改都在代码中。我的建议是只做细微的调整。
    • 只是为了清楚,我也无法获得C源代码,对吧?那么大会呢?
    【解决方案2】:

    如果程序是用 C# 编写的,您可以使用.NET Reflector几乎其原始形式获取源代码。您将看不到 cmets 和局部变量名称,但它的可读性很强。

    如果它是用 C++ 编写的,那就不那么容易了……即使您可以将代码反编译成有效的 C++,由于内联函数和难以逆转的优化,它也不太可能与原始源代码相似。

    请注意,通过逆向工程和修改源代码,您可能会违反程序的使用条款,除非您自己编写或获得作者许可。

    【讨论】:

    • 感谢您的回答。它真的很有帮助。我尝试了 .Net 反射器,但它不适用于我的 exe。 peid 说它的 microsoft visual c++ 6.0。我认为没有办法获得来源。还是谢谢你
    【解决方案3】:

    如果是原生代码,可以反汇编。但是您不会看到程序员编写的原始代码。您将看到编译器生成的代码。这段代码可能已经过优化,虽然它在语义上是等价的,但它可能比普通的 ASM 更难阅读。

    如果是字节码(MSIL 或 javabytecode),有反编译器可以产生很好的源代码。对于 .net,这将是反射器。

    【讨论】:

      【解决方案4】:

      我会(并且已经)使用 IDA Pro 来反编译可执行文件。它创建半完整代码,您可以反编译为汇编或 C。

      如果你身边有调试符号的副本,在反编译之前将它们加载到 IDA 中,它将能够命名许多函数、参数等。

      【讨论】:

        【解决方案5】:

        恐怕您无能为力,因为您将无法以可读格式查看它,这几乎是故意的,它会显示解释的机器代码,没有格式或 cmets就像您通常在 .cs/.c 文件中一样。

        这几乎是一个命中注定的场景。

        有人已经在另一个website上问过这个问题

        【讨论】:

        • 典型,不加解释就投反对票。此外,这个答案与公认的答案相差不远。至少要提及我的答案可以如何为我自己以及问题的作者而改进。
        • 如果您没有删除您的答案,我们可以删除。无论如何,您的答案不正确;请参阅该问题的其他答案。在许多情况下使用正确的工具对可执行映像进行逆向工程是可能的。
        • 这并不完全不正确,我的回答与接受的答案有一两点。我删除我的答案的原因是它在几秒钟内被 3 人否决了,没有人有礼貌地发表评论。不过感谢您的回复,我感谢您的努力。它希望我不要因为害怕人们无情地拒绝投票而没有任何解释而做出贡献,尽管我不知道一切,但这会打击信心,无论是谁给出了答案。
        • Jamie,我理解您的沮丧,但恕我直言,您应该能够弄清楚为什么您的答案在没有任何人评论的情况下被否决。当您开始收到反对票时,您应该查看其他答案。你的直接与顶级相矛盾。 "你无能为力" != "如果是 .NET,你可以很容易地做到这一点,如果是本机代码,那就更难了"。
        • 我有点同意杰米的观点。是的,好吧,所以他的回答与其他人相矛盾,可能是错误的。所以继续投反对票,但按照 SO 告诉他原因:“最重要的是,说实话。如果您看到错误信息,请投反对票。插入 cmets,具体指出什么是错误的。更好 - 编辑和改进信息!提供更强大、更快、更好的答案!”
        【解决方案6】:

        使用 PE 资源管理器 click here to know more and download

        【讨论】:

          【解决方案7】:

          对于以任何语言编写的任何 *.Exe 文件。您可以使用 hiew 查看源代码(否则为 Hackers 视图)。您可以在www.hiew.ru 下载它。它将是演示版本,但仍然可以查看代码。

          之后按照以下步骤操作:

          1. 按 alt+f2 导航到文件。

          2. 按回车键查看其汇编/c++ 代码。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-08-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-02-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多