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

对于不认识的人:

Lingo是一种冗长的面向对象(OO)脚本语言。由John H. Thompson开发,用于Adobe Director(以前称为Macromedia Director)。 Lingo用于开发桌面应用程序软件,交互式信息亭,CD-ROM和Adobe Shockwave内容。

您可以将Lingo视为AS3,但用于Shockwave文件。

我听说关于gzip的一些信息,但我不确定100%。

评论

也许您应该形容Lingo是什么,因为我怀疑这里的大多数人从未听说过它。

@IgorSkochinsky很难描述,但我在Wikipedia中添加了一部分。

可以访问一些简单的脚本和已编译的文件,并将其上传到某个地方。

@joxeankoret deansdirectortutorials.com/3D/3Dlingo.htm很难找到想要的东西。

@blabb对不起,我不太明白您的意思。

#1 楼

我发现一个项目,该项目具有一些有关文件格式的基本文档,甚至还有一些Python代码来对其进行解析:

https://github.com/eriksoe/Schockabsorber

它自2013年以来未进行过更新,但仍可能有用。

存档团队还提供了一些(相当高级的)信息:
http://fileformats.archiveteam.org / wiki / Shockwave_(导演)

对于逆转未记录的文件格式,没有单一的解决方案。您基本上可以尝试两种方法:

1。观察生产者。

如果您碰巧可以访问文件的生产者(例如编译器),则可以编译一些简单的代码,查看输出,进行一些更改,然后编译再次与先前的输出进行比较。如果幸运的话,更改将显而易见,并至少提供一些有关格式结构的线索。

2。观察使用者。

如果您具有文件格式的使用者(例如播放器/查看器应用程序),则可以尝试观察它如何解析文件以及执行什么步骤。您可以使用动态RE,例如监视对读取数据的文件访问和内存访问,或者使用完全静态的RE,即只需分解解析代码并推断其期望内容以及如何处理解析后的数据。动态方法在实践中可能会更容易,但是它只涵盖实际解析的数据,而不是解析器支持的所有可能的变体(因此,拥有大量的输入文件是必不可少的)。静态RE通常比较困难,但是是确定受支持功能的真实范围的唯一肯定方法。

BTW,静态RE和动态RE都可以同时应用于生产者,尽管如果您必须重新使用二进制格式生成部分(输出文件编写器),还要加上一些为编写器生成数据的代码(例如,编译器)。

附言找到了一个名为dirOpener的旧工具(感谢Web存档保存!),该站点显示以下内容:


Director引擎(将机器代码转换为您的动作
)屏幕),但不懂任何术语。每次保存电影
时,关闭脚本窗口或按重新编译按钮,
您的语言代码就会被编译为机器代码,可以由导演引擎执行。

编译了您的语言代码后,director不再需要它
执行您的文件,它只需要从您的语言语言生成的机器代码。为了使您能够更改代码,
术语保留在文件中。也就是说,只要它不受保护。保护导演文件后,便会从文件中剥离语言代码
。还设置了一个特定的标志,以便
导演创作环境可以告诉它正在处理受保护的
文件,并且扩展名更改为.dxr。


I我不确定这里所说的“机器代码”是什么意思。我怀疑这可能是某种字节码,类似于Flash中的AS3字节码,因此您可能可以提出某种反编译过程,但不要抱太大希望。

评论


机器代码或机器语言是一组直接由计算机的中央处理器(CPU)执行的指令。每个指令对CPU寄存器或内存中的数据单元执行非常特定的任务,例如加载,跳转或ALU操作。

–约书亚·巴克(Joshua Bakker)
16 Dec 8'在7:42

@JoshuaBakker:我知道什么是机器码,我只是怀疑Lingo实际上是编译成机器码而不是字节码。

–伊戈尔·斯科钦斯基♦
16年8月8日在8:22

哦,我很抱歉。是的,我认为这是某种字节码,但我不确定。

–约书亚·巴克(Joshua Bakker)
16年8月8日在8:24