有没有办法将 Ocaml 可执行文件反编译为源代码?

问题描述

有没有办法将 *.out 可执行的 Ocaml 文件完全或部分反编译为源代码

解决方法

简短的回答是“不”。 OCaml 没有什么比使用任何其他语言更容易的了。没有标准的 OCAML 工具可以做到这一点,我不希望有。

我不清楚您所说的 *.out 是什么意思。您是在谈论本机可执行文件还是字节码可执行文件?有一个有时名为 ocamldumpobj 的工具可以转储 OCaml 字节码文件的代码。这看起来不像源代码,但它至少是代码的一种略微抽象的表示形式。

对于本机可执行文件,您真的不能期望太多。原始源代码经过了很多很多(不可逆的)转换。您可以使用反汇编器查看机器代码。同样,这看起来与源代码完全不同。

,

OCaml 编译为本机代码,我不知道将二进制文件反编译为 OCaml 的反编译器。所以在实践中答案是否定的。但是,当然,您可以自己编写反编译器。不过这也不是一件容易的事。