簡體   English   中英

解碼使用過時語言壓縮的文件

[英]Decoding a file compressed with an obsolete language

我正在嘗試解壓縮一個最初使用AMOS Pro擴展壓縮的數據文件,這是AMOS Pro編譯器附帶的舊Amiga BASIC語言。 我仍然使用編程語言並可以訪問壓縮器和解壓縮程序,但我正在嘗試使用C解壓縮文件。我最終希望能夠在現代硬件上查看這些文件而無需使用Amiga首先是模擬器。

然而,沒有關於壓縮器如何工作的文檔,所以我試圖僅僅通過觀察其行為來對其進行逆向工程。 這是我到目前為止所得到的。

這是一個原始文件(ASCII):

AABCDEFGHIJKLMNOPQRSTUVWXYZAABCDEFGHIJKLMNOPQRSTUVWXYZAABCDEFGHIJKLMNOPQRSTUVWXYZ

這是壓縮版本(十六進制):

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

使用各種文件進行測試給了我一些見解:

  • 最后4個字節是原始文件的大小。
  • 該文件似乎是一個位流,所以字節邊界並不重要(我說這是因為我看到ASCII代碼出現在幾個文件中,它們沒有與字節邊界對齊)。
  • 文件中的所有位都以相反方式存儲。

前4個字節似乎代表序列長度。 在上面的例子中,值0xD8是二進制的11011000 ; 鏡像它(位反轉)你會得到00011011 ,它是十六進制的0x1B或十進制的27。 這匹配序列長度。

但是,我沒有取得任何進展。 這看起來像標准壓縮算法嗎? 接下來我該嘗試什么?

正如您在此處發布的那樣,壓縮功能稱為“squash”,是AMOS Pro的功能部分。

因此,我的建議是嘗試以下攻擊行之一:

  • 通過分析其輸出來反向設計算法 :這絕對不是一個可行的選擇。 你只會浪費時間。
  • 閱讀,注釋,了解AMOS Pro中unsquash功能的源代碼
  • 聯系AMOS Pro的作者

閱讀源代碼

AMOS Pro的源代碼現在顯然屬於公共領域 ,可在此處找到:

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

它由68000匯編代碼和相當多的編譯目標文件組成。

可以在第1061行及以后的文件+header.s找到unsquash函數。 它沒有記錄,除了它的入口寄存器值,這至少是好的。 它似乎不是一個非常大的功能所以這可能值得一試。

您將需要擁有或獲得/學習最基本的68000機器代碼。 它似乎沒有調用系統庫或任何東西,只是似乎直接在內存上運行,這表明這實際上是可行的(即理解代碼)。 盡管如此,我一生中從未寫過或讀過68000代碼,所以我知道什么。

聯系AMOS Pro的作者

AMOS Pro的作者是FrançoisLionet,正如用戶指南所示 ,他在90年代中期創立了Clickteam ,制作游戲和多媒體制作軟件。 他似乎仍然坐在那家公司,根據其他人的論壇帖子,他們似乎很願意回復電子郵件。 可悲的是,我不知道他的電子郵件,但上面的Clickteam網站應該給你一個起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM