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 觀點。
※89:獨立的溫情
※這家成立了26年的日本遊戲公司,基本不做自己的遊戲
TAG:indienova |