NOTE: svdt now suports antisavegame restore patching, so you should probably be using that instead of a windows tool: https://gbatemp.net/threads/svdt-save-data-explorer-manager.396562/
UPDATE 13 september 2015: added information for Monster Hunter 4 Ultimate thanks to TamDanny.
UPDATE 17 september 2015: project on github https://github.com/suloku/secure-value-patcher
UPDATES and changelog: added version v2b
IMPORTANT NOTE: PHYSICAL (CARTRIDGE) GAMES CAN BE BACKED UP AND RESTORED REGARDLESS OF THE SECURE VALUE. ANTISAVEGAME RESTORE IS ONLY USED IN DIGITAL VERSION OF THE GAMES (AKA ESHOP GAMES).
What is the Antisavegame restore?
I decided to make a new thread to centralize this particular matter that is updating the secure value to be able to restore old savegames.
From the sources of DaBlackDeath's Pokemon Shuffle Secure value updater I've made a "universal" application that can work with any game, given we know where the secure value is stored.
The secure value file is a plain txt file containing the offset where the secure value of the given game is stored. I've included the ones we already know for sure: Pokemon Shuffle and Animal Crossing New Leaf, and will include the rest when we find them.
List of games known to use anti savegame restore and its location (Red = unconfirmed/unknown):
Since Pokemon Rumble world uses compression, I had to made a separate tool just for Rumble World that will take care of decompressing, updating secure value, recompressing, and updating CRC32 checksum:
Here are the manual instructions to edit Rumble World's secure value by using SciresM save editor:
UPDATE 13 september 2015: added information for Monster Hunter 4 Ultimate thanks to TamDanny.
UPDATE 17 september 2015: project on github https://github.com/suloku/secure-value-patcher
UPDATES and changelog: added version v2b
[+]v2b changelog:
- Added filesize check as a way to ensure both old and new files are from the same game
[+]v2 changelog:
- Added more known secure values
- Known secure values are now built in thanks to DaBlackDeath
- Program can backup the old savefile before updating the secure value
- Added filesize check as a way to ensure both old and new files are from the same game
[+]v2 changelog:
- Added more known secure values
- Known secure values are now built in thanks to DaBlackDeath
- Program can backup the old savefile before updating the secure value
IMPORTANT NOTE: PHYSICAL (CARTRIDGE) GAMES CAN BE BACKED UP AND RESTORED REGARDLESS OF THE SECURE VALUE. ANTISAVEGAME RESTORE IS ONLY USED IN DIGITAL VERSION OF THE GAMES (AKA ESHOP GAMES).
What is the Antisavegame restore?
Antisavegame restore is a value (secure value) that is generate each time a digital game saves. This value is stored both at the 3ds and at the savegame of the given title. When the game loads the savefile, it checks the stored value against the one in the 3ds, if they don't match (i.e. if we restore an old savegame using savedata_manager or svdt) the game will tell you that the savedata us corrupted, then it will erase the savegame and start a new blank one.
Only a handful of games use the Antisavegame restore.
The Secure value is stored in a cartridge game savefiles, but it isn't used for obvious reasons.
More information: http://3dbrew.org/wiki/Anti_Savegame_Restore
Only a handful of games use the Antisavegame restore.
The Secure value is stored in a cartridge game savefiles, but it isn't used for obvious reasons.
More information: http://3dbrew.org/wiki/Anti_Savegame_Restore
I decided to make a new thread to centralize this particular matter that is updating the secure value to be able to restore old savegames.
From the sources of DaBlackDeath's Pokemon Shuffle Secure value updater I've made a "universal" application that can work with any game, given we know where the secure value is stored.
The secure value file is a plain txt file containing the offset where the secure value of the given game is stored. I've included the ones we already know for sure: Pokemon Shuffle and Animal Crossing New Leaf, and will include the rest when we find them.
List of games known to use anti savegame restore and its location (Red = unconfirmed/unknown):
- Pokemon Shuffle (savedata.bin): 0x2C
- Animal Crossing New Leaf (garden.dat): 0x00
- Super Smash Bros. 3DS (/save_data/account_data.bin, /save_data/system_data.bin): 0x10
- Important: both files (/save_data/account_data.bin, /save_data/system_data.bin) have to be updated, as both hold the secure value at 0x10.
- Note: the Demo uses the exact same files and offsets.
- Pokemon X/Y (main): 0x65400
- Pokemon ORAS (main): 0x75E00
- Pokemon ORAS Demo (main): 0x5800
- Pokemon Rumble World (00slot00 folder with 149 files): secure value is stored in 00main.dat, but since the file is compressed and needs to be decompressed for editing, the offset varies from file to file, also CRC32 in the header has to be updated after recompressing the edited file. It is always (or so it seems) at the end minus 10 bytes of the decompressed file: View attachment 24543
- Compression: zlib level 9 compression.
- Monster Hunter 4 Ultimate (user1, user2, user3): secure value is at each user file (unconfirmed) at position 0x112.
- Each userX file probably needs patching for correct loading (untested).
- Each userX file is encrypted using blowfish encription. A decripter/encripter is available here.
- Currently looking for testers to confirm the information and create a patcher like rumble world's, also to add it to svdt.
Since Pokemon Rumble world uses compression, I had to made a separate tool just for Rumble World that will take care of decompressing, updating secure value, recompressing, and updating CRC32 checksum:
IMPORTANT NOTE ABOUT RUMBLE WORLD AND FTP TRANSFER: if you transfer your save trough ftbrony or similar, make sure your savegames are complete. Use the Rumblechecker included in RWSecureValue.zip, ftbrony tends to fail when transferring the rumble world savefiles, so you might end with incomplete files. Make sure everythings OK before atempting to update the secure value/edit your savegame with SciresM editor. Or just transfer trough SD card or the built in transfer tool in N3DS.Rumble World Secure Value Updater by suloku 2015
************************************************
Included files:
_______________
- src.zip: source code of RWSecureValue.exe
- Rumblecheker.zip: simple application that can check the integrity of the Pokemon Rumble World save files, see included readme.
How to use:
___________
1.- Copy your old 00slot00 folder to the "old" folder.
2.- Copy the latest working backup 00slot00 folder to the "new" folder.
3.- Run the program, the secure value from the new save will be inserted in the old save.
4.- Restore your savegame
VERY IMPORTANT: if you play rumble world after making the latest working backup and before restoring the updated old savefile, the secure value will change and this won't work, because it needs the LATEST rumble world savegame in your 3ds, and the first thing Rumble World does is save the file, so if you boot the game it will no longuer be the latest savefile.
Credits:
________
Thanks to SciresM for the information about how rumble world files are stored and compressed and his save editor.
Thanks to the people of gbatemp who tested the method to locate the secure value.
Here are the manual instructions to edit Rumble World's secure value by using SciresM save editor:
Here's how to change the secure value in rumble world step by step:
1.- Backup the latest rumble world savegame you have and do not play rumble world anymore.
2.- Open it with rumble world save editor (Open Xompressed 00slot00)
3.- Save it with "Save decompressed 00slot00_dec
4.- Navigate to the newly created 00slot00_dec folder
5.- Open 00main_dec.dat with an hex editor (i.e. HxD)
6.- Go to the very end of the file
8.- The secure value is the last but two bytes (8 bytes long):
View attachment 24543
note: since the file is compressed, the offset will change from file to file
9.- Copy the hex bytes somewhere
10.- Repeat the process with your old "corrupted" savefile:
- 10.1.- Open your old ("corrupted") savegame with rumble world save editor (Open Compressed 00slot00)
- 10.2.- Save it with "Save Decompressed 00slot00_dec
- 10.3.- Navigate to the newly created 00slot00_dec folder
- 10.4.- Open 00main_dec.dat with an hex editor (i.e. HxD)
- 10.5.- Go to the very end of the file and locate the secure value
- 10.6.- Change the secure value and save the file
11.- Now in rumble world save editor select "Open Decompressed 00slot00_dec" and open the 00slot00_dec folder of your old "corrupted" savefile.
12.- Save it with "Save Compressed 00solt00"
13.- Restore your fixed 00slot00 folder to rumble world.
1.- Backup the latest rumble world savegame you have and do not play rumble world anymore.
2.- Open it with rumble world save editor (Open Xompressed 00slot00)
3.- Save it with "Save decompressed 00slot00_dec
4.- Navigate to the newly created 00slot00_dec folder
5.- Open 00main_dec.dat with an hex editor (i.e. HxD)
6.- Go to the very end of the file
8.- The secure value is the last but two bytes (8 bytes long):
View attachment 24543
note: since the file is compressed, the offset will change from file to file
9.- Copy the hex bytes somewhere
10.- Repeat the process with your old "corrupted" savefile:
- 10.1.- Open your old ("corrupted") savegame with rumble world save editor (Open Compressed 00slot00)
- 10.2.- Save it with "Save Decompressed 00slot00_dec
- 10.3.- Navigate to the newly created 00slot00_dec folder
- 10.4.- Open 00main_dec.dat with an hex editor (i.e. HxD)
- 10.5.- Go to the very end of the file and locate the secure value
- 10.6.- Change the secure value and save the file
11.- Now in rumble world save editor select "Open Decompressed 00slot00_dec" and open the 00slot00_dec folder of your old "corrupted" savefile.
12.- Save it with "Save Compressed 00solt00"
13.- Restore your fixed 00slot00 folder to rumble world.
Attachments
Last edited by suloku,