Hacking Borderlands 3 Switch pak file — custom/obfuscated FPakEntry format?

supakiat2018

Member
Newcomer
Joined
Jun 1, 2025
Messages
5
Reaction score
0
Trophies
0
XP
120
Country
United States
I'm trying to extract pakchunk14-Switch.pak from Borderlands 3 Ultimate Edition (Switch) for a fan translation project.

Confirmed so far:
- The AES key I have (UUoXdq2EdP+HPkZDcmvn55pGmbgCoKnlfZ434yIXhVU=, base64) is 100% correct — successfully decrypts the mount point and full file list in the index, readable as plain text
- Pak version = 6 (DeleteRecords)
- The footer is shorter than spec — missing the bEncryptedIndex/EncryptionKeyGuid fields that version 6 should normally have

The problem:
- Tried repak, unpak, and QuickBMS (unreal_tournament_4.bms, both v0.4.25 and v0.4.26c) — none of them can extract it, even with the correct key
- Measured the raw bytes from the unencrypted per-file duplicate header (embedded before each file's data) and found records are only ~38 bytes (.uasset) or 18 bytes (.uexp) — much shorter than the standard FPakEntry struct (Offset/Size/UncompressedSize as int64 + 20-byte Hash should be 45+ bytes minimum)
- Partially decrypted actual file data and found the C1832A9E magic tag for .uasset plus LegacyFileVersion = -7, confirming the decryption direction is correct, but I can't pin down the exact field/chunk boundaries

Relevant precedent:
Found a similar case with the Dragon Quest 11 Demo (UE 4.18.3, pak version 4), where the compression method flag was deliberately obfuscated (0x3 for Oodle misread as Zlib by UnrealPak because it only checks 0x3 & 0x1 == 1), and the Oodle table byte order was flipped specifically to break QuickBMS/UnrealPak detection (ref: gbatemp.net thread 546613). Wondering if BL3 Switch uses a similar deliberate obfuscation trick, possibly done by Panic Button (the studio that did the Switch port).

Main questions:
1. Have you seen Borderlands 3 Switch (or other Panic Button ports) use a shortened/custom FPakEntry like this before?
2. Is there an existing QuickBMS script or tool that already supports this format?
3. If not, is there a general pattern Panic Button tends to use across their other ports that I could compare against?
 

Attachments

I remember this being unique to Borderlands 3.

Dragon Quest 11 was a special case because it was using Oodle when Unreal Engine version they used didn't support it yet, which means it was a custom implementation.
 
I remember this being unique to Borderlands 3.

Dragon Quest 11 was a special case because it was using Oodle when Unreal Engine version they used didn't support it yet, which means it was a custom implementation.
Thanks for confirming! Since this seems unique to BL3, do you happen to know if anyone has documented the actual custom FPakEntry structure they use, or is this still unreverse-engineered territory? Any pointers on where to look would be hugely appreciated.
 
There are mods for Borderlands 3 Switch version, so someone definitely did, but i can't say who or where are those files.
 
There are mods for Borderlands 3 Switch version, so someone definitely did, but i can't say who or where are those files.
That's great to know it's been done before! Do you know what kind of mods exist for BL3 Switch (texture replacements, save editors, translation patches, etc)? That might help me figure out which modding community/Discord to search in for the actual pak extraction method.
 

Site & Scene News

Popular threads in this forum