- Aug 24, 2021
- 74
- 24
I have not, because I did not need this, but if you guys want this feature, I can take a look.Hey justaplayer69 are you planning on adding functionality for decrypting godot GDScript files?
That's a different key. There's a decryption key to decrypt the pack files, this is what you can specify manually. This is solely used to extract files, gdscript is a totally different kind of beast.I tried to use your tool but it just saved every gdscript file as gde(encrypted gdscript). I know that i can manually define the decryption key
I'll look into it.but the thing is i dont know it and i hoped that your tool could automatically detect it somehow.
Yep, not easy to use, and even if it worked, godot-key-extract looks for the unpacking decryption key and not the gdscript key.I tried to useYou must be registered to see the linksbut it failed to find it. I also tried statically searching for it in the executable but i couldnt find it with ghidra.
Thanks, I'll take a look, but no promises. I haven't researched yet how gdscripts are encoded, it is possible that they are not using any key rather a bytecode or something. I'll let you know when I've figured it out and if it's doable.The game im trying it on is https://f95zone.to/threads/anomalous-coffee-machine-v0-8-00-deluxe-horubrain.220446/
Depends on the engine.where does the unpatch files located after I click unpack all?
the unpacked script from your tool is not bytecode for me. It is in a .gde format and not .gdsHi Henry1887,
I did some digging on GDScript files. It looks like they have only one level of encryption, so there's no script key needed, they use the same as any other asset. The reason why the decrypted script looked like gibberish to you is because it is a bytecode (a highly version dependent one on top of that). I might be able to add a bytecode decompiler into GR, but until then, two steps needed:
1. unpack the game with GAME RIPPER (this will take care of the key autodetection and decryption)
2. use gdtool (You must be registered to see the links) or gdsdecomp (You must be registered to see the links) to convert the decrypted bytecode .gds file into a plain text script file
Gdtool is a command line tool and gdsdecomp is a windowed one. If the game isn't encrypted (or uses the old encryption method), then you can use gdsdecomp as-is. Otherwise if it's using the newer encryption, then first decrypt the script files with GR.
Not sure what you mean by that, but GAME RIPPER just decrypts the assets and saves them verbatim. If the format is recognized, then a second converted file is saved too, however this doesn't influence the saving of the original asset as-is. If the script is saved as .gde (whatever that might be), then this is so because that's what stored in the game files.the unpacked script from your tool is not bytecode for me. It is in a .gde format and not .gds
Well you said that game ripper takes care of the decryption and .gde is a encrypted gdscript format so I thought your tool would automatically decrypt it?Not sure what you mean by that, but GAME RIPPER just decrypts the assets and saves them verbatim. If the format is recognized, then a second converted file is saved too, however this doesn't influence the saving of the original asset as-is. If the script is saved as .gde (whatever that might be), then this is so because that's what stored in the game files.
Yes. It does remove the asset encryption. If there's an additional level of encryption on scripts, then that's not removed (yet). I've just started researching GDScript, and I haven't seen such 2nd level decrypter in the other tools (just bytecode disassemblers). Of course this doesn't mean there's none, it's just I haven't found it yet.Well you said that game ripper takes care of the decryption and .gde is a encrypted gdscript format so I thought your tool would automatically decrypt it?
i used the gameripper v1.7, with PR reward 2024_11, heres the log, i could see the sfx tabDunno, it works for me. I would have to reproduce the issue to tell more.
Which PR version are you ripping? With what GR version and on which platform? Can you see the audio files on the "SFX" tab?
Please run GR with the -v flag ("gameripper.exe -v") that will create gameripper.log file and attach that log here. I'll be able to tell more if I can see the messages.
I've checked the Godot source code. There's no additional gdscript encryption whatsoever (just the usual asset encryption), but plugins might implement it.Well you said that game ripper takes care of the decryption and .gde is a encrypted gdscript format so I thought your tool would automatically decrypt it?
Of course, thanks for your feedback!Hi. Great tool, thanks a lot, appreciate it.
Here's some notes/questions, if I may.
This is a feature which supposed to work when Shift is held down with the click. If this is constantly triggered on your Win10, then this is an SDL bug (to be precise, SDL_GetModState() returning a modifier key being pressed when it's not actually pressed). I'll find a workaround for this.1. Navigation with mouse in sprites kinda does not work.
When switching sprites with up/down keys, it works fine.
When trying to use mouse, the program does something. Seems like it adds a new animation out of random sprites at the end of the list? And on every click it adds a new one with more frames than the previous one?
I have already increased the contrast between the font's color and the shadow, maybe I'll increase it a little bit more. It is using the Commodore 64 palette BTW.2. Tbh these buttons' text isn't easy to read unless I zoom the screen in
Not yet, but I can definitely add this easily.3. Any way to force the app with a language at startup? Like command line arg or something?
Double checked that no modifier is pressed, and tested this on another win10 machine just to be sure - yes, it's constantly triggered.This is a feature which supposed to work when Shift is held down with the click. If this is constantly triggered on your Win10, then this is an SDL bug (to be precise, SDL_GetModState() returning a modifier key being pressed when it's not actually pressed).
Nice. This definitely will be useful for some short loops.(For the records, the feature in question: click on the first frame, then shift+click on the last frame and all sprites in between these two will be added as a new animation to the end of the list.)
I'd appreciate it.Not yet, but I can definitely add this easily.
It even does that. Awesome! Now I can finally take a look at Maumau CGs.unknown engine format, fallback to brute force scanning
Decrypt / Unpack all
dumps the sprites right into the game folder. I think it would be nice to use a subdirectory for that, something like 'game folder/gameripper_export/', to keep exports isolated from the game files.Thanks!It even does that. Awesome!
It's how they are stored. Brute force scanning operates on encoded bitstream level (so it looks for PNG, OGG etc. bitstreams), but borders are added when those are decoded. It is pretty common btw, that's how multiple layers of CGs are positioned on each other in many games.This makes me curious whether it is the way they were stored or some brute force consequences.
Yeah, this is something that I'm considering a lot lately. Originally GR was written for PGMMV, which uses the same file names for both encrypted and unencrypted assets, that's why I haven't implemented this from the start. Later as more and more engines were added, it become obvious that this is unique to PGMMV, other engines use different file names, so yeah, separate directory is something that's on my TODO list, but unfortunately a lot of work at this point.On another note, seems likeDecrypt / Unpack all
dumps the sprites right into the game folder. I think it would be nice to use a subdirectory for that, something like 'game folder/gameripper_export/', to keep exports isolated from the game files.