逆向工程 Lingo 脚本 .DCR/.CCT 文件

逆向工程 反编译 脚本
2021-07-10 09:46:19

我想知道我是否可以获得一些关于逆向工程 .dcr/.cct 文件的技巧来获取 Lingo 脚本。我知道使用recover-cct/recover-dir 您可以获得所有资产等,但您无法获得Lingo 脚本。有人告诉我,获得它们的唯一方法是逆向工程。

对于不知道的人:

Lingo 是一种详细的面向对象 (OO) 脚本语言,由 John H. Thompson 开发,用于 Adob​​e Director(前身为 Macromedia Director)。Lingo 用于开发桌面应用软件、交互式信息亭、CD-ROM 和 Adob​​e Shockwave 内容。

您可以将 Lingo 视为 AS3,但用于冲击波文件。

我听说过一些关于 gzip 的事情,但我不是 100% 确定。

1个回答

我发现了一个项目,它有一些关于文件格式的基本文档,甚至还有一些 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 字节码,因此您可能会想出某种反编译过程,但不要抱太大希望。