9

我正在研究 Ocaml,我需要弄清楚一些二进制文件。我最接近的方法是将 OCaml 字节码转换为使用ocamlcc.

我不希望对 C 代码进行逆向工程,除非并且直到我确定我将无法反编译 OCaml 代码。

问题:是否有任何传统方法可以专门为 OCaml 反编译 ML 代码?

(如果问题是抽象的,请道歉。)

4

2 回答 2

8

您也可以dumpobjtools分发的目录中使用。它安装在我的 Ubuntu linux 上,名称为ocamldumpobj,并将打印字节码文件中包含的指令,格式如下:

...
131214  APPLY1 
131215  PUSHCONST1 
131216  LTINT 
131217  BRANCHIF 131225
131219  ACC2 
131220  BRANCHIFNOT 131225
131222  ACC3 
...

你必须了解 OCaml 字节码才能走得更远。没有从字节码到源文件的工具,因为字节码不包含足够的信息。

于 2013-03-27T10:03:54.470 回答
4

您是否尝试过打印字节码或 lambda 码?您可以使用 OCaml 的-dlambda选项或-dinstr

还有一个非常好的二进制打印机项目:ocamlpp。也许你应该看看。

于 2013-03-04T09:35:05.560 回答