代码之家  ›  专栏  ›  技术社区  ›  James

使用专有头对编译后的Java文件进行反编译

  •  1
  • James  · 技术社区  · 14 年前

    我有一个文件,它是一个二进制java文件,是使用专有程序编译的。我试过在一些标准的反编译程序中打开它,但它们不会识别它。

    我怀疑这是因为在hex编辑器中查看文件时,添加了一些特定的专有头。有没有什么方法可以检测java字节码在这个文件上的开始和结束位置,或者如何提取它以便我可以像 this 一个?任何帮助都非常感谢。

    [编辑]

    顺便说一下,我想知道这是如何实现的,换句话说,Java的哪些功能/特性允许您以这种定制的方式使用它们的编译器?

    alt text 另外,如果你在另一个标签页打开它,图像会更大。 alt text

    2 回复  |  直到 9 年前
        1
  •  2
  •   Kelly S. French    14 年前

    我猜是一个加密的罐子。编译后的代码仍然必须是Java字节码才能在JVM上运行,除非它们自己编写,这是极不可能的。这个过程的专有部分可能是jar的加密,这样它就不会在没有正确的解密密钥的情况下运行。

    如果是这样的话,包的另一部分必须有合适的密钥和解密机制。您说它是一个二进制Java文件,但这可能意味着一个.class文件或一个jar文件。

    这段代码是如何执行的?您必须自己启动jvm(“c:/>java com.crossy.App”)还是其他可执行文件(exe、jar、batch等)使用的模块?

        2
  •  1
  •   J-16 SDiZ    14 年前

    你试过了吗 unpack200 ?