roms.zak Extractor is a Windows utility for automatically decrypting and extracting supported roms.zak archives by analyzing a corresponding main_uncompressed file.The application performs the required analysis internally.
Features
- Analyzes main_uncompressed automatically
- Detects the information required to decrypt supported roms.zak files
- Supports ARM64-based key analysis
- Supports ChaCha20 decryption
- Supports two-stage LZ4 decompression
- Parses and extracts supported ZAK archives
- Lets you choose the extraction destination
- Supports drag and drop
- Shows extraction progress with a green progress meter
- Displays a real-time processing log
- Automatically opens the extracted folder after completion
- Supports multiple UI languages
- Automatically selects the language based on the Windows system language
- Allows manual language switching
- High-DPI-aware interface
- Available in both 32-bit and 64-bit versions
Downloads
https://github.com/yyoossk/roms.zak-Extractor/releasesRequirements
To extract a supported roms.zak archive, you need:main_uncompressed
roms.zak
You must also select an extraction destination folder.
No external archive extraction tool is required.
What Is main_uncompressed?
main_uncompressed is an uncompressed executable image obtained from the main executable.The application analyzes this file to locate the information required to decrypt the associated roms.zak archive.
The decryption information is handled internally.
Basic Usage
- Start roms.zak Extractor.
- Select or drag and drop main_uncompressed.
- Select or drag and drop roms.zak.
- Select the extraction destination.
- Click Extract.
- Wait for the extraction process to finish.
- The extracted folder opens automatically when the operation completes.
Drag and Drop
The application supports drag and drop.You can drag the following items directly onto the corresponding fields:
- main_uncompressed
- roms.zak
- Extraction destination folder
ARM64 Analysis
The application does not simply search for one hard-coded decryption key.Instead, it analyzes ARM64 executable code and data references inside main_uncompressed.
The analyzer can inspect patterns such as:
- ADR
- ADRP
- ADD
- LDR
- LDP
- Register moves
- PC-relative data references
- Indirect pointer references
- Split constant data
32 bytes
16 bytes + 16 bytes
8 bytes + 8 bytes + 8 bytes + 8 bytes
A candidate is not accepted only because it looks like a key.
The application verifies it against the selected roms.zak.
Extraction Destination
You can select any writable folder as the extraction destination.After successful extraction, the application creates:
roms_extracted
The extracted folder is automatically opened in Windows File Explorer after completion.
Extraction Safety
The application includes checks intended to reduce unsafe archive extraction behavior.Examples include protection against:
- ../ path traversal
- Absolute paths
- Invalid Windows file paths
- Excessively deep directory structures
- Invalid file offsets
- Invalid file sizes
- Invalid archive entry counts
- Invalid LZ4 sizes
- Extraction outside the selected destination
Language Support
The application automatically selects its language based on the Windows system language.The language can also be changed manually from the Language menu.
Supported languages include:
- Japanese
- English
- Simplified Chinese
- Traditional Chinese
- Korean
- German
- French
- Spanish
- Italian
- Portuguese
- Russian
High-DPI Support
The interface is designed to work with common Windows display scaling settings.Examples include:
- 100%
- 125%
- 150%
- 175%
- 200%
Supported Builds
Two Windows builds are provided.| Build | Architecture | Notes |
|---|---|---|
| Standard | x86 / 32-bit | Also works on most 64-bit Windows systems through WOW64 |
| x64 | x86-64 / 64-bit | Recommended for modern 64-bit Windows systems |
File Locations
The files do not need to be stored together.For example:
C:\Tools\main_uncompressed
D:\GameData\roms.zak
E:\Extracted\
is supported.
The application handles the selected paths automatically.
Troubleshooting
The Application Cannot Analyze main_uncompressed
The selected file may use an unsupported implementation.The current analyzer focuses on supported ARM64-based implementations and attempts to recover the required decryption data from executable code and constants.
A significantly different implementation may require additional analysis support.
roms.zak Cannot Be Decrypted
Check that:- main_uncompressed belongs to the same title and version as roms.zak
- roms.zak is not corrupted
- The selected files are complete
- The title uses a supported archive implementation
Extraction Starts but Fails During LZ4 Decompression
This usually means one of the following:- The decryption information is incorrect
- The archive format differs from the currently supported format
- The file is damaged or incomplete
ZAK Validation Fails
The application only continues when the decoded data matches a valid supported ZAK structure.If validation fails, extraction is stopped instead of writing potentially invalid data.
The Extracted Folder Already Exists
The application uses a safe staging process when replacing existing extraction results.New extraction data is prepared before the existing result is replaced where possible.
Frequently Asked Questions
Is the key hard-coded into the application?
No.The current implementation analyzes main_uncompressed and validates candidate data against the selected roms.zak.
Can main_uncompressed and roms.zak be stored on different drives?
Yes.Does the application modify main_uncompressed?
No.It is read as an input file.
Does the application modify roms.zak?
No.The original archive is read as input.
Does every roms.zak use the same format?
Not necessarily.Different titles or versions may use different encryption, key-loading, nonce-generation, compression, or archive implementations.
The application can only extract implementations that it currently understands.
Known Limitations
- ARM64 key analysis cannot guarantee support for every implementation.
- Titles using a different encryption algorithm may not be supported.
- Titles using a substantially different nonce-generation method may require additional support.
- Different compression layers may require additional implementation.
- Different ZAK formats or revisions may require parser updates.
- Highly obfuscated or dynamically generated key material may not be recoverable using the current static analysis method.
Current Supported Processing Model
The currently supported processing model includes:ARM64 analysis
+
ChaCha20
+
LZ4
+
LZ4
+
ZAK
Support can be expanded in future versions as additional implementations are analyzed.
Disclaimer
This project is intended for research, interoperability, preservation, and analysis of files that you legally own or are authorized to access.No copyrighted game files are included.
Users are responsible for ensuring that their use of this software complies with applicable laws, licenses, and local regulations.






