【问题标题】:Decompiling OCaml byte code files反编译 OCaml 字节码文件
【发布时间】:2013-03-03 08:06:09
【问题描述】:

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

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

问题:有没有什么传统方法可以专门为 OCaml 反编译 ML 代码?

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

【问题讨论】:

    标签: ocaml decompiling


    【解决方案1】:

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

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

    您必须了解 OCaml 字节码才能更进一步。 没有从字节码到源文件的工具,因为字节码没有包含足够的信息。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我可能没有完全理解你,但我做了以下事情:- Ocaml -dlambda sm.byte File "sm.byte", line 2, characters 1-2: Error: Illegal character (\000) 我猜,OCaml 解释器由于非法校正器而无法进一步扫描代码“\000”。我只是做错了吗?
      • 你试过ocamlpp 哪个(可能)更有用?
      • 好吧,我确实尝试过 ocamlpp,但恐怕它一点用都没有。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2011-10-18
      • 2012-11-06
      • 2011-09-20
      相关资源
      最近更新 更多