反编译器
这里分为 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 也有可能被钻个漏洞就能拿到项目什么的。
理论到此为止,感谢观看。
最后的最后
文章转自我自己的博客,想去看的可以前往:https://www.liaronce.win/archives/786
假的