roms.zak Extractor

yyoossk

Well-Known Member
Member
Joined
Oct 18, 2017
Messages
214
Reaction score
188
Trophies
0
XP
3,087
Country
Japan
screenshot 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/releases



Requirements​

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​

  1. Start roms.zak Extractor.
  2. Select or drag and drop main_uncompressed.
  3. Select or drag and drop roms.zak.
  4. Select the extraction destination.
  5. Click Extract.
  6. Wait for the extraction process to finish.
  7. 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
The input files and extraction destination do not need to be located in the same directory or on the same drive. The entire process is handled automatically.



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
The application can reconstruct candidate key material from patterns such as:

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
Existing extraction data is handled carefully so that a failed extraction is less likely to overwrite valid output.



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%
Manual Windows High DPI compatibility overrides should normally not be required.



Supported Builds​

Two Windows builds are provided.

BuildArchitectureNotes
Standardx86 / 32-bitAlso works on most 64-bit Windows systems through WOW64
x64x86-64 / 64-bitRecommended 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
If no candidate passes ChaCha20, LZ4, and ZAK validation, extraction is stopped.



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
Check the real-time log for more information.



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.
 

Site & Scene News

Popular threads in this forum