#What's a good way to start reverse-engineering proprietary files?
28 messages · Page 1 of 1 (latest)
Assuming Windows - First thing I would do is open it with a hex editor (https://mh-nexus.de/en/hxd/) and a pixel interpreter like GGD (https://randomhoohaas.flyingomelette.com/ai/spriterip/#ggd)
First step already done, though I'm not sure what I'm looking at/for.
Right - some telltale signs are magic numbers. If you see any of these, for example, you might have zlib compressed data in there
If you see the text "PK" somewhere, that could imply there's ZIPped data. PNG Header is 89 50 4E 47 0D 0A 1A 0A so that's something to keep an eye out for, too
!!
Gotcha!
Are there other instances of the 78 XX anywhere in the file?
Also, what does the very start of the file look like?
vaps eh
Yeah, I have no idea on that.
Right - I got no matches unfortunately with searching, but generally speaking it's a good idea to google "vaps file" or "vaps" or "76 61 70 73" or "vaps [game name]" or whatever on google and especially Github
One thing that also helps is pinpointing data and searching for pointers.
Rough example: You find zlibbed data at address 0x1234. You find the bytes 34 12 00 00 in the beginning of the file. These could very likely be related.
Files often contain the info explaining (where the data is, how much data should you read) in the beginning of the file. Something like 34 12 00 00 40 01 00 00 could mean there's data at address 0x1234 and it's 0x140 bytes big.
This is a general example, though, and might not apply here. Just something to keep in mind. Finding data you can confirm is data and then finding data that tells you the address and size of it can kickstart the process.
Would console version make any difference?
Yes
Also, tangentially related, but I made a video diving into figuring out the compression format of Tomba 1 some time ago. You might learn from the process, if you're interested.
https://www.youtube.com/watch?v=LASE8IiGB9Q
This time we're taking a deep dive back into 2018 and the methods we used to reverse engineer the GAM file format Whoopee Camp used to compress Tomba 1 data. We had no debugger but as it turns out, sometimes just eyeballing the compressed data and the decompressed data is enough to draw enough insight to figure out what the scheme is all about.
...
adding to that - the reason i suggested using a hex editor and GGD in tandem is so you can hunt for data with them in tandem. An example would be using GGD to scour through the file and recognizing some graphic data. With GGD I would be able to pin-point the exact beginning of that particular graphics data, say, 0xABCD. With this in mind I could see if there's CD AB anywhere in the beginning of the file.
Things to consider: does that graphic data start immediately where the pixel data begins? Not necessarily. For all we know, graphics files inside that huge "vaps archive" could be stored in a format where the first four bytes are for the graphics width and height, and only then the pixel data begins. So even if the data appears to visually start at 0xABCD, in reality the file would start from 0xABCD-4; 0xABC9.
Again, generalised example, but this could be one of the reasons why one couldn't find an exact CD AB match but could find something like C9 AB.
Man I wish it were as simple as grabbing from Unity games. Anything like... PS2/PS3/360/Wii that isn't a well-known format is a pain.
What console/game is this exactly?
"Sniffers" exist for some filetypes too, like if you were to open an archive with PSicture.exe it would check if the file contains any TIM images
But TIMs are a PS1 thing only, so you'll have no luck with any other system obviously
So basically, I've been wanting to dig through all these old Cartoon Network games for models and stuff, but unlike first-party stuff, those are harder to crack, at least from my limited experience.
So like PC games or?