一個最簡單GAL遊戲資源檔黑盒分析(一)

來源:互聯網
上載者:User

早就有人叫我寫個封包分析教程

我今天有點時間寫個

 

http://blog.csdn.net/luozhuang/archive/2010/12/31/6110010.aspx

遊戲檔案黑盒分析吧。

黑盒來源於軟體測試詞語http://baike.baidu.com/view/51274.htm

也就是我們不分析任何程式彙編。

 

三大媽有個封包分析組,也是類似的。黑盒分析下資源檔

 

工具 大家可以找自己喜歡二進位編輯工具 比如winhex

 

這個封包是最簡單的,因為沒有任何壓縮。。。

 

分析檔案名稱:日文原版script.dat 檔案

沒有裝遊戲這裡可以下載:

http://hotfile.com/dl/100048813/d53730d/script.dat.html

 

0000h: 50 41 43 4B 44 41 54 2E 01 04 00 00 01 04 00 00  PACKDAT.........
0010h: 69 39 35 5F 30 31 2E 74 78 00 00 00 00 00 00 00  i95_01.tx.......
0020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0030h: 40 C0 00 00 00 00 00 20 62 00 00 00 62 00 00 00  @...... b...b...
0040h: 69 39 35 5F 30 32 2E 74 78 00 00 00 00 00 00 00  i95_02.tx.......
0050h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0060h: A4 C0 00 00 00 00 00 20 94 00 00 00 94 00 00 00  ....... ........

 

應該知道的:

遊戲漢化中的一個重要的步驟是對資源的解包以及封包。

這個遊戲引擎名叫InnocentGrey

 

前8個byte(0x0-0x7)
PACKDAT->magic
magic 作為識別該引擎的表示,因為很多遊戲都採用.dat尾碼名。

 

01 04 00 00 我們沒有知道確切意思標記為Unkown 未知吧

後面又來個01 04 00 00 請大家看看winhex 資料解譯器
代表32bit資料類型的1025
可能就是說這個包裡面有1025個檔案?
其實可以比較下Crass輸出結果,這個檔案解包以後有1025個檔案,符合我們分析結果。

0010h: 69 39 35 5F 30 31 2E 74 78 00 00 00 00 00 00 00  i95_01.tx.......
0020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
很明顯是檔案名稱 不說了

 

0030h: 40 C0 00 00 這是什麼呢
winhex 資料解譯器 顯示為32bit的 49216
這又是什麼意思?
Alt+G 把這個資料扔進去看看
很明顯 跳轉到這裡:
C020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
C030h: 0C F6 1E 00 00 00 00 20 E6 00 00 00 E6 00 00 00  ....... ........
C040h: 81 40 94 92 8D 9C 89 BB 82 B5 82 BD 8A D4 8B 7B  .@.............{
C050h: 94 FC 90 E1 82 C6 8E 76 82 ED 82 EA 82 E9 88 E2  .......v........

81 40這裡明顯肯定這個值是位移地址,而且是對應於檔案開頭位移。
C語言有個fseek函數
fseek( stream, 位移地址, SEEK_SET);

 

00 00 00 20 我們沒有知道確切意思標記為Unkown 未知吧

 

62 00 00 00這兩個我簡單說明下
這個引擎存在壓縮格式
遇到壓縮演算法就必須給出 壓縮前長度和解壓縮後長度。
類似這樣的調用:
uncompress(uncompressbuf,compresslen,uncompresslen);

這個檔案沒有壓縮,所以這兩個值完全一樣的。

 

這個封包經過分析以後 格式如下

檔案頭:
 char  [8];  //"PACKDAT." 50 41 43 4B 44 41 54 2E
 32bit ?;
 32bit 索引數目;

索引:
 char [32];
 32bit 位移地址;
 32bit ?
 32bit 壓縮/解壓縮後大小;
 32bit 壓縮/解壓縮後大小;

 

壓縮/解壓縮後大小 我沒有繼續辨認,這個可以從其他檔案辨認,壓縮後大小必然小於解壓縮後大小。

 

將32bit 這些轉換成程式格式:

8bit char-〉BYTE
16bit-〉short
32bit-〉int

現在可以提取/寫回這個封包了。不管寫代碼還是手工都可以試試看吧。

 

加密部分:

劇本部分

加密比較簡單 Xor FF

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.