當前位置:
首頁 > 最新 > GameMaker 偏門理論:關於反編譯器

GameMaker 偏門理論:關於反編譯器

關注「indienova」,挖掘獨立遊戲的更多樂趣

反編譯器

這裡分為 Undertale 之前和 Undertale 之後。

為什麼要這樣分?

因為 Undertale 使用的遊戲引擎正是 GameMaker 的後續版本 GameMaker:Studio ,自從 Undertale 火起來了以後,越來越多的反編譯器出現在 GitHub 和 GitLab(據說 Reddit 也有),並且很多也寫明了 for Undertale 或類似的字樣(為 Toby Fox 默哀 3 秒)。

Undertale 之前

在 Undertale 之前反編譯器還是很少的。

GameMaker 8.x Decompiler

此反編譯器只支持 GameMaker 7.0-8.1(更舊的就不知道了)。

只是個單文件,只需要把 EXE 拖到反編譯器內即可獲取到整個項目,不過遇到加了 UPX 的遊戲(具體往下翻),會導致反編譯器無法運行(還有聽群里的 dalao 說遊戲改個圖標也可以讓反編譯器無法運行,不知道是不是真的)。

源碼託管於 GitHub(5 年前哦)。

QuickBMS 腳本

此反編譯腳本只支持較早期的 GameMaker:Studio。

這是在 GMC 找到的腳本,並且可以在 QuickBMS 官網找到。

此反編譯腳本可以將遊戲各類素材包括代碼通過 data.win 提取出來,不過提取出來的代碼基本上是給 GMAssetCompiler.exe 「看的」,一般情況下很難看懂。

目前版本會提示錯誤導致無法成功反編譯。

GameMaker-Studio-Decompiler

此反編譯器只支持較早期的 GameMaker:Studio。

這是比 Undertale 早大概 8 個月的反編譯器,這個反編譯器只支持導出 PNG 精靈,不介意的話影響不大。

源碼託管於 GitHub。

Undertale 之後

自從 Undertale 火了之後,對該遊戲的各種反編譯器越來越多。。。。。。

這裡只介紹幾個看起來還能用的。

Altar.NET

此反編譯器支持 GameMaker:Studio 和 GameMaker Studio 2。

此反編譯器可以通過 data.win 提取遊戲內的資源文件,不過該反編譯器的倉庫也指明了主要對 Undertale (mainly for Undertale),其他由 GameMaker:Studio 製作的遊戲未知。

這個反編譯器出來的代碼基本上還是給 GMAssetCompiler 「看」的,不過相比 QuickBMS 腳本,這個比反編譯腳本更易讀。

源碼託管於 GitLab。

GMdsam

此反編譯器支持 GameMaker:Studio(GameMaker Studio 2 未知)。

一樣是通過 data.win 提取,不過只能提取對應資源(貌似提不出代碼),與 Altar.NET 一樣是 for Undertale。

源碼託管於 GitHub。

同時這個反編譯器還有個叫 Gamemaker-Project-Recreator 的項目,可以將 GMdsam 反編譯出來的資源重新編譯一遍(剛好湊一套了),同樣在 GitHub。

還有一些在 Reddit 的就不翻了,自己去找吧。

注釋

GMC:全稱 GameMaker Community,官方社區,現已轉移到 GMF(GameMaker Forum)。

GMAssetCompiler & GMAssetCompiler.exe:GameMaker Asset Compiler,GameMaker:Studio 和 GameMaker Studio 2 的常規編譯器,生成的正是 data.win,打開它的則是 YoYo Runner。

防反編譯

升級版本

雖然很玄,但至少 QuickBMS 廢了。

Game Maker Anti-Decompiler

此工具只支持 GameMaker 6.1-8.1。

這個工具的實現原理其實很簡單,用 UPX 套個殼就可以讓反編譯器無法運行,但是這個工具有概率導致遊戲無法運行(同樣是改個圖標一定概率炸)。

YoYo Compiler(YYC)

從 GameMaker:Studio 開始,這個全新的編譯器就出現了,這個編譯器可以將遊戲通過 C++ 重新編譯,並且可以提高遊戲運行效率(然而我並不知道能提升多少),最重要的是可以保護資源文件什麼的(目前所有反編譯器對 YYC 無效)(唯一一個有效的只有 IDA)。

比起 GMAssetCompiler 會將遊戲素材之類的資源打包到 data.win 給反編譯器提供了唯一的突破口,YYC 明顯好得多。

這個編譯器在 GameMaker Studio 2 也有哦(被當作招牌宣傳)。

當然這個編譯器也有個缺點,就是:配置太 TM 無語了!!!!!!

由於 GameMaker:Studio 混亂的編譯器要求外加 VS 各個版本在 GameMaker:Studio 里各種互不兼容,我已經無話可說了。

比如在 GameMaker:Studio 中一會兒要求 VS2012(Windows 8),一會兒要求 VS2013(Windows)。

我:嗯都沒問題,那我的 VS2017 肯定能用。

結果:全都不通過,為了 Windows(YYC) 我特地安裝了 VS2013 才通過編譯。

不過在 GameMaker Studio 2 的時候使用 VS2017 成功通過了編譯,可能是因為默認要求 VS2017 的緣故吧。

至於怎麼配置,以後有時間的話我會單獨發布一篇文章。

演示就不放出來了,太麻煩了,不過有一個使用了 YYC 編譯的軟體,就是玩過 Minecraft 都知道的 Mine-imator(就是用 GameMaker:Studio 做的哦)。

最後

當然,沒有絕對的防反編譯方法,YYC 也不是絕對安全的編譯方式,世界上本來就沒有絕對的程序保護措施,YYC 也有可能被鑽個漏洞就能拿到項目什麼的。

理論到此為止,感謝觀看。

最後的最後

本文為用戶投稿,不代表 indienova 觀點。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 indienova 的精彩文章:

89:獨立的溫情
這家成立了26年的日本遊戲公司,基本不做自己的遊戲

TAG:indienova |