fun fact:
This game I'm trying to reverse engineer defines one thousand, one hundred, and fifteen v-tables!
second fun fact:
I'M ABOUT TO PULL OUT ALL MY HAIR
fun fact:
This game I'm trying to reverse engineer defines one thousand, one hundred, and fifteen v-tables!
second fun fact:
I'M ABOUT TO PULL OUT ALL MY HAIR
I've moved on to ADVANCED reverse engineering techniques.
I emailed the company that made the game asking them for the specs/SDK for their engine.
OH GOODY they have a sentinel value in their vector implementation.
is it NULL?
nope. it's '#EOF'. as a pointer.
(void*)0x23454f46
This is safer than it sounds: The Wii's virtual addresses are in the 0x80000000 - 0xD3FFFFFF range, with 32 kb of registers up in 0xCD000000.
Nothing is ever mapped at 0x23000000.
turns out to be a non-issue. I modified the data to have more redundancy (overwrote one filename with another) and now it got bigger
what
and the CRC function matches the one from this CTF challenge.
what the heck. did someone put reverse engineering in my reverse engineering?
wait why is there a method on the App class to parse commandline tokens.
this is a Wii game.
what command line?
AppWii::tickleDVD?
DO NOT TICKLE THE DVD
OH LOOK another case of magical sentinel pointers.
they just checked to see if a pointer was 0xBADBEEF.
LEARN TO USE NULLS
I found where the engine lists all the file types, and they're specified with SUSPICIOUSLY win32 filter strings.
I wonder if they copy-pasted this out of some tool they used to build their files?
I kinda wonder if they generated this code out of some non-C++ language with a poor optimizer.
Everything has a vtable. Even classes where there's no subclasses, and there's only ever one object, because it's a big magical global singleton.
20 ::mbinary_search functions and no ::nonbinary_search. sad.
(hard mode: there's no templates here. they seriously wrote 20 variants on their binary-search algorithm)
okay yeah they DEFINITELY built this game on top of a cross-platform engine (their own, I believe).
I just found a function for getting the state of the mouse-wheel.
On a wii.
NOW LOOK, TECHNICALL YOU CAN PLUG A MOUSE INTO A WII, YES.
BUT WHY WOULD A GAME BOTHER TO SUPPORT IT?