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

5.00 star(s) 1 Vote

Hentfreak7

Newbie
Feb 19, 2023
16
7
Thanks! Hmmmm this does not tell. I should add more diverse messages I guess. But I'm sure the file has passed magic checks and the actual issue is with decrypting the file index in the dxArc (probably DARC_HEAD.HeadSize has some unrealistic value, making the allocation fail).

However I suspect that this is a Pro game, so it should have a "Data\Game.wolf" or "Data\Game.data" file as well, could you please attach that (should be a small file)? If nothing else, I might be able to figure out the encryption key from that, and then you can specify the key after pressing F2. No promises though, but I'll try.
It is Game Pro.

I have: Data.wolf which is 1.4gb (not 1.2gb).
and a Game File 1kb which i will upload here


Here a screesnhot from the folder: Game folder.png
 

justaplayer69

Member
Nov 29, 2023
183
214
This is definitely something new. It was created using WolfRPG 3.396, and looks like all the Address fields in the dx8 header are encrypted. I've never seen an encrypted dx8 header before (only dx6 header was encrypted, but the dev had removed that because the encryption key could be easily deducted that way, that's why GR does too btw.)

A dx8 header should be like:
Code:
00000000  44 58 08 00 90 71 01 00  40 00 00 00 00 00 00 00  |DX...q..@.......|
00000010  e4 4f c4 0b 00 00 00 00  60 81 00 00 00 00 00 00  |.O......`.......|
00000020  50 6f 01 00 00 00 00 00  a4 03 00 00 00 00 3a 01  |Po............:.|
00000030  0c 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  94 d6 09 9f d2 71 78 64  c6 9e ca 01 34 77 13 cd  |.....qxd....4w..|
But it is like:
Code:
00000000  44 58 08 00 d4 3c 05 00  a7 41 f5 7b e9 4f f8 53  |DX...<...A.{.O.S|
00000010  0a 88 18 68 43 65 c3 54  87 18 68 42 2b 07 ce 33  |...hCe.T..hB+..3|
00000020  90 15 f1 6b ad 07 6e 48  a4 03 00 00 00 00 4b 01  |...k..nH......K.|
00000030  0c fc 82 50 33 57 72 c3  59 ab 65 55 98 47 c2 eb  |...P3Wr.Y.eU.G..|
00000040  38 08 9f 7b e6 e2 33 76  91 35 6b 41 41 a6 12 d8  |8..{..3v.5kAA...|
The first two bytes is the magic (DX), then version on two bytes (8.0). After that the file index size (HeadSize) on 4 bytes, and 0x53cd4 (343252 bytes) seems about right, but the offset fields after that (8 bytes each) definitely not right, those are bigger than the file size. The CharCodeFormat and Flags are unencrypted again. So when dxlib calculates the required memory as "HuffHeadSize = size - Head.FileNameTableStartAddress ;" that turns out to be negative, which is definitely not okay and causes a memory allocation error.

Also I can confirm that with this latest WolfRPG Pro version there's no separate Game.wolf file like before, the encryption key is embedded in GamePro.exe somehow. I'm afraid no current tool (neither GR nor UberWolf) has implemented a crack for this new encryption method yet.

If someone can share this latest paid version of WolfRPG 3.396 Pro Editor, then I might be able to disassemble and reverse engineer the method from the exe, but it's going to take a while.

ps: I have found the game on pixeldrain .

EDIT: the latest UberWolf release is 0.3.1, but it looks like the which already has this address encryption. So you have to compile UberWolf from the latest source and it will be able to decrypt this game file. I'll look into adding this to GR as well, will take a few days.
 
Last edited:

Hentfreak7

Newbie
Feb 19, 2023
16
7
This is definitely something new. It was created using WolfRPG 3.396, and looks like all the Address fields in the dx8 header are encrypted. I've never seen an encrypted dx8 header before (only dx6 header was encrypted, but the dev had removed that because the encryption key could be easily deducted that way, that's why GR does too btw.)

A dx8 header should be like:
Code:
00000000  44 58 08 00 90 71 01 00  40 00 00 00 00 00 00 00  |DX...q..@.......|
00000010  e4 4f c4 0b 00 00 00 00  60 81 00 00 00 00 00 00  |.O......`.......|
00000020  50 6f 01 00 00 00 00 00  a4 03 00 00 00 00 3a 01  |Po............:.|
00000030  0c 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  94 d6 09 9f d2 71 78 64  c6 9e ca 01 34 77 13 cd  |.....qxd....4w..|
But it is like:
Code:
00000000  44 58 08 00 d4 3c 05 00  a7 41 f5 7b e9 4f f8 53  |DX...<...A.{.O.S|
00000010  0a 88 18 68 43 65 c3 54  87 18 68 42 2b 07 ce 33  |...hCe.T..hB+..3|
00000020  90 15 f1 6b ad 07 6e 48  a4 03 00 00 00 00 4b 01  |...k..nH......K.|
00000030  0c fc 82 50 33 57 72 c3  59 ab 65 55 98 47 c2 eb  |...P3Wr.Y.eU.G..|
00000040  38 08 9f 7b e6 e2 33 76  91 35 6b 41 41 a6 12 d8  |8..{..3v.5kAA...|
The first two bytes is the magic (DX), then version on two bytes (8.0). After that the file index size (HeadSize) on 4 bytes, and 0x53cd4 (343252 bytes) seems about right, but the offset fields after that (8 bytes each) definitely not right, those are bigger than the file size. The CharCodeFormat and Flags are unencrypted again. So when dxlib calculates the required memory as "HuffHeadSize = size - Head.FileNameTableStartAddress ;" that turns out to be negative, which is definitely not okay and causes a memory allocation error.

Also I can confirm that with this latest WolfRPG Pro version there's no separate Game.wolf file like before, the encryption key is embedded in GamePro.exe somehow. I'm afraid no current tool (neither GR nor UberWolf) has implemented a crack for this new encryption method yet.

If someone can share this latest paid version of WolfRPG 3.396 Pro Editor, then I might be able to disassemble and reverse engineer the method from the exe, but it's going to take a while.

ps: I have found the game on pixeldrain .

EDIT: the latest UberWolf release is 0.3.1, but it looks like the which already has this address encryption. So you have to compile UberWolf from the latest source and it will be able to decrypt this game file. I'll look into adding this to GR as well, will take a few days.
Thank you for the time you spend on my issue.
I am not sure what i just read but i still aprecciate it.

I think i will just wait for you to update your tool.

Since you are so tech-savvy i have one unrelated question.

Do you have any insight on how to make Google translate batch translate a whole doujinishi?
So far i i always have to go page by page (another way is to use Sugoi Manga Premium translator, but that costs and the Text detection is worse than google.).
 

justaplayer69

Member
Nov 29, 2023
183
214
Thank you for the time you spend on my issue.
I am not sure what i just read but i still aprecciate it.
TL;DR give a try to the latest UberWolf until I add this to GR.

Do you have any insight on how to make Google translate batch translate a whole doujinishi?
So far i i always have to go page by page (another way is to use Sugoi Manga Premium translator, but that costs and the Text detection is worse than google.).
Nope. You'd need to have some scripting skills to grab the texts from the game, then use googletrans python library to translate them and put the translated texts back.

Otherwise there are some tools (like Translator++ or MTool) that support multiple engines and may also be capable to call Google Translate and put the texts back, but in general there's usually a specific tool for each engine (like SLR, unrenpy -t, the Autotranslator BepInEx plugin for Unity, etc.) which usually requires a certain level of tech-knowledge to use.

Look around on this forum, you might find a free tool for a specific engine, but IMHO give up on finding a single-click bulk translation tool, as those are tend to be non-free (as in proprietary and as paid). Which is understandable because it is a hell lot of work to create such tool.
 

justaplayer69

Member
Nov 29, 2023
183
214
New release, 1.5!

Windows: https://attachments.f95zone.to/2024/12/4366418_gameripper-windows.zip
Linux: https://attachments.f95zone.to/2024/12/4366422_gameripper-linux.zip
Source: https://attachments.f95zone.to/2024/12/4366424_gameripper-src.zip
Repo: gitlab.com/gameripper/gameripper

Changelog:

- Support for latest WolfPRG Pro encryption
- Ripping images and audio from Unity games
- Minor RPGMV map fixes
- Sprites and maps are now sorted by name

I've implemented the latest WRPG encryption, and tested with Princess Colosseum 2, works perfectly. It is also supposed to work when there's a key file (Game.wolf), however I couldn't find any such games so this is untested for now (works with older WRPG Pro, so should work with new encryption as well).

Unity was a PITA to implement. Tested with UnityFS 6,7,8; Unity Assets 12 to 22; and a quite a lot of Unity revisions, latest being 2022.3.34f1. Here the issue is, some game files have a type node tree which is used to decypher the data, but some games don't. For the latter, I've implemented some heuristics and some sane built-in defaults, but if you download the dump file matching the game's revision into the game's folder from , then GR will use that dump file, and with this feature it will work with any future Unity releases as well.

Also there's a PITA with Unity textures. GR can decode most formats on its own (including RGB with ints, floats, half-floats, YUY2, DXT1/3/5, BC4/5 etc.) with just its C code, but specifically CRN (crunch) and some other formats requires a C++ compiler. Source for these has been added in the UT2D directory. If someone is having issues compiling or linking these additional files, then "NO_CPP=1 make" will compile GR without the C++ code. This will reduce the number of supported texture formats, however you'll still be able to decode all the most common ones.

Matching tileset names now become case in-sensitive, because I've found some games where the developers forget the names of their own files, used some uppercase letters but referenced with lowercase. Because of this, map wasn't shown because the tileset couldn't be matched. This is also a very common mistake with WolfRPG games, they store tilesets in the "MapChip" folder, but reference them as "Mapchip" (note the lowercase "c"). Anyway, this is now workarounded, hopefully no more missing tiles on maps.

I've also made the sprites sorted by name, because lots of WolfRPG games does not use a spritesheet, rather store frames on separate sprites, and if these are unsorted, it's difficult to merge them into a single animation with SHIFT+Click.

That's all folks!
 
  • Like
Reactions: CAT0X0 and rzerces

PastPurchase

New Member
Sep 28, 2017
10
53
New release, 1.5!

Windows: https://attachments.f95zone.to/2024/12/4366418_gameripper-windows.zip
Linux: https://attachments.f95zone.to/2024/12/4366422_gameripper-linux.zip
Source: https://attachments.f95zone.to/2024/12/4366424_gameripper-src.zip
Repo: gitlab.com/gameripper/gameripper

Changelog:

- Support for latest WolfPRG Pro encryption
- Ripping images and audio from Unity games
- Minor RPGMV map fixes
- Sprites and maps are now sorted by name

I've implemented the latest WRPG encryption, and tested with Princess Colosseum 2, works perfectly. It is also supposed to work when there's a key file (Game.wolf), however I couldn't find any such games so this is untested for now (works with older WRPG Pro, so should work with new encryption as well).

Unity was a PITA to implement. Tested with UnityFS 6,7,8; Unity Assets 12 to 22; and a quite a lot of Unity revisions, latest being 2022.3.34f1. Here the issue is, some game files have a type node tree which is used to decypher the data, but some games don't. For the latter, I've implemented some heuristics and some sane built-in defaults, but if you download the dump file matching the game's revision into the game's folder from , then GR will use that dump file, and with this feature it will work with any future Unity releases as well.

Also there's a PITA with Unity textures. GR can decode most formats on its own (including RGB with ints, floats, half-floats, YUY2, DXT1/3/5, BC4/5 etc.) with just its C code, but specifically CRN (crunch) and some other formats requires a C++ compiler. Source for these has been added in the UT2D directory. If someone is having issues compiling or linking these additional files, then "NO_CPP=1 make" will compile GR without the C++ code. This will reduce the number of supported texture formats, however you'll still be able to decode all the most common ones.

Matching tileset names now become case in-sensitive, because I've found some games where the developers forget the names of their own files, used some uppercase letters but referenced with lowercase. Because of this, map wasn't shown because the tileset couldn't be matched. This is also a very common mistake with WolfRPG games, they store tilesets in the "MapChip" folder, but reference them as "Mapchip" (note the lowercase "c"). Anyway, this is now workarounded, hopefully no more missing tiles on maps.

I've also made the sprites sorted by name, because lots of WolfRPG games does not use a spritesheet, rather store frames on separate sprites, and if these are unsorted, it's difficult to merge them into a single animation with SHIFT+Click.

That's all folks!
sorry if this is such a noob question... but how do you run this??
 

justaplayer69

Member
Nov 29, 2023
183
214
sorry if this is such a noob question... but how do you run this??
Just download the zip and extract it somewhere, no installation required and no dlls, it is a single exe file. Preferred location is "C:\Program Files (x86)\GAME RIPPER", but could be anything.

After that to run, just
1. click on "gameripper.exe"
2. drag'n'drop the game's folder you want to rip on its window, that's all.

More sophisticated way is:
1. right-click on "gameripper.exe", choose "Create Shortcut"
2. right-click on the shortcut, choose "Properties"
3. in the "Target" field, add command line options, then press "OK"
4. after this to run GAME RIPPER with the specified options, click on the shortcut

Example command line flag: "gameripper.exe -v" (verbose mode, saves detailed log to gameripper.log file, also displays it when you quit).

But you don't need the shortcut for simple ripping, just click on "gameripper.exe".
 

PastPurchase

New Member
Sep 28, 2017
10
53
Just download the zip and extract it somewhere, no installation required and no dlls, it is a single exe file. Preferred location is "C:\Program Files (x86)\GAME RIPPER", but could be anything.

After that to run, just
1. click on "gameripper.exe"
2. drag'n'drop the game's folder you want to rip on its window, that's all.

More sophisticated way is:
1. right-click on "gameripper.exe", choose "Create Shortcut"
2. right-click on the shortcut, choose "Properties"
3. in the "Target" field, add command line options, then press "OK"
4. after this to run GAME RIPPER with the specified options, click on the shortcut

Example command line flag: "gameripper.exe -v" (verbose mode, saves detailed log to gameripper.log file, also displays it when you quit).

But you don't need the shortcut for simple ripping, just click on "gameripper.exe".
Thank you!
 

justaplayer69

Member
Nov 29, 2023
183
214
This worked when both WolfDec and UberWolf did not. Awesome release
Thanks! I'm glad GR worked for you!

I might have added some key finding heuristics and also fixed some DXALib bugs, but the real credit still due to Sinflower, WolfDec's and UberWolf's original author. I couldn't make GR without his awesome project. Big kudos to him!
 
  • Like
Reactions: CrazedApple

Mod Learner

Member
Dec 1, 2019
365
251
Hi,

I'm a lazy guy and I got fed up how complicated game ripping is. Each engine needs different tools, different dependencies,
different framework etc. etc. etc. It's not easy at least to say. So I put together a simple solution, which you might find
useful as well.


EDIT: due to issues with the git provider, repo moved to gitlab.com/gameripper/gameripper

This asset viewer and ripper is easy to use (just drag'n'drop a game folder on its window) and supports the most common game
engines that f95zone games use (including Ren'Py, RPGM MZ/MV, PGMMV, WolfRPG, Godot, Kirikiri, Unity). No dependencies, no MSVC
redistrib DLLs, no Python, no electron, no headaches, just a single executable that works out-of-the-box. Oh, and on Linux too!

You can download it from here:
- Windows:
- Linux:

Full source is included, available at gitlab.com/gameripper/gameripper. Let me know what you think! It just an early version,
but good enough to show you and get some feedback. It's pretty usable already.

Features:
- encryption key autodetection (even for Godot , WolfRPG Pro and ZipCrypto)
- unpack and deobfuscate all assets with a single click
- automatically convert obscure formats (like TLG5 / TLG6 or Unity CRN to PNG)
- convert sprite sheets into animations and save as animated GIF
- display maps and save in PNG or Tiled Mapmaker TMX formats
- extract / import translatable text in CSV and PO formats
- ...etc. things like that.

If you run into any games that are not decrypted automatically or not detected correctly, let me know and I'll try to take a look.
View attachment 4340678
Great tool but can you change the color into back/white instead violet? It's really hurt my eyes try to read the text...
 

justaplayer69

Member
Nov 29, 2023
183
214
Great tool but can you change the color into back/white instead violet? It's really hurt my eyes try to read the text...
No can do sorry.

These are not just some ad-hoc colors, and you must be very young if you don't recognize this particular color combination. Here:
wp8578244.jpg
the authentic RGB color codes of that machine's . However that's true that the same color perceived differently on an old CRT monitor and on modern LED monitor due to technological differences ( ).
PS: if you wonder why that machine, that's because I saw my first H-game on that machine :)
 
  • Like
Reactions: rzerces

WaltS

Si vis pacem para bellum
Donor
Apr 4, 2018
2,141
2,627
No can do sorry.

These are not just some ad-hoc colors, and you must be very young if you don't recognize this particular color combination. Here:
View attachment 4370434
the authentic RGB color codes of that machine's . However that's true that the same color perceived differently on an old CRT monitor and on modern LED monitor due to technological differences ( ).
PS: if you wonder why that machine, that's because I saw my first H-game on that machine :)
Run,8

:)

(I know, the syntax most probably is wrong but after 40 years I don't care)
 
  • Haha
Reactions: pepplez

justaplayer69

Member
Nov 29, 2023
183
214
Merry XMAS! I wish lots of KFC chickens to you and to your waifu!

New release, 1.6 is here as Santa's present!

Windows: https://attachments.f95zone.to/2024/12/4399620_gameripper-windows.zip
Linux: https://attachments.f95zone.to/2024/12/4399621_gameripper-linux.zip
Source: https://attachments.f95zone.to/2024/12/4399622_gameripper-src.zip
Repo: gitlab.com/gameripper/gameripper

Changelog:
- Unity added FSB5 and compressed streaming block support in bundles, Texture2DArray and more audio support
- Unreal Engine support (UE4, UE5 paks, encrypted, compressed (all except Oodle), encryption key autodetection from the exe)
- Game Maker Studio support (GMS1, 1.4 and 2+, QOI, 2ZOQ images, animation support)
- New decompressors: bzip2, LZ4, Zstd
- Considerably increased speed when saving large PNG files (above 2048 x 2048, in exchange for bad compression ratio)
- I did not wanted to change the palette, but I've increased the contrast between the foreground and background blue

For Unity, it can now read streaming compressed files as well. FSB5 sound bank works as well, with all audio formats except OGG. If an FSB5 file contains ogg, there'll be a warning to install (FSB5 does not actually store the ogg data, just a checksum, and you'd need a several megabytes of database to look up the ogg stream using that checksum. Speaking about messed up formats, this is so wrong on so many levels).

For Unreal, streaming compression also supported, as well as encrypted data and encrypted index too. If the autodetected encryption key doesn't work (some pak files might use a different key), then place a "keys.txt" file in the game directory. In this text file each line should contain a base64 encoded key. GR will read in all the keys and it will automatically detect which one works for a particular pak file. This works great, only one configuration (no index encryption, just compressed data encryption) might result in false positive, otherwise (in encrypted index case, or with encrypted data without compression) key is always found reliably.

As for Unreal compression, I've implemented all, except Oodle. Those RAD guys are incompetent idiots, their code is crap. I've managed to clean up it a bit so that it now compiles under Linux with GNU toolchain, but I cannot statically link it with GR because it has way too many C++ dependencies. If anyone can make it to work, let me know, here's the source: (this source isn't public, RAD is ashamed of its poor quality I guess, at least they should be, so I had to use as base).

Game Maker Studio has a very great container format, it was a delight after Unreal's mess... Archives can be embedded in exe files (as long as they're not compressed) or in Android APK (compression supported). Special GMS asset formats (like 2ZOI and GMS-variant of QOI) are also supported either in archives or as plain simple files (when they often have ".yytex" or similar extension). As a bonus, animations are parsed as well, so you can save animated GIFs from GMS games!

