gpt4 book ai didi

algorithm - 解码用过时语言压缩的文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:39:09 26 4
gpt4 key购买 nike

我正在尝试解压缩一个数据文件,该文件最初是使用 AMOS Pro 的扩展名压缩的,AMOS Pro 是旧的 Amiga BASIC 语言,它随 AMOS Pro 编译器一起提供。我仍然掌握编程语言并可以访问压缩器和解压缩器,但我正在尝试使用 C 解压缩文件。我最终希望能够在现代硬件上查看这些文件,而不必求助于使用 Amiga首先是模拟器。

但是,没有关于压缩器如何工作的文档,所以我试图仅通过观察其行为来对其进行逆向工程。这是我到目前为止所得到的。

这是一个原始文件 (ASCII):

AABCDEFGHIJKLMNOPQRSTUVWXYZAABCDEFGHIJKLMNOPQRSTUVWXYZAABCDEFGHIJKLMNOPQRSTUVWXYZ

这是压缩版本(十六进制):

D802C6B5
05048584
4544C5C4
2524A5A4
6564E5E4
15149594
5554D5D4
3534B591
00000007
AD763363
00000051

对各种文件的测试让我有了一些见解:

  • 最后 4 个字节是原始文件的大小。
  • 该文件似乎用作比特流,因此字节边界并不重要(我这样说是因为我看到 ASCII 码出现在一些文件中并且它们未与字节边界对齐)。
  • 文件中的所有位都反向存储。

前4个字节似乎代表一个序列长度。在上面的例子中,0xD8的值在二进制中是11011000;对其进行镜像(位反转),您将得到 00011011,即十六进制的 0x1B 或十进制的 27。匹配序列长度。

但是,我没有取得更多进展。这看起来像标准的压缩算法吗?接下来我该尝试什么?

最佳答案

正如您发布的 here ,这个压缩函数叫做“squash”,是AMOS Pro的一个函数部分。

因此,我的建议是尝试以下攻击方式之一:

  • 通过分析其输出对算法进行逆向工程 :绝对这不是一个可行的选择。你只会浪费时间。
  • 阅读、注释、理解AMOS Pro中unsquash功能的源代码
  • 联系 AMOS Pro 的作者

阅读源码

AMOS Pro 的源代码是 apparently in the public domain现在可以在这里找到:

http://www.pianetaamiga.it/downloads/AMOSPro_Sources.zip

它由68000条汇编代码和相当多的编译目标文件组成。

unsquash 函数可以在文件 +header.s 的第 1061 行及之后找到。它没有记录,除了它的入口寄存器值,这至少是好的。它似乎不是一个非常大的函数,因此值得一试。

您将需要拥有或获得/学习基本的 68000 机器代码。它似乎没有调出系统库或任何东西,似乎只是直接在内存上操作,这表明这实际上是可行的(即理解代码)。尽管如此,我一生中从未编写或阅读过 68000 代码,所以我知道什么。

联系AMOS Pro作者

AMOS Pro 的作者是 François Lionet,User Guide 证明了这一点,他创立了Clickteam在 90 年代中期制作游戏和多媒体制作软件。他似乎仍然在那家公司工作,根据其他调查 AMOS Pro 的论坛帖子,他似乎愿意回复电子邮件。遗憾的是,我不知道他的电子邮件地址,但上面的 Clickteam 网站应该可以为您提供一个起点。

关于algorithm - 解码用过时语言压缩的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21650780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com