2010-11-11 30 views
1

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

我怀疑这是因为基于在十六进制编辑器中查看文件而添加了一些特定的专有标头。有没有什么办法来检测java字节码在哪里开始和结束在这个文件,或者如何提取它,所以我可以运行它通过一个反编译器,如this之一?任何帮助深表感谢。

[编辑]

作为一个侧面说明,我想知道这是如何实现的,换句话说,什么设施/ Java的的功能,您可以使用自己的编译器在这样一个自定义的方式,因为这?

alt text P.S.如果您在另一个标签中打开该图片,图片会更大。 alt text

+2

这看起来不像一个java类文件。在十六进制编辑器中打开它,前4个字节应该是CA FE BA BE。也许它是罐子?尝试打开它作为一个zip文件。 – 2010-11-11 06:46:24

+1

这不是一个jar文件 - 一个jar文件应该以'PK'开头。 – 2010-11-11 09:33:58

+1

尝试使用十六进制转储(或在十六进制编辑器和捕获屏幕中打开)。这是不可能的,看看你的形象是什么人物。 – 2010-11-11 09:36:01

回答

2

我的猜测是它是一个加密的jar。编译后的代码仍然必须是Java字节码才能在JVM上运行,除非他们自己编写的代码极不可能。该过程的专有部分可能是对jar的加密,因此如果没有正确的解密密钥,它就不能运行。

如果是这种情况,则必须有包的另一部分具有正确的密钥和解密机制。你说它是一个二进制Java文件,但这可能意味着一个.class文件或一个jar文件。

该代码是如何执行的?你是否必须自己启动jvm(“c:/> java com.mystery.App”)还是某个其他可执行文件(exe,jar,batch等)使用的模块?

+0

伟大的问题。该文件是桌面应用程序的附加模块。这个应用程序允许您编写一些Java代码并在应用程序本身内编译所有代码。编译完成后,它会创建一个文件* .jfx,其中包含您在屏幕上方显示的内容。该编译的文件是可移植的,应用程序允许您注册放在文件夹中的.jfx文件。 – James 2010-11-11 18:08:53

+0

尝试将* .jfx文件添加到Eclipse项目中,并查看Eclipse是否可以向您显示公共字段/方法(如果它是类),还是包和类(如果它是jar)。 – 2010-11-11 18:13:34