GARbro:反編譯的奇妙冒險

日本的視覺小說遊戲,已為自成一格的遊戲了。不過有些遊戲作得實在是很爛,讓人只想把所有圖片抓來了事。

所以我來了一場反編譯的奇妙冒險。

對了,因為版權問題,我不會講我反編譯了誰。

追不上的潮流:如何解決日本軟體的解壓縮檔名

首先呢,日本軟體的解壓縮之所以會有奇怪的檔名,是因為 zip 檔在編碼方面可能用了 Shift JIS;但我們的電腦,可能大都是用 UTF-8,所以電腦讀不到。

要解決的話,就去抓 sjisunzip 吧:抓下來應該是個 exe 檔。下載好後,把壓縮檔放在那個 exe 檔的目錄。最後 ./sjisunzip.exe ./foobar.zip 這樣就可以囉。

逆向遠征軍:編譯與反編譯

檔案好了後,就可以開始囉。

一開始可以先從週邊的訊息(像是說明、製作群、系統錯誤訊息……等。因為大部分的程式,都是拿別人的程式寫,所以應該不難找)來找出該程式是用什麼建構的。畢竟遊戲是程式寫的,那就一定會有遊戲需要的圖片、影片、音樂等資源:而資源是我最有興趣的地方。

那麼一行行的程式碼、還有各種圖片與音樂,又是怎麼變成 exe 呢?答案是要透過編譯器(compiler)把程式變成執行檔;而既然有編譯器,那當然也有反編譯器(decompiler):它當然就是試圖把執行檔,再強行轉回程式的程式。

像是假設軟體用 ADV+++ 的話,我們可以用關鍵字「ADV+++ decompiler」來找有沒有對應的軟體。要是沒有的話,這篇文章大概到此為止了。不過我很幸運,透過 YoxKit 的小程式,看到有個神人寫了 GARbro 出來。

我下載並確認可以讀取後,這遊戲的圖片就成功挖出來囉。很簡單的,點選 File > Open (或著檔案 > 開啟)就行,然後用右鍵選取檔案,再 Extract(解壓縮吧)出來就完成囉。

不滅資源:exe 壓縮檔的祕密

我無聊又把 GARbro 拿去用另一個遊戲……結果卻發現它用 TyranoScript 程式寫的:這是一個以 NW.js 為基礎的視覺小說遊戲引擎。我查了下 TyranoScript 的官方說明,他們還很貼心地給了幾個開發工具:

再用前面的 GARbro 把遊戲的檔案解壓縮,遊戲資源救出來了。連劇情都能知道。很好用的軟體。

尾聲

先寫到這樣吧。

不過寫文章的時候,我想到一個問題:反編譯與逆向工程有什麼不同?心血來潮查了查,原來反編譯是逆向工程的一種。而且反編譯器是逆向工程的重要工具。

我還頗驚訝的。