我正在研究 Ocaml,我需要弄清楚一些二进制文件。我最接近的方法是将 OCaml 字节码转换为使用ocamlcc
.
我不希望对 C 代码进行逆向工程,除非并且直到我确定我将无法反编译 OCaml 代码。
问题:是否有任何传统方法可以专门为 OCaml 反编译 ML 代码?
(如果问题是抽象的,请道歉。)
我正在研究 Ocaml,我需要弄清楚一些二进制文件。我最接近的方法是将 OCaml 字节码转换为使用ocamlcc
.
我不希望对 C 代码进行逆向工程,除非并且直到我确定我将无法反编译 OCaml 代码。
问题:是否有任何传统方法可以专门为 OCaml 反编译 ML 代码?
(如果问题是抽象的,请道歉。)
您也可以dumpobj
从tools
分发的目录中使用。它安装在我的 Ubuntu linux 上,名称为ocamldumpobj
,并将打印字节码文件中包含的指令,格式如下:
...
131214 APPLY1
131215 PUSHCONST1
131216 LTINT
131217 BRANCHIF 131225
131219 ACC2
131220 BRANCHIFNOT 131225
131222 ACC3
...
你必须了解 OCaml 字节码才能走得更远。没有从字节码到源文件的工具,因为字节码不包含足够的信息。
您是否尝试过打印字节码或 lambda 码?您可以使用 OCaml 的-dlambda
选项或-dinstr
。
还有一个非常好的二进制打印机项目:ocamlpp。也许你应该看看。