Tool GAME RIPPER (decrypt and extract Ren'Py, Godot, WolfRPG, RPGM XP/VX/Ace/MZ/MV, PGMMV, APK, JAR, WASM, EXE etc.)

justaplayer69

Member
Nov 29, 2023
111
154
When using the unpack all option, they are still extracted as .import files, and in the sprite viewer, you can only extract single photos at a time, which is tedious.
Are you saying that GAMERIPPER can decrypt and extract the sprites one-by-one, it is only the "Unpack all" feature that doesn't work? If so, that's definitely a bug, I'll look into it.
Can you please provide a link to the .pck file? Preferably an f95zone link.
 

justaplayer69

Member
Nov 29, 2023
111
154
Interestingly it crashes whilst unpacking a godot .pck file (or the game's folder, tried both) for some reason.
I've noticed similar issues (memory allocation related), but can you please provide a link to the .pck file you were using so that I can test with that exact pck too? Preferably an f95zone link.
 

justaplayer69

Member
Nov 29, 2023
111
154
Hi,

Here's a new version:

Windows: https://attachments.f95zone.to/2024/09/4032660_gameripper-windows.zip
Linux: https://attachments.f95zone.to/2024/09/4032661_gameripper-linux.zip
Source: https://attachments.f95zone.to/2024/09/4032663_gameripper-src.zip

EDIT: Due to issues with notabug, development moved to .

Changelog:
- Dark Hunter Kuro (and other PGMMV games using the same encryption) now works
- Life with tribe (and other godot pck files with encrypted index) now works
- fixed an issue with godot pck files when the index was too big
- fixed the issue with "-d" and "Unpack all" (I forgot to read in the key, mea culpa)
- fixed all "Out of memory" errors (hopefully all, most wasn't allocation related actually)
- the Windows version is now compiled for 64 bit (main reason for the "Out of memory" errors)
- fixed some WolfRPG uncompressor issues
- fixed a Ren'Py issue when the RPA index uses obscure pickle encoding

So the godot crash was caused by a too big index, this now works, and additionally Life with tribe has not just the assets, but the index encrypted as well. This latter wasn't implemented before. The main reason for "Out of memory" errors was that I accidentally compiled for 32 bit (where the address space is limited to 3G), and I've also added failsafes should the index contain incorrect entries.
 
Last edited:
  • Like
Reactions: rzerces
Apr 26, 2017
88
47
GAMERIPPER tries to detect the encryption key automatically and decrypts. It should report an error if key not found, try running with the "-v" flag, that will create a log file with verbose messages, including the autodetected key.

Godot uses a military grade AES-256-CFB encryption, which in itself is impossible to crack. However the Godot executable usually stores the encryption key in plain text, so GAMERIPPER looks into the EXE file, locates the data segment looks for the key there. If the game has a modified Godot executable, which encrypts the encryption key itself or does not use AES for assets, then GAMERIPPER won't be able to rip the assets.

In the first case (encrypted encryption key) you can try which is a DLL that injects code while the Godot game is running and prints out the key or which is a GUI tool that brute force scans for the key (they both print out it as "Secret Key"). Then you can run GAMERIPPER, press F2 and specify that key manually and decryption will work afterwards.

In the second case (not AES method) there's not much you can do currently.
Thank you for the reply! I don't know if it's because I drag and dropped the entire folder instead of just the pck file alone or if it's because I used the newer version but now it works! Thank you!
 

justaplayer69

Member
Nov 29, 2023
111
154
Thank you for the reply! I don't know if it's because I drag and dropped the entire folder instead of just the pck file alone or if it's because I used the newer version but now it works! Thank you!
You're welcome! It's because of the newer version. Your game's pck file has its index encrypted, something that I've just implemented in the latest GR (the assets were decrypted before, but not the index). Probably that's also why you couldn't use this pck file with Godot RE Tools either.
 
  • Like
Reactions: grabembythepussy

justaplayer69

Member
Nov 29, 2023
111
154
When using the unpack all option, they are still extracted as .import files, and in the sprite viewer, you can only extract single photos at a time, which is tedious.
I was thinking about what you've said here and maybe I have misunderstood you. If you're saying that "Unpack all" works for your pck file, it's just you see files with an ".import" extension then that's normal.

That's how godot stores things in pck archives, these ".import" files references the actual asset files (maybe with cropping or transformation and multiple ".import" might reference the same asset), and the actual asset files you're looking for are extracted under "_godot\imported" directory. (Full disclosure, it should be ".godot\imported", but filenames staring with a dot are hidden files under Linux, so to avoid confusion I've replaced the leading dot with an underscore.)

Anyway, open the ".import" file with Notepad, and you'll see an URL something like path="res://.godot/imported/(something)", then the actual asset will be extracted to a file named "_godot\imported\(something)". For textures, it's probably going to be a ".ctex" file, so you'll find "(something).ctex" and for convenience a converted "(something).png" or "(something).webp" file as well under "_godot\imported".
 

justaplayer69

Member
Nov 29, 2023
111
154
Hi,

New version:

Windows: https://attachments.f95zone.to/2024/09/4094553_gameripper-windows.zip
Linux: https://attachments.f95zone.to/2024/09/4094554_gameripper-linux.zip
Source: https://attachments.f95zone.to/2024/09/4094555_gameripper-src.zip

New features and formats:
- DDS texture (DXT1/2/3/4/5)
- Android (APK)
- Java engines (JAR)
- WebAssembly games (WASM, MEMFS)
- ripping embedded resources from EXE files (whatever engine)

If engine not recognized then from now on GAME RIPPER will brute force scan for embedded unencrypted assets. This is handy because it works regardless to the actual engine used.
 
  • Like
Reactions: rzerces
Apr 14, 2024
200
2,230
- extract / import translatable text in CSV and PO formats
First of all, “very good job”.
Regarding the export and import of texts (that you indicate), I wanted to try it in some Godot game and I haven't seen “that option”.
Could you explain me how to make it work?
or if there is any way to import “edited” later files?
 

justaplayer69

Member
Nov 29, 2023
111
154
First of all, “very good job”.
Thanks! But why the quotes?
Regarding the export and import of texts (that you indicate), I wanted to try it in some Godot game and I haven't seen “that option”.
Depends on the game engine. I haven't implemented this in all the engine plugins yet, so this feature isn't supported for all games yet. I'm focusing on the ones that has no support for, but it's not an easy task so it takes time to implement for all engines (if it's even possible).
Could you explain me how to make it work?
Nobody asked for godot translation so far, but now I'll take look at how to add translation support for godot games too. It is possible that it can't be done, so no promises. But I'll try to add this feature.
or if there is any way to import “edited” later files?
Only updating translations is and will ever be supported, I'm not planning to support other assets.
 
Apr 14, 2024
200
2,230
Thanks! But why the quotes?
To emphasize that it is indeed “a great job”.

------------------

Nobody asked for godot translation so far, but now I'll take look at how to add translation support for godot games too. It is possible that it can't be done, so no promises. But I'll try to add this feature.
Only updating translations is and will ever be supported, I'm not planning to support other assets.
Perhaps I have not explained myself correctly, for example this game.
Your tool easily extracts the scripts needed to translate it, for example this .json file
timeline-1634748156.zip

It would be very easy for me to translate these files.
My question was, is it possible to import them again “once translated”?

I don't know what method you use, but I know there is that allows you to “import” back to .pck “only” the edited files.
that's why I was asking you



thank you for your work
 
Last edited:

leplop

Newbie
May 30, 2018
15
9
I really love the crack scene vibe of your software :love:.
a little translation error : "saving" is translated by "économie" instead of
"sauvegarde" in french
And now the big problem for this game ero dungeon GR doesn't seem to work properly the Decrypt / unpack all button doesn't seem to do something and in the sprite viewer il i click on a sprite on the right GR animate quickly all the sprites from the first yo the on i click and the export button freeze GR
 

justaplayer69

Member
Nov 29, 2023
111
154
Your tool easily extracts the scripts needed to translate it, for example this .json file
Extracting the data from the packed container and decoding/updating the data are totally different things. I have written the tool in a way so that "Unpack" will extract all files, even the ones it does not recognize.

Anyway, thanks for the game link, I'll take a look!
My question was, is it possible to import them again “once translated”?
Engine specific. For godot that's a no for now, but I'm working on it.
I don't know what method you use, but I know there is that allows you to “import” back to .pck “only” the edited files.
that's why I was asking you
I've reverse engineered and implemented everything from ground up. So it's a homemade method :)
For unencrypted and separate .pck files importing back is a piece of cake, problem starts with encryption and embedded pcks. For the former that's a maybe, for the latter that's probably a no.
As for the tool link, thanks, but I already knew about that one. It does not support encrypted pck files at all: and
 
  • Like
Reactions: Paloslios_Official

justaplayer69

Member
Nov 29, 2023
111
154
I really love the crack scene vibe of your software :love:.
Thanks! :-D
a little translation error : "saving" is translated by "économie" instead of
"sauvegarde" in french
Thanks! If it's not much trouble, would you be kind to take a quick look at the other phrases as well? It was MTL'd so there could be more errors: (simple CSV file, ca. 40 phrases/sentences, no more).
And now the big problem for this game ero dungeon GR doesn't seem to work properly the Decrypt / unpack all button doesn't seem to do something and in the sprite viewer il i click on a sprite on the right GR animate quickly all the sprites from the first yo the on i click and the export button freeze GR
Thanks for the feedback, and thanks for the game link, I'll take a look at that one too. The too quick animation might be normal (sheets are usually don't store timings so it would need interpreting the scripts to get it right), but extraction shouldn't freeze for sure.
 

justaplayer69

Member
Nov 29, 2023
111
154
Alright, I've downloaded and checked your games.

Wyldspace: this is a separate and unencrypted pck file, so for now GodotPCKTool should be able to replace timeline.json. But I'll look into how I could integrate PO export/import in GR for godot.
Ero dungeon: I was unable to reproduce the error, both "Export" sprite button and "Unpack all" works as expected. Are you using the latest GR? (There's a known issue with godot in older versions. Please download GR from the gitlab page, that's always the latest.)
 
  • Like
Reactions: Paloslios_Official

Henry1887

Member
Aug 2, 2020
335
325
I've reverse engineered and implemented everything from ground up. So it's a homemade method :)
For unencrypted and separate .pck files importing back is a piece of cake, problem starts with encryption and embedded pcks. For the former that's a maybe, for the latter that's probably a no.
As for the tool link, thanks, but I already knew about that one. It does not support encrypted pck files at all: and

Have you taken a look at this?
 

Big Daddy

Member
Jul 17, 2017
407
934
I was thinking about what you've said here and maybe I have misunderstood you. If you're saying that "Unpack all" works for your pck file, it's just you see files with an ".import" extension then that's normal.

That's how godot stores things in pck archives, these ".import" files references the actual asset files (maybe with cropping or transformation and multiple ".import" might reference the same asset), and the actual asset files you're looking for are extracted under "_godot\imported" directory. (Full disclosure, it should be ".godot\imported", but filenames staring with a dot are hidden files under Linux, so to avoid confusion I've replaced the leading dot with an underscore.)

Anyway, open the ".import" file with Notepad, and you'll see an URL something like path="res://.godot/imported/(something)", then the actual asset will be extracted to a file named "_godot\imported\(something)". For textures, it's probably going to be a ".ctex" file, so you'll find "(something).ctex" and for convenience a converted "(something).png" or "(something).webp" file as well under "_godot\imported".
Hey Justaplayer, apologies, I was traveling and away from the forums for a little bit. And you got it exactly right. I missed that the pngs got extracted to the imported directory, along with the ctex files. Ironically had looked in there before for other extractors but got so caught up looking for an "export all sprites" button in game ripper, that I forgot to just check the folder. I was extracting the sprites one by one in the GUI beforehand with the export sprite button. Thanks for pointing me in the right direction. May be worth adding that detail to the readme, or even in the GUI itself.

Thanks again for building an excellent and easy to use ripping tool
 

whitemage88

Newbie
Jul 25, 2020
21
15
Semi-recently(?), Godot upgraded their engine and as a result all tools I had to decrypt no longer worked. I had been looking for something for some time, and this finally worked. Thank you so much for the time and effort you spent on this.
 

justaplayer69

Member
Nov 29, 2023
111
154
Thank you guys for your kind words! I'm glad you find GAME RIPPER useful! :-D

Here's a new version to elevate the mood:

Windows: https://attachments.f95zone.to/2024/10/4139909_gameripper-windows.zip
Linux: https://attachments.f95zone.to/2024/10/4139910_gameripper-linux.zip
Source: https://attachments.f95zone.to/2024/10/4139911_gameripper-src.zip

Changelog:
- Fixed French translation
- Note added to README about Godot .import files
- Godot resource parsing completely rewritten (now supports .sample, .oggvorbisstr etc. types too)
- Godot resources are now detected and converted inside Android APK files
- Fixed an issue with some embedded Godot PCK in some games
- Added support for RPG Maker XP / VX / Ace (plus Ruby marshall decoding, rvdata to json converter)
- Added support for encrypted ZIP (also automatic key detection if it has an uncompressed asset)
- Standardized command line flags, now it's always a dash, no matter the platform
- Added "-s" flag to disable engine detection and force scanning for assets
- Added "-k" flag to specify the key manually on the command line

Notes: the godot asset ripping improved a lot in overall, both detection and conversion. Unfortunately I was unable to add .PO support though (here the problem is, it seems like every game use their very own way of storing translatable texts, I couldn't come up with a solution on how to collect all of them reliably. Some use strings in scripts, other use csv files, others use json but with different keys etc. It does not help that there are several i18n godot plugins, each with their own incompatible storing formats).

Ripping assets from encrypted ZIP archives (using traditional ZipCrypto) now works. It can even crack the encryption as long as there's an uncompressed PNG, WEBP, WAV or OGG asset in the archive. This is pretty fast, on a typical desktop PC (2GHz and 8 cores) takes 10-15 minutes in worst case when the very last hash candidate is the correct one, much faster if you're lucky.

RPG Maker XP/VX/Ace with .rgssad, .rgss2a, .rgss3a archives (also Fux2Pack variant) is supported now. Here the key is also autodetected, so it works even if a game doesn't use the default 0xDEADCAFE key. The .rxdata, .rvdata, .rvdata2 files are converted to JSON, but reading and displaying maps is still lacking (you can convert maps into .TMX files, they are just not shown).