https://github.com/vaibhavpandeyvpz/unpaker
A comprehensive C# library and desktop application for reading and writing Unreal Engine 4 Pak archive files, compatible with GTA:III, GTA:VC, and GTA:SA Definitive Editions.
https://github.com/vaibhavpandeyvpz/unpaker
grant-then-auto gta gta-definitive-edition gta-iii gta-modding-tools gta-mods gta-san-andreas gta-vice-city gtasa gtavc pak ue4 unreal unreal-engine unrealengine
Last synced: about 5 hours ago
JSON representation
A comprehensive C# library and desktop application for reading and writing Unreal Engine 4 Pak archive files, compatible with GTA:III, GTA:VC, and GTA:SA Definitive Editions.
- Host: GitHub
- URL: https://github.com/vaibhavpandeyvpz/unpaker
- Owner: vaibhavpandeyvpz
- License: mit
- Created: 2025-11-30T17:02:21.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-12-02T04:17:26.000Z (6 months ago)
- Last Synced: 2026-05-01T23:08:05.469Z (about 1 month ago)
- Topics: grant-then-auto, gta, gta-definitive-edition, gta-iii, gta-modding-tools, gta-mods, gta-san-andreas, gta-vice-city, gtasa, gtavc, pak, ue4, unreal, unreal-engine, unrealengine
- Language: C#
- Homepage: https://vaibhavpandey.com/gtamodding/
- Size: 708 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Unpaker
[](https://github.com/vaibhavpandeyvpz/unpaker/actions/workflows/ci.yml)
[](https://opensource.org/licenses/MIT)
[](https://www.nuget.org/packages/Unpaker)
[](https://dotnet.microsoft.com/)
[](https://github.com/vaibhavpandeyvpz/unpaker/releases)
A comprehensive C# library and desktop application for reading and writing Unreal Engine 4 Pak archive files, compatible with GTA:III, GTA:VC, and GTA:SA Definitive Editions.

## Features
### Library (`Unpaker`)
- **Full Pak Format Support**: Supports Pak versions V0 through V11
- **Compression**: Supports multiple compression algorithms including Zlib, Gzip, Oodle, Zstd, and LZ4
- **Encryption**: AES-256 encryption support for pak indices and file data
- **Reading**: Extract files from existing pak archives
- **Writing**: Create new pak archives with customizable options
- **Mount Points**: Support for custom mount point paths
- **Path Hash Seeds**: Support for v10+ pak files with path hash seeds
### Command-Line Interface (`Unpaker.CLI`)
- **List**: View contents of pak files
- **Extract**: Extract files from pak archives
- **Create**: Create new pak archives from directories
- **Add**: Add files to existing pak archives
- **Info**: Display detailed information about pak files
### Desktop Application (`Unpaker.Desktop`)
- **Modern Dark UI**: Beautiful dark theme with GTA:VC-inspired accent colors
- **File Management**: View, add, remove, and extract files from pak archives
- **Search**: Real-time search filtering by file name or path
- **Batch Operations**: Extract multiple files or all files at once
- **Pak Creation**: Create new pak archives with customizable options:
- Version selection (V0-V11)
- Compression method selection (Zlib, Gzip, Oodle, Zstd, LZ4)
- AES-256 encryption support
- Custom mount points
- **Detailed Information**: View pak file metadata including version, compression, mount point, and encryption status
- **Context Menu**: Right-click support for quick file operations
## Installation
### Requirements
- .NET 8.0 SDK or later (for building from source)
- Windows (for desktop application)
### Pre-built Binaries
#### Desktop Application
Download the latest release from [GitHub Releases](https://github.com/vaibhavpandeyvpz/unpaker/releases) and extract `Unpaker.Desktop.exe`. The native Oodle library (`oo2core_9_win64.dll`) is included for Oodle compression support.
#### Command-Line Interface
Download the latest release from [GitHub Releases](https://github.com/vaibhavpandeyvpz/unpaker/releases) and extract `Unpaker.CLI.exe`. The native Oodle library (`oo2core_9_win64.dll`) is included for Oodle compression support.
### NuGet Package (Library)
Install the library via NuGet Package Manager or using the .NET CLI:
```bash
dotnet add package Unpaker
```
Or using Package Manager Console:
```
Install-Package Unpaker
```
#### Oodle Compression Support
To enable Oodle compression/decompression in your application, download the `oo2core_9_win64.dll` from the [Oodle SDK](http://www.radgametools.com/oodle.htm) and place it in your application's output directory (same folder as your executable). Oodle support requires .NET 8.0 or later.
### Building from Source
```bash
# Clone the repository
git clone https://github.com/vaibhavpandeyvpz/unpaker.git
cd unpaker
# Build the solution
dotnet build
# Run the desktop application
cd Unpaker.Desktop
dotnet run
# Or build the CLI
cd Unpaker.CLI
dotnet run -- --help
```
## Usage
### Desktop Application
1. Launch `Unpaker.Desktop.exe`
2. Click **Open** to load an existing pak file
3. Use the toolbar buttons to:
- **New**: Create a new pak archive
- **Open**: Open an existing pak file
- **Save/Save As**: Save changes to pak files
- **Add**: Add files to the pak
- **Remove**: Remove files from the pak
- **Extract**: Extract selected files
- **Extract All**: Extract all files
- **Reload**: Reload the current pak file
### Command-Line Interface
```bash
# List contents of a pak file
unpaker list path/to/file.pak
# Extract all files
unpaker extract path/to/file.pak --output ./extracted/
# Extract specific files
unpaker extract path/to/file.pak --output ./extracted/ --files file1.txt file2.txt
# Create a new pak file with Zlib compression
unpaker create --output new.pak --input ./source/ --version V11 --compression Zlib
# Create a new pak file with Oodle compression
unpaker create --output new.pak --input ./source/ --version V11 --compression Oodle
# Add files to existing pak
unpaker add existing.pak --input ./newfiles/
# Get pak file information
unpaker info path/to/file.pak
```
## Project Structure
```
unpaker/
├── Unpaker/ # Core library
├── Unpaker.CLI/ # Command-line interface
├── Unpaker.Desktop/ # WPF desktop application
└── Unpaker.Tests/ # Unit tests
```
## Supported Games
- Grand Theft Auto: III - Definitive Edition
- Grand Theft Auto: Vice City - Definitive Edition
- Grand Theft Auto: San Andreas - Definitive Edition
## Development
### Running Tests
```bash
dotnet test
```
### Code Structure
- **Unpaker**: Core library containing Pak reading/writing logic
- **Unpaker.CLI**: Command-line interface using System.CommandLine
- **Unpaker.Desktop**: WPF application with MVVM pattern
- **Unpaker.Tests**: Comprehensive unit tests including real pak file validation
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Author
**Vaibhav Pandey (VPZ)**
- Website: https://vaibhavpandey.com/
- YouTube: https://www.youtube.com/channel/UC5uV1PRvtnNj9P8VfqO93Pw
- GitHub: [@vaibhavpandeyvpz](https://github.com/vaibhavpandeyvpz)
- Email: contact@vaibhavpandey.com
## Acknowledgments
All game names and logos are property of their respective owners and are used for illustration purposes only.
## Support
For issues, feature requests, or questions, please open an issue on [GitHub Issues](https://github.com/vaibhavpandeyvpz/unpaker/issues).