黑客爸爸破解Minecraft模组授权验证的技术实践

一位黑客爸爸通过逆向工程分析Minecraft模组的授权验证机制,使用JD-GUI反编译工具和BurpSuite代理成功绕过Pastebin的UUID白名单验证,为儿子解锁付费模组功能并传授黑客精神。

Minecraft模组、母亲节和一位黑客爸爸

上周末我妻子身体不适。这意味着我们只能待在室内,由于她生病了而且正值母亲节周末——这可不是理想的情况——我需要尽可能让儿子有事可做,这样她就能休息和恢复。

当我问儿子想做什么时,他回答说想要玩一个他在某个YouTube频道上看到的新Minecraft模组。这个模组可以让你扮演各种漫威超级英雄!但是,我们下载的模组版本……嗯,缺少了他在YouTube上看到的那些套装(当然是这样)。

我做了些功课,发现他想要的版本只向Patreon支持者发布。现在,我完全愿意花5美元购买别人倾注心血开发的软件,而且最近看了《终局之战》……对这个付费模组中展示的钢铁侠装备的渴望超过了保留5美元的欲望。我上了Patreon,捐了5美元,然后下载了模组。启动后,一切看起来都很好……然后我收到了这个……

未经授权使用 您未被授权使用此模组。如果您认为这是个错误,请联系模组创建者。

什么?真的吗?好吧,我回去重新阅读了Patreon消息……

感谢您的支持!请允许最多24小时将您添加到测试者列表中,之后模组将正常运行。

呃,这里有几个问题。第一,我们想现在就能使用。花一天(也许)时间把我们添加到某个神奇列表中并不理想(而且,创建者仍然没有回复我的邮件,所以可能……永远不会?)。第二,我在想这是不是某种"每月捐5美元才能继续留在神奇列表中使用此模组"的情况。而且,如果我已经为软件付了钱,我根本不喜欢受制于人。

是时候成为我儿子需要的黑客爸爸英雄了:P(另外,我想教他一些关于黑客精神的人生道理)。

好吧,那么……模组只是一个jar文件……让我们用JD-GUI打开它,搜索"未经授权使用"。

每个处理程序都有相同的代码,它们基本上看起来都一样,都在检查你是否在列表中,如果不在,那么你就不能玩。

那么这个列表是从哪里来的呢?看起来是来自SuperHeroesBetaTesterChecker.getList()

什么?我们真的要从pastebin.com拉取某个列表来找出我们的授权用户是谁吗?

好吧……那么……UUID?事实证明,UUID映射到用户名,这些信息是完全可检索的,这个方便的网站可以帮助我们:https://mcuuid.net/。

酷,所以现在我知道了我们的UUID(你也知道了,但是,再说一次,任何人都可以找到这些信息,所以真的无所谓)。

最初,我尝试反编译、修改源代码并重新编译。有段时间我甚至设置好了环境,准备用Eclipse和forge编译这个源代码。但这花了我几个小时,而我需要一个快速的解决方案。这就是Burp发挥作用的地方。以下是我所做的:

  1. 在代理选项下设置Burp监听所有接口
  2. 导出其证书,这样我儿子和我的机器都信任该代理的https流量(无证书警告)
  3. 将我们的机器设置为对所有安全Web流量使用Burp代理
  4. 添加了一些代理匹配和替换规则,将其中一个其他UUID替换为我们的(并且为了开发级访问权限也替换了用户名,因为……为什么不呢)

基本上就是这样。一旦我们的机器开始通过我的Burp代理路由流量,每个来自pastebin.com的带有那些UUID的响应都会自动将我们的UUID添加到授权用户列表中,而且效果很好。

请注意,我没有详细说明上述4个步骤,因为……如果你还不熟悉Burp和代理Web流量,外面已经有很多教程了。

让我们总结一下。我们付了5美元,却被告知仍然需要特殊权限才能使用这个模组。感觉不爽,想让它工作,并觉得可以教儿子一些关于计算机/黑客的知识。那么,我有没有给模组创建者发邮件?是的,事实上我告诉他们我发现了什么以及解决方法。对此非常坦率。还提供了用户名,以防创建者真的想添加它们(不过我怀疑他是否感到超级慷慨)。但我们玩得很开心,学到了一点东西,并且能够使用这个模组。

话虽如此,如果你有能力为别人花大量时间编写的软件捐几美元,我会说去做吧。但如果他们没有按承诺交付……那就戴上你的黑客帽子:-)。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计