• As part of the relaunch of Skullheart, ALL previous threads have been archived. You can find them at the bottom of the forum in the Archives (2021) section. The archives are locked, so please use the new forum sections to create new discussion threads.

Tiny Indivisible Hack Showcase

Kasumi

Better known as NEScoder
Joined
Sep 4, 2013
Messages
128
Reaction score
355
Points
63
Part of my interest in Skullgirls was "computer science-y". I wanted to figure out the art formats. Never did, too bad, so sad. The game checks certain files for modifications (in a robust way). Indivisible also checks for modifications. I only know really know a useless-in-today's-world assembly language/machine code, rather than the one the game compiles to so poking about was pretty time consuming.

Four months ago (according to imgur), I got struck by the will to mess with it again. Here are some results from that time:
1f689Op.gif

vKOhwDS.gif

Anyone who has watched the implementation streams has seen how lots of things in the game are set up to be controlled by the player. My initial plan was to kinda just... sit on this forever (or until the game's actual release date). Shortly after I was messing with this, a harddrive quit. On that harddrive was a lot of my Skullgirls folder backups, and lots of other Lab Zero Hacking™ miscellaneous junk. I kinda still planned to sit on it, because how I did this is pretty easy to make more difficult. I also never know how much meddling is appropriate to sing about.

The game is actually quite playable with most things. But could not be beaten with anyone but Ajna, as far as I could tell. Dhar can get to right before Pindayar (the spider boss) because of his infinite air movement (shown above). He ends up getting stuck on tiny corners on the way up the tall area that Ajna can wall jump or axe climb up. There's a huge invisible wall by Ratna that you can't get through without triggering the cutscene, and only player characters can trigger it as far as I could tell. This rules out Ahool (the flying rodent enemy) and Pindayar. I forgot if I tried with Baozhai, but most everything got stuck on the wall you can see Belu trying to get over. I probably could have further modified the game's data to remove Ratna, just to see but I wasn't interested enough.

Initially I did "in place" modifications on the data files, which meant nothing could get larger or smaller. This is why the above gifs are Dhar, and Belu. They are the same number of characters as "Ajna", all I did was replace "Ajna" with "Dhar" or "Belu". I did later do actual unpacking and repacking of the data files to play as Ahool and Pindayar.


"Why post it four months later?"
Mike recently posted about hash things on twitter, and it made me think of this. Also, after "losing" a lot of things that were never shown I feel like I maybe shouldn't have sat on stuff! I also had a gif of playable Roti and some other stuff, some of which I may be able to find in old skype conversations.

"How did you do this?"
I changed some bytes in the exe so the code that checks for file modifications doesn't get run, then modified the files.

"How did you know which bytes to modify in the code?"
I wish I could tell you specifically, it was all on that harddrive! I actually don't have access to a computer that can run Indivisible decently enough to retrace my steps at the moment.

Anyway, the process involved trying a few decompilers on the exe (a lazy man's way to avoid learning more about the x64/x86 instruction set), then looking for strings from the log. When I found a certain string that was related to the check, I used the address of code that accessed it and looked up the instructions I would need to have it not run, then changed the code in the exe to do that. Since I'm not a super good hacker, just removing the log strings could have kept me out of the game.

"Why share how to defeat the process?"
I'm not that invested anymore, I suppose. Even if all the log strings are removed, it doesn't stop it from being possible, it just makes the code harder to find. Someone with more knowledge than me could certainly do it anyway.

"Will you ever try to do more of this?"
I don't know. The thing that made me decide to stop working with Skullgirls was the hash checks. But after removing them from Indivisible, I found out less than I expected to. It's super easy to change cutscene data and text and such, but all the hard formats are still hard.

"Will you ever share how you did this specifically?"
Not any time soon. Maybe not even before the game comes out. I have about 70% of the bytes of the harddrive recovered, but whether the bytes that represent the txt file with the necessary changes are among those I haven't checked. I'm trying to get more of it recovered before I dig into the resulting disk image. But as far as things go, recovering that harddrive is pretty low priority.

Anyway, sorry for what is basically a tease. I guess I'll check skype and edit more gifs in if I can find them.

Edit: Skype deletes shared files after 30 days. RIP "whatifrotiwasthemaincharacter.gif".
 
Last edited:
Pretty nice! It's a shame you lost so many of your old files, but if you ever get Roti "running" again, don't hesitate to share.

And y'know, if Skullmod was any indicator, if you keep this kinda thing up, Lab Zero might put you to work!