我以前从未做过这样的事情,但是我有编程经验。我要提取两个文件:
data00.bigdata01.big

我尝试了Dragon Unpacker,它可以解压缩.big文件。但是似乎它们不是有效的.big文件,只是某种自定义存档,名为.big,所以看来我必须编写自己的解压缩程序。

存档创建于1999年。据我了解,它主要包含图形和声音文件。

data00.big在hexeditor中打开:



评论

您可以发布指向实际文件的链接吗?

#1 楼

我看到文件名。这是一个非常重要的起点-如果不这样做,我将不得不假设该文件已加密,压缩,或者根本不使用文件名,而这些文件名都很难解压缩。

此刻,跳过标题“ BigFile”和紧随其后的数据,然后仅关注这些文件名。文件名被填充),或具有不同的长度,在这种情况下,可能会有“长度”值-或没有。长度值可能不是必需的,文件名可以用特殊值如0终止。

也有其他值-通常,在存档格式中,这些是文件长度。也可以有文件偏移量-但是从哪里开始呢? (例如,文件的开始,不包括标题的存档数据的开始,实际数据的开始等等。)如果所有文件都是首尾相连,则不需要每个文件的偏移量,那么长度就足够了。

每个文件记录可能会有其他信息;我遇到了标志,文件类型代码,日期/时间戳,校验和等等。通常,在找出最重要的位的含义之后,其余数据也很有意义。

要找出什么字节意味着什么,编写一个小程序以打印出每个文件名和所有文件名。它的相关数据,直到下一个文件条目。不必担心尝试获取正确的“文件数”。这很可能是开头标头中的数字之一;您可以在找到正确的文件列表详细信息后再回到该位置。对于初学者来说,只需写出前几十个条目的数据即可。

请记住,您无法立即判断文件名之前或之后是否有额外的数据!甚至两者都有。

文件大小和偏移量通常为4个字节;字节序可以很容易地检查(所有小的数字都是好的,所有明显的数字都必须是错误的)。文件大小可能相似但有所不同。不断增加的数字必须是绝对文件偏移量。始终在某些二进制位置包含数据而在其他二进制位置都不包含数据的数字可以是某种类型的标志。较大的值,徘徊在相似的值附近,很可能是一个时间戳。最后,随机查找完整的4个字节的数字可能是校验和。

如果在解码文件记录的测试集的数据时获得一致的良好结果,请通过试验和错误。在这里,您可能会发现一条记录的“结尾”实际上是下一条记录的开始。

这将告诉您(1)记录数,以及(2)记录数据。您可以检查这些数字是否出现在“ BigFile”标题中-特别是记录的数量会很有用。

如果可以找到“看起来”像数字的数字,它们可能是文件长度和(可选)偏移量,您可以编写测试程序以提取单个文件。这也可能有助于确定数据的顺序。如果您提取的文件显然是PNG图像,但其关联的文件名是“ config.txt”,则说明文件顺序错误。某些文件类型,例如PNG图像,应该完全自包含:如果找到PNG图像的开始,则可以通过查找有说服力的IEND标记立即将其完整提取。这样您便拥有了可靠的文件长度,因此可以在文件记录集中搜索匹配项。