我是Hachoir 项目的开发人员,该项目旨在将任何文件的格式描述到位级别。目前,它具有许多知名格式的解析器,包括 Java 类、Windows 可执行文件、MP3 文件等。解析器的完整列表可以在此处的子目录中找到。
在为 使用新的解析器时hachoir_parser
,通常需要查找有关文件格式的信息。没有描述每种格式的单一来源(即使 Hachoir 渴望成为这种来源,它也不够全面)。通常,第一步只是搜索<file format name> file format
,例如java class file format
,并在官方网站上查找文档(对于 Java 类,这会找到 Oracle 的文档,这应该是您所需要的全部内容)。如果没有官方网站,您仍然可以从过去从事该格式工作的人那里找到一些文档。
对于常见的文件格式,这会在大约 90-95% 的情况下显示您想要的格式规范。较大的软件公司,如甲骨文和微软,为了互操作性,在线发布他们的文件格式规范。例如,您可以通过浏览或搜索 MSDN 找到 PE(Windows EXE/DLL)、MS Office 格式(XLS、PPT、DOC)和其他 Microsoft 格式的文档。
对于多媒体格式,多媒体 Wiki是一个很好的资源。它们还涵盖了一些游戏文件格式。
对于不太常见的文件格式,我没有从谷歌搜索中找到规范(或合适的描述),我的方法通常是找到一个能够理解文件的开源程序,然后找到它们的格式规范源(如果有描述)在提交或自述文件中),或直接阅读其源代码以了解文件格式。
如果该文件没有开源程序,也没有在线公开的文件格式描述,则该文件格式可能相当模糊。对于游戏文件(许多开发人员坚持使用他们自己的专有格式),我发现XeNTaX提供了一些很好的指针和一个很好的社区来帮助确定格式。对于其他类型的格式,您可能必须开始检查您必须比较字节字段并阐明其功能的样本。如果您有接受这些文件的程序,您可以尝试有条不紊地更改字段以确定它们对程序输出的影响。这最终是“真正的”逆向工程工作,我认为它不在本答案的范围内。