反编译OCaml字节代码文件
问题描述:
我正在使用Ocaml,并且我需要弄清楚一些二进制文件。我最接近的是使用ocamlcc
将OCaml字节码转换为C编译的代码。反编译OCaml字节代码文件
我不希望反向工程的C代码,除非和直到我肯定知道,我将无法编译OCaml的代码。
问:是否有任何传统的方式来反编译ML代码OCaml的具体?
(道歉,如果这个问题是抽象的。)
答
您还可以使用dumpobj
从tools
目录中的分布。它安装在名称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)' 我猜想OCaml解释器由于非法校正器“\ 000”而无法进一步扫描代码。我只是做错了吗? – p0lAris 2013-03-05 00:02:07
你尝试过'ocamlpp'会不会更有用? – cago 2013-03-05 10:52:52
嗯,我确实尝试过ocamlpp,但它恐怕没有用处。 – p0lAris 2013-05-01 00:17:39