![](/img/trans.png)
[英]How to read and get the complete text line from compressed file using golang
[英]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個字節似乎代表序列長度。 在上面的例子中,值0xD8
是二進制的11011000
; 鏡像它(位反轉)你會得到00011011
,它是十六進制的0x1B
或十進制的27。 這匹配序列長度。
但是,我沒有取得任何進展。 這看起來像標准壓縮算法嗎? 接下來我該嘗試什么?
正如您在此處發布的那樣,壓縮功能稱為“squash”,是AMOS Pro的功能部分。
因此,我的建議是嘗試以下攻擊行之一:
AMOS Pro的源代碼現在顯然屬於公共領域 ,可在此處找到:
http://www.pianetaamiga.it/downloads/AMOSPro_Sources.zip
它由68000匯編代碼和相當多的編譯目標文件組成。
可以在第1061行及以后的文件+header.s
找到unsquash函數。 它沒有記錄,除了它的入口寄存器值,這至少是好的。 它似乎不是一個非常大的功能所以這可能值得一試。
您將需要擁有或獲得/學習最基本的68000機器代碼。 它似乎沒有調用系統庫或任何東西,只是似乎直接在內存上運行,這表明這實際上是可行的(即理解代碼)。 盡管如此,我一生中從未寫過或讀過68000代碼,所以我知道什么。
AMOS Pro的作者是FrançoisLionet,正如用戶指南所示 ,他在90年代中期創立了Clickteam ,制作游戲和多媒體制作軟件。 他似乎仍然坐在那家公司,根據其他人的論壇帖子,他們似乎很願意回復電子郵件。 可悲的是,我不知道他的電子郵件,但上面的Clickteam網站應該給你一個起點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.