Over the weekend my wife was feeling under the weather. This meant we were stuck indoors and since she is sick and it’s Mother’s day weekend – less than ideal situation – I needed to keep my son as occupied as possible so she could rest and recuperate.
When I asked my son what he wanted to do, he responded with a new Minecraft mod he’d seen on one of these YouTuber’s channels. The mod allows you be various Marvel superheroes! Except, the mod version we downloaded… well it lacked the suits he’d seen on YouTube (of course it did).
Did my homework, realized he wanted a version that was only released if you were a Patreon supporter. Now, I’m totally cool giving 5 bucks for software that somebody poured their heart into and with having recently watched Endgame… the desire for the Iron man stuff shown in this paid-for-mod was larger than the desire to hold on to my 5 dollars. Went on Patreon, donated the $5, and downloaded the mod. Fired it up, everything appeared fine… then I got this…
What? Seriously? Well, I go back in and re-read the Patreon message…
Ugh, so a couple issues here. One, we wanted access now. Taking a day (maybe) to add us to some magical list is less than ideal (which, the creator still hasn’t responded to my emails so perhaps… never?). Secondly, I’m wondering if this is some sort of “donate $5 every month to continue being on the magical list to use this mod”. And, if I already paid for software, I just plain old don’t like being at the mercy of someone else.
Time to be the hacker dad hero my son needs 😛 (plus, I wanted to teach him a life lesson about the hacker spirit).
Okay so… a mod is just a jar file… let’s open this up with JD-GUI and search for “Unauthorized use”.
Each of these handlers has the same code, they all look basically identical, and they are checking to see if you’re in a list and if you’re not, then you don’t get to play.
So where is this list coming from? Looks like SuperHeroesBetaTesterChecker.getList()
What? Are we seriously pulling down some list from pastebin.com to find out who our authorized users are?
Alright…. so… UUIDs? As it turns out, UUIDs map to usernames and that information is totally retrievable and this handy site helps https://mcuuid.net/.
Now originally, I tried decompiling, changing the source and recompiling. At one point I even had my environment setup to compile from Eclipse with forge and this source code. But this was taking a couple hours and I needed a quick solution. This is where Burp came into play. Here is what I did.
1. Set Burp to listen on all interfaces under the proxy options
2. Exported its certificate so that both my son and my machines trusted the proxy for https traffic (no cert warnings)
3. Set our machines to use the Burp proxy for all of our traffic for Secure Web Traffic
4. Added a few proxy match & replace rules that replaces one of the other UUIDs with ours (and usernames for dev level access because.. why not)
That’s basically it. Once our machines started routing traffic thru my Burp proxy, every response from pastebin.com with those UUIDs automatically had ours added to the list as authorized users and it worked like a charm.
Note that I have not given detailed instructions on those above 4 steps because… there are already tons of tutorials out there if you’re not already familiar with Burp & proxying web traffic.
Let’s summarize. We paid $5, and we got told we still needed special permission to use this mod. Didn’t sit well, wanted to get this working, and figured I could teach my son a little bit about computers/hacking. Now, did I email the creator of the mod? Yes, in fact I let them know what I found and the workaround. Was very upfront about that. Also provided usernames in case the creator did feel like adding them (though I doubt he’s feeling super generous). But we had some fun, learned a little, and got to use the mod.
Having said all that, if you’re in a position to donate even a few bucks for software that someone spends a good chunk of their time writing, I’d say do it. But if they don’t deliver as promised… put on your hacker hat :-).