View attachment 568608
Presenting Glamour Edit. A savegame editor for Glamour.
After countless hours of reverse engineering the glamour-server I was finally able to understand how savegame decryption and encryption in the game work. Since the server application is embedded into a patched node binary (using pkg) and transformed into tokenized V8 compilations it really was a pain in the ass to debug. Turns out, however, the encryption isn't really that special (decompile the SaveGameCipher class inside this binary to see what's happening under the hood).
As has been mentioned plenty times before, savegames are bound to your windows installation since the encryption and decryption keys are derived from your machine GUID. So in order to share savegames (without altering your machine guid) you can use this utility to export the decoded savegame as a json file. Other players can then import your json and have it encoded properly so the game recognizes it.
I added a JSON editor (based on ace) to the program for easier editing. Hit Ctrl+F while inside the editor if you want to search for specific strings. For the editor to show up and work properly you'll want to have at least Internet Explorer 10 installed on your system.
If it's not working or if you don't like to use the built-in version you can export your save to a json file, edit it in a JSON editor of your liking and import it back.
Tested on Win7 SP1 64 and Win10 64 v1903 with Glamour saves from v0.21 and v0.22. Requires .NET Framework 4.6. This program was written in managed code, namely C# and thus its source code is readily available via the binary itself.
Let me know if you run into any problems. Any feedback is appreciated.
PS: Since you will be asking this: each character in the characters array holds a money value. Find the character you're playing right now and edit the money property to your liking.
PPS: Make a backup of your save game before tinkering with it. Editing the wrong values might lead to a broken game state. Values are only checked for syntax but not plausibility before saving.
Update: You'll now find the source code including solution files attached to this post. Not all files in this archive are necessary to compile the program. Some things remained there even after refactoring earlier code (e.g. a proper Save class, which is no longer used).
Cheers,
Update 1.0.5
- You can now resize the tree view on the left
- Removed old/unneccesary code from several classes
- Added the possibility to import binary savegames from other machines.
To expand a little on the last point: if the editor finds a file in the savegame folder it can't decrypt (excluding JSON files) it will now show up in the list as Unknown save:
View attachment 583478
Clicking on it now gives you the option to add a machine ID for decrypting this file:
View attachment 583479
If the machine ID provided is valid and the file can be decoded it will appear in the save list just like any other savegame. No further adjustments are neccessary to make the savegame work.
View attachment 583490
Press "Save" to write the new save to your folder overwriting the old one. The save will now appear ingame.