这是Java游戏中的文件,我想知道如何从中读取字符串数据。
我希望只给出提示。
我用十六进制编辑器进行了研究,并得出结论,由于缺少模式,文件已压缩或加密。
如果已加密,我不知道如何进行。
如果已压缩,我发现以下内容,但不知道如何进行。
熵=每字节7.999055位。
最佳压缩将使384802字节文件的大小减少0%。 384802个样本的分布为505.10,并且随机
超出该值的时间小于0.01%。
数据字节的算术平均值为128.1314(127.5 =随机)。 > Pi的Monte Carlo值为3.120328068(误差0.68%)。串行
相关系数是-0.031097(完全不相关= 0.0)。 >可根据要求提供更多信息。
预先感谢!
#1 楼
小菜一碟:这是ZIP兼容的压缩编译Java。标头附近是否有任何熟悉的字节序列?反正还是个红鲱鱼。接下来:CA FE BA BE
,可以是任何东西(不是文件长度,但可能是一些内部标志或ID)。下一步:
10 00 10 00
。这些是熟悉的,它们可能形成一组ZLIB兼容的压缩标志。快速而简单的ZLIB解包程序为我提供了(1)积极的解包结果(这意味着该数据是有效的压缩数据并且可以被解压缩),以及(2)一个输出文件远大于输入文件(1,388,603字节,原始文件) 384,802)。检查解压缩后的数据,我在一开始就发现了这一点: />
FA CE AF 0E 10 00 10 00 78 9C AC DD ..
-足以推断出它已成功解压缩。从这一点开始,您应该能够使用常见的Java解密/反编译技术。
#2 楼
很难将压缩良好的数据(例如LZMA)与加密良好的数据(例如AES)区分开。但是,我过去进行了一些分析,发现基于熵分析,可以将许多压缩数据与加密数据区分开,就像您显然已经做过的那样。首先会采用更简单的方法。在文件中查找常见的“魔术”字符串和/或标题,例如gzip,zlib和lzma的字符串。游戏开发人员可能正在使用标准压缩,他们只是为其应用程序添加了自定义标头。
评论
是的,可以在开始处找到一组常见的ZLIB压缩标志。
–杂件
13年11月1日在22:15
评论
反转使用该文件的程序,因为它是java,所以这可能是最简单的解决方案。只是JD-GUI或类似的东西。