My Attempt at Cracking Ring of Heroes' Encrypted Text Strings

(This is a collection of notes and muses over a period of time. Dates will be noted.)

Observation 1 - originally from February 16th, 2024

Since I can't sleep right now, I figured I'd sort of summarize my attempts at grabbing the text strings from Ring of Heroes

Context: following Skylanders Ring of Heroes' end of service, a lot of the stuff that was planned for the game was ripped from the files and posted publicly—however, to my knowledge, nobody's really been able to dig into and find the game's text strings. I've been trying to do it for preservation reasons and to see if they contained info regarding any cut/scrapped stuff.

Current summary of findings so far:

  • At the moment, I do believe I have found exactly which files contain the strings. The table folder for the game contains a bunch of binary files with "string" in the name and specific labels for languages, each of which is downloaded when you changed to the respective in-game language for the first time. Based on these facts, I believe these are the game's string table files that are used by unity games for localization purposes, just converted. However, opening them just gives mountains upon mountains of gibberish.
  • After going at it alone with no help, I finally worked up the courage to contact The Cutting Room Floor's discord and outsource some help. Somebody suggested that they probably used Base64 encoding and to use a decoder... So I did (multiple, as a matter of fact)... And got more gibberish.
  • From researching this online, it seemed as though my next step was to check the first few bytes in a hex editor and see if those has a unique "magic number" that I could use to decipher just what kinds of files I was looking at. However, none of the ones I found online match up, so it's either something unique to ring of heroes or obfuscated
  • So, my next step according to some would be to mess with the il2cpp files (the stuff used to compile the game) and see if that would provide any info. However, those are also obfuscated and don't work with the tools that are normally used
  • So, my next best bet (after maybe skimming through to see if I can decipher anything myself) would seemingly be to try and decompile/decrypt/what have you the il2cpp files while the game runs using another too. The game itself will at least boot if you run it (though you won't be able to get past the title screen since the servers have been down for two years) so I'm willing to try my luck. It's just a matter of trying to get the tools figured out.

Wish me luck.

Observation 2 - originally from February 26th, 2024

Current updates to this: I did get around to poking through the game's memory with Cheat Engine, and found references to C++ encryption which does line up since that's what typically used for Unity games. I'll have to dig into that later.

In the meantime, I also found something pretty interesting: there's references in the strings for a Polish translation of Ring of Heroes, which is notable as the game was never actually translated into polish, nor did we know of any plans to translate it into polish beforehand. Also curiously, there's no references whatsoever to the Malay translation that we know they had planned from prior datamines, which is quite curious.

Observation 3 - originally from February 28th, 2024

Alright, final update for now: after saving and combing through the game's memory strings, and comparing with other Com2us games (namely Summoner's War, which Ring of Heroes was heavily modeled after), I'm fairly confident that Ring of Heroes uses some form of AES encryption for its files, as the memory contains a lot of references to AES and that's also what they used for Summoner's War. If I want to decrypt the files, I'd need to find where they put the AES keys necessary and poke around with them.

Best-case scenario is that these are in the files themselves; worst-case is that they were kept server side and are now lost due to the EoS. I used a decompiler to decompile an apk of the game and I've been looking around for il2cpp decompiler/decryption/general look-around programs to see if maybe the il2cpp files in the game's decompiled apk may have the answers I'm looking for. This is a bit harder because those are also obfuscated or otherwise not very compatible with most programs, and the one I'm looking at rn is one I'm still trying to figure out the logistics of. Think I'm going to take a small break from code-hunting right now and try some other things before I fry my brain on this any more.

(In the meanwhile, I'm thinking about putting the decompiled stuff from the game on the internet archive for people who might want to study the game's code and/or reverse engineer it themselves—since some of it is obfuscated I'm not sure how much people would get out of it per say, but hey, anything for research)