That's all folks!
 

justaplayer69

Member
Nov 29, 2023
183
214
no way to extract the images here ....
No wonder, this game does not use images. It looks like it is using polygons with vertex colors only.

a Wolf RPG game roughly 3 Gb.
This means nothing. WolfRPG uses an archive with LZ compression and Huffman encoding. Then images are further compressed in PNG, JPEG or WEBP files. This all doesn't matter, because by the end of the day the actual required memory is: number of images * width in pixels * height in pixels * 4.
my PC ran out of memory despite sitting at 50gb free. It bloated pagefile and kept on going.
Does your machine have 64GB RAM? If so, then it is unlikely that it will ever use a pagefile.
I'm not sure if it's a known issue or been fixed in the more recent versions, but wanted to report it to you.
Thank you for the report, but please always use the latest version. A lot has changed, specially I have fixed some DXLib bugs and added some failsafes.

I haven't checked this game in particular yet (still downloading), but the latest WolfRPG Pro encryption (which now encrypts the uncompressed sizes) might caused old GR versions to report "Out of memory". This has been surely fixed in the latest GR.

Also, try running with the "-d" flag. This will extract all files from the DX archives, but only one file at a time, and it will not decode images, just save them as-is.

EDIT: download finished. I can confirm that this game is poorly written, all image layers, even if it just contains a few pixels (like an eyelash) are still saved as a full sized image with insane amount of transparent pixels. So yeah, "Out of memory" is a perfectly valid error message for this game if you try to rip all of its assets at once.

Solutions:
- drap'n'drop __only one__ .wolf file at a time into GR (not the folder, just one file)
- using "-d" also works. This will directly extract the images to "Data\(archive)\*.png" without decoding.
 
Last edited:

whitemage88

Newbie
Jul 25, 2020
26
16
Solutions:
- drap'n'drop __only one__ .wolf file at a time into GR (not the folder, just one file)
- using "-d" also works. This will directly extract the images to "Data\(archive)\*.png" without decoding.
That would do it, thanks.
Do you have any plans to add SRPG studio support? ( .dts files ).
 

null_lambda

New Member
Apr 15, 2022
5
1
I'm really surprised by how much memory use in WolfRPG game files. (64gb paged, my poor ssd suffers).

1736042332084.png

I've tried decompressing, but it doesn't really increase the game size much (it's more cluster lost space). Do you think there might be an option in the GUI to load the data in a temporary physical location instead of RAM (pagefile), or a way to free memory every time it processes a wolf file? I'm still learning, but it seems like wolf files have no correlation, with each one being its own container.

he processed file is 2.27 GB in only wolf file (the total game size is 4.20 GB in wolf files). I did a lot of tests before because the program crashed, which was easy. I think I wrote 300 GB in paging ram)

The game in question is this:
ハルキの最大の敵は理性 (Two beasts or Not to Beast!!)

here's a link to the game file (Only the last link works, the others are down, and this version is special because the whole game is compressed in wolf files; the later versions, released after this one, have half of the files decrypted, so the game ripper works in those versions).
https://f95zone.to/threads/tl-reque...rukino-no-ha-tokinokogiri.75755/post-15627396 (Only the last link works, the others are down.)

By the way, it should also pass the high ram consumption in the demo version of the game (1.40gb in wolf files).

 
5.00 star(s) 1 Vote