我发现了一个项目,它有一些关于文件格式的基本文档,甚至还有一些 Python 代码来解析它:
https://github.com/eriksoe/Schockabsorber
它自 2013 年以来没有更新,但仍然可能有用。
存档团队也有一些(相当高级的)信息:http :
//fileformats.archiveteam.org/wiki/Shockwave_(Director)
没有单一的解决方案可以反转未记录的文件格式。基本上有两种方法可以尝试:
1.观察生产者。
如果您碰巧可以访问文件的生产者(例如编译器),那么您可以编译一些简单的代码,查看输出,进行一些更改,再次编译并与之前的输出进行比较。如果幸运的话,这些变化会很明显,并且至少会提供一些关于格式结构的线索。
2.观察消费者。
如果您有文件格式的使用者(例如播放器/查看器应用程序),您可以尝试观察它如何解析文件以及执行哪些步骤。您可以使用动态 RE,例如监视对读取数据的文件访问和内存访问,或完全静态 RE,即只需反汇编解析代码并推断出它的期望以及它如何处理解析数据。动态方法在实践中可能更容易,但它只涵盖实际解析的数据,而不是解析器支持的所有可能的变化(因此拥有广泛的输入文件语料库是必不可少的)。静态 RE 通常更难,但它是找出支持功能的真实范围的唯一可靠方法。
顺便说一句,静态和动态 RE 也可以应用于生产者,尽管在这种情况下,您必须重新生成二进制格式的生成部分(输出文件编写器),以及一些为编写器生成数据的代码(例如编译器)。
PS 找到了一个名为 dirOpener 的旧工具(多亏了 Web Archive!),该站点上写着以下内容:
导演引擎(将机器代码转换为屏幕上的动作)但是不理解任何行话。每次保存电影、关闭脚本窗口或按下重新编译按钮时,您的术语代码都会被编译成可由导演引擎执行的机器代码。
在您的术语代码被编译之后,director 不再需要它来执行您的文件,它只需要它从您的术语生成的机器代码。但是,为了能够对代码进行更改,术语保留在文件中。也就是说,只要它不受保护。保护导演文件的那一刻,术语代码将从文件中删除。还设置了某个标志,以便导演创作环境可以告诉它正在处理受保护的文件,并将扩展名更改为 .dxr。
我不确定他们在这里所说的“机器代码”是什么意思。我怀疑它可能是某种字节码,类似于 Flash 中的 AS3 字节码,因此您可能会想出某种反编译过程,但不要抱太大希望。