[request] GEVA instead of GVAS
tuxfamily opened this issue ยท 7 comments
Hello.
I would like to edit a PS4 save made with UE 4.16 but it does not seem to be supported by any UE save editor.
The header is a bit different from a classic GVAS, it starts with GEVASEND instead of GVAS, and I don't really know for the rest of the file.
I searched for resources online about this particular format ("GEVA" or "GEVASEND") but did not find anything relevant.
As you are pretty familiar with this (kind of) file format,
could you give a look at the attached file and maybe point me in the right direction?
Many thanks.
The header looks mostly familiar with some small oddities. Unfortunately it looks like the save file body is either compressed or encrypted. I don't see any magic numbers that suggest a specific compression algorithm so hard to say what's going on just looking at the save file in isolation. Perhaps you could try creating a slightly modified version of the save file in game and then diff the output? That might tell you things like where the compressed/encrypted data begins or whether it's a block cipher or stream cipher.
Thanks for the fast reply.
Perhaps you could try creating a slightly modified version of the save file in game and then diff the output?
A slightly modification
is not really possible with this game (it's Life is strange 2
) because it only saves after major decision
or chapter
, so, it's not like if I could spent $1 and then save, unfortunately.
Anyway, I don't want to bother you more with this, so I'm closing this ticket.
I will check if I have some other UE4 games on the PS4, in order to compare the saves.
Thanks for the suggestion and your time :)
Well you're in luck. ๐ I shared this with @LongerWarrior and he made the astute observation there is a Zlib compression stream header 4 bytes after what appears to the be the save file class name (78 9C
). Sure enough, extracting this stream and passing it through Zlib produces what I would expect a save file body to look like. This commit has some messy patches that let the save file parse and re-save again which should let you edit the save as needed: 4f69f63
Awesome! Many thanks to both of you!
Unfortunately, I can't get it to work, but I probably do something wrong.
What I did:
git clone https://github.com/trumank/uesave-rs.git
git checkout -b life-is-strange
cargo install --path .
Replacing /Users/tuxfamily/.cargo/bin/uesave
Replaced package `uesave v0.2.1 (https://github.com/trumank/uesave-rs.git#64e74aa9)` with `uesave v0.2.1 (/Users/tuxfamily/Projects/divers/uesave-rs)` (executable `uesave`)
But...
/Users/tuxfamily/.cargo/bin/uesave edit ue4savegame.ps4.sav
Found non-standard magic: [47, 45, 56, 41] (GEVA) expected: GVAS, continuing to parse...
Error: at offset 577188: io error: failed to fill whole buffer
What I did wrong? How can I avoid this error? ๐
Were you able to open this save on your side, with your patch?
I think you are creating a new branch off of master
when you checkout
with the -b
flag.
If you just want to cargo install
you can skip the clone entirely: cargo install --git https://github.com/trumank/uesave-rs.git --branch life-is-strange
Oh right, my mistake ๐
Sorry for that.
It seems to work, I will try to resign the save and upload it on the PS4... probably tomorrow.
I will keep you posted.
Thanks again.
Sorry for the late reply.
I've tried many times but, somehow, the save get corrupted after edit.
Basically, I'm just trying to change the 'money' value.
I found it in the JSON, in one place, it's a float, identified with a GUID.
So I've tried to just change it by $1 ($5.03 instead of $4.03) but after the game says that the save is corrupted.
I've tried everything possible on the PS4, even to delete all saves and the game itself, in case it was some kind of internal protection, but no luck.
Of course, it works if I do not edit the save, even transferring it from a console to another one (my Slim to my Pro in this case).
So, maybe there is a kind of signature/hash in the save, or something like that.
Well, not a big deal, I was able to change this value in game/memory with ps4debug.
Thanks to the save edit, I was able to see that the value is a real float, not rounded, so it was easy to found it in memory ๐
Thank you very much for your help and your time.