Playstation Vita File Formats

Edit on Github | Updated: 1st June 2021

When reverse engineering Playstation Vita games you will come across a number of different file formats, this post will explain all the file formats and how to use them.

Package files

Package files are ways to distribute the full games to be installed on Playstation Vita consoles, the contains all the assets and executables required to run the game.

PKG - Official Sony Package Files

The games available on the Vita shop comes in an encrypted .PKG format along with a user-specific license. In order to disassemble/decompile or modify games they need to be decrypted 1.

For details of the file format used for these packages see this page on the excellent PSDevWiki: PKG files - PS3 Developer wiki

Extracting PKG files

If you would like to extract a Vita PKG file you can use the tool called PkgDecrypt: GitHub - st4rk/PkgDecrypt: Decrypts PS Vita PKG files

You can run it like so, to run through any PKG files in the same directory and output to a folder called output:

./pkg_dec *.pkg ./output

Note that this will extract the files but not decrypt them!

Decrypting PKG Files

After extracting with PkgDecrypt you will notice that none of the files seem to work, PNG files don’t display etc. This is because they are still encrypted even although they have been extracted. In order to decrypt these files you need to get PsVpFsTools and run a command like so:

./psvpfsparser -i output -o output_dec -f cma.henkaku.xyz -z YOUR_LICENSE_KEY

You can generate YOUR_LICENSE_KEY if you don’t already have it by getting work.bin and running make_key which is a tool that comes withPkgDecrypt :

./make_key work.bin

VPK - Vita Package file

Vita Package Files (.VPK) are the format for distributing homebrew applications and some extracted pirate un-encrypted game dumps created by a (now-deprecated) Homebrew tool called Vitamin (Created by TheFloW).

Mai - MaiDumpTool Packages

Mai packages are created by a Homebrew tool called MaiDumpTool which is a tool used to backup and decrypt Playstation Vita Games into a Mai package.

The Vita Pirate community has moved away from VPK and Mai to use the Official PKG files with a plugin called NONPDRM.


Executable files

Executable files are where all the game code is stored in binary and can be disassembled or decompiled to show the inner workings of a game or application.

SELF - Signed ELF executables

SELF files are the main executables that run on the Playstation Vita and PS3, it is a Sony specific extension of the well known ELF (Executable and Linkable Format) file format that is used on many other systems (Linux, PS2, Gamecube..) 2.

Extract ELF from SELF

You need to build vita-unmake-fself from

./vita-unmake-fself eboot.bin

SPRX - Signed Playstation Relocatable eXecutable

SPRX files are basically dynamic libraries similar to DLL files on Windows, Dylib files on OSX and IRX files on Playstation 2.


Archive files

PSARC - Playstation Archive (PS3/Vita)

In order to extract a psarc file you can use the following tool: paul-hedrick/psarc

/psarc -x data.arc

Asset Files

GXT - Game Texture

GXT - Vita Dev Wiki


Terminology

This section contains a definition of terminology you might see related to the file formats listed in this page.

Relocations/Relocs

Relocations are the metadata used to boot the dumped game and are generated by MaiDumpTool but not Vitamin when dumping PS Vita games. Single SELF format executables do not have the relocations required to boot most games but the EBOOT.BIN files contains the relocation data.


References