Occultic;Nine (Vita) psb.m and body.bin files

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
Cain
Posts: 2
Joined: Mon May 21, 2018 5:41 am

Occultic;Nine (Vita) psb.m and body.bin files

Post by Cain »

Here are some example files:
https://drive.google.com/file/d/1ni4YjT ... XEMbG/view
https://drive.google.com/file/d/1hA-ceq ... neCQl/view

The only thing I found about those files is asmodean's exm2lib tool (http://asmodean.reverse.net/pages/exm2lib.html) but it doesn't support that game. I'd be really grateful if someone can help. Thanks in advance.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Occultic;Nine (Vita) psb.m and body.bin files

Post by aluigi »

You need to find the GAME_SEED and key_len of that specific game and edit the exm2lib.exe executable.
There are no quickbms scripts for this format, I already made the decryption work here viewtopic.php?p=22488#p22488 but all the psb parsing has not been done yet.
Cain
Posts: 2
Joined: Mon May 21, 2018 5:41 am

Re: Occultic;Nine (Vita) psb.m and body.bin files

Post by Cain »

I'm sorry, could you please elaborate a little more? What are exactly GAME_SEED and key_len? Also, do you have plans on making a quickbms script in the future?
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Occultic;Nine (Vita) psb.m and body.bin files

Post by aluigi »

A script maybe, the format is quite boring so it would take some time and desire (that I don't have).

GAME_SEED and key_len are 2 fields necessary for decryption.
For example "Dunamis 15 (XBOX360)" used "4nDSd4sa2v" and 0x54.
For retrieving them you have to analyze the game executable, maybe upload it and if you are lucky someone will check it (I doubt but who knows)
Tayruu
Posts: 1
Joined: Fri Oct 01, 2021 12:44 pm

Re: Occultic;Nine (Vita) psb.m and body.bin files

Post by Tayruu »

So I was looking around for a means into this game's assets myself (at least the PS4 version), and I have managed a solution. Kinda.

Since asmodean's program (as mentioned above) was no go, I eventually found FreeMoteToolkit for dealing with _body.bin + _info.psb.m. But for a while I was still stuck, because I still needed that "key".
I find an issue thread mentions this post... which is in Chinese, but ultimately translates to: the key is before "script/.script_info.psb.m" in eboot.bin.

And lo and behold, I find it.
Image

It's nx5ik27w2scm7.

I don't know if this key is going to vary between copies, or platforms, but it's a start.

My only problem at the moment is the way FreeMoteToolkit extracts the files. As-is, it extracts more psb files. While those can be on-the-fly extracted too, it leads to an extract folder full of subfolders for each file, and it doesn't maintain the in-archive directory structure. (ie. in the case of O;N's sound_body.bin, the file mentions things like "./data/bgm/bgm28nl.wav", but does not put such file in "./data/bgm/".) This makes things incredibly unwieldy, especially for how many image assets there are.

Regardless, for those that really want to dig into this VN, using FreeMote like so:
.\PsbDecompile.exe info-psb -k nx5ik27w2scm7 .\[file]_info.psb.m -a
... lets me extract the files mostly consistently. (I had to leave off -a for the image assets so it dumped them all to start, then do it again in full, though it still failed on some files anyway.)
Ulysses
Posts: 1
Joined: Sat Nov 12, 2022 6:08 am

Re: Occultic;Nine (Vita) psb.m and body.bin files

Post by Ulysses »

Tayruu wrote: My only problem at the moment is the way FreeMoteToolkit extracts the files. As-is, it extracts more psb files. While those can be on-the-fly extracted too, it leads to an extract folder full of subfolders for each file, and it doesn't maintain the in-archive directory structure. (ie. in the case of O;N's sound_body.bin, the file mentions things like "./data/bgm/bgm28nl.wav", but does not put such file in "./data/bgm/".) This makes things incredibly unwieldy, especially for how many image assets there are.
I believe the path info ("./data/bgm/bgm28nl.wav") is not kept in info.psb.m itself, so the current extraction result is all what I can do.