我有一个文件是使用专有程序编译的二进制java文件。我试图在一些标准反编译器中打开它,但他们不会识别它。
我怀疑这是因为基于在十六进制编辑器中查看文件,添加了一些特定的专有标头。有没有办法检测java字节码在这个文件的开始和结束位置,或者如何提取它,以便我可以通过像this这样的反编译器运行它?非常感谢任何帮助。
[编辑]
作为旁注,我想知道这是如何实现的,换句话说,Java的设施/特性允许您以这样的自定义方式使用他们的编译器?
附:如果您在另一个标签中打开图像,图像会更大。
答案 0 :(得分:2)
我的猜测是它是一个加密的jar。编译后的代码仍然必须是Java字节码才能在JVM上运行,除非他们编写自己的代码是非常不可能的。该过程的专有部分可能是jar的加密,因此如果没有正确的解密密钥,它将无法运行。
如果是这种情况,则必须有包的另一部分具有正确的密钥和解密它的机制。你说它是一个二进制Java文件,但可能意味着.class文件或jar文件。
这段代码是如何执行的?你是否必须自己启动jvm(“c:/> java com.mystery.App”)或者它是某个其他可执行文件(exe,jar,batch等)使用的模块?
答案 1 :(得分:1)
你试过unpack200吗?