反编译OCaml字节码文件

反编译OCaml字节码文件,ocaml,decompiling,Ocaml,Decompiling,我正在研究Ocaml,我需要找出一些二进制文件。最近的一次是使用ocamlcc将OCaml字节代码转换为C编译代码 我不希望对C代码进行反向工程,除非我确信我将无法反编译OCaml代码 问:有没有专门针对OCaml反编译ML代码的传统方法 (如果问题是抽象的,请道歉。)您是否尝试打印字节码或lambda码?您可以使用OCaml的-dlambda选项或-dinstr 还有一个非常好的二进制打印机项目:。也许你应该看看 您也可以从发行版的工具目录中使用dumpobj。它以ocamldumpobj的名

我正在研究Ocaml,我需要找出一些二进制文件。最近的一次是使用
ocamlcc
将OCaml字节代码转换为C编译代码

我不希望对C代码进行反向工程,除非我确信我将无法反编译OCaml代码

问:有没有专门针对OCaml反编译ML代码的传统方法


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

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


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

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

...
131214  APPLY1 
131215  PUSHCONST1 
131216  LTINT 
131217  BRANCHIF 131225
131219  ACC2 
131220  BRANCHIFNOT 131225
131222  ACC3 
...
您必须了解OCaml字节码才能更进一步。
没有工具可以从字节码转换到源文件,因为字节码没有包含足够的信息。

我可能没有完全理解您,但我做了以下操作:-
Ocaml-dlambda sm.byte
文件“sm.byte”,第2行,字符1-2:错误:非法字符(\000),由于非法的更正符“\000”,OCaml解释器无法进一步扫描代码。我只是做错了吗?你有没有试过
ocamlpp
哪个(可能)会更有用?嗯,我试过ocamlpp,但恐怕根本没用。