【问题标题】:Is there software akin to an "ultimate" decompiler that will work for any language?是否有类似于适用于任何语言的“终极”反编译器的软件?
【发布时间】:2011-06-18 01:52:23
【问题描述】:

我确实知道程序是用什么语言编写的,但我想找到一个可以反编译其源代码的反编译器找出它是什么语言写的。

如果它是用 pascal、c、bas、vb、qb 或其他方式制作的,并解码/保存为可读的 .src

类似 exe2bin 或 exe2src 我有几个 DOS 程序,我认为是用 pascal 制作的。我需要对这些程序进行反编译,以便使它们成为 Win32 应用程序。

【问题讨论】:

  • 这是不可能的。
  • 即使可能,您也可能会严重违反许可协议。
  • “不可能”?这是一个勇敢的决定,@Oli :-) 虽然非常困难,但我会在不可能标签处划清界限。
  • @pax:从原始二进制文件中明确地确定源语言?我想我可以放心地说那是“不可能的”!
  • 一般来说确实是不可能的,实际上,可能会有编译器特定的足迹 - 例如使用优化、数据表示等。想象一下原始的 Pascal 字符串、Pascal 中缺少 vararg 调用、堆栈帧......

标签: language-agnostic decompiling decompiler


【解决方案1】:

您似乎正在寻找某种“万物理论”的反编译器。哪有这回事。如果您有任何疑问,请考虑一下:

为什么闭源软件与开源软件不同?

答案当然是你看不到封闭源程序的源代码;)你可以尝试使用现有的反编译器,但不能保证你会成功,这似乎是你所期望的。

【讨论】:

  • 理论上,你可以从任何程序中获取特定平台的机器码,破解就是证明:)
【解决方案2】:

Hexrays http://www.hex-rays.com/decompiler.shtml 是一款将任何 Windows 可执行文件反编译为 C 源代码的产品。与任何其他反编译器相比,它无法实现往返反编译——根据语言的不同,从反编译的源代码重构程序可能或多或少是不可能的。

对于某些语言,这比其他语言更容易。例如。 .NET 语言有 Reflector,我相信我在 VB6 看到过类似的东西。

【讨论】:

  • 很可能,您在 VB 6 中看到的内容只有在程序被编译为伪代码 (P-Code) 时才有效。如果它被编译为本机代码,你要做的最好的可能是十六进制转储。您不会看到任何 VB 6 代码!
【解决方案3】:

您可以编写一个反编译器,它接受任何类型的二进制文件并将其翻译成一种高级语言,尽管在许多情况下是不切实际的。

【讨论】:

    【解决方案4】:

    熟练的人可以使用 hex 文件查看器查看 .exe。大多数编译器在程序中的字符串中都清楚地表明了他们的身份。

    一个程序来做到这一点,现在更难了。

    【讨论】:

      猜你喜欢
      • 2019-10-23
      • 2011-05-21
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 2010-10-03
      • 2016-01-17
      • 2013-04-02
      • 1970-01-01
      相关资源
      最近更新 更多