PAK · paquetes de recursos
Contenedor de recursos con una cabecera de 40 bytes y un directorio de nombres que comparte prefijos entre entradas.
Edición documentada: Imperivm HD · Documentación parcial
Para qué sirve
Sección titulada «Para qué sirve»Un archivo .pak reúne archivos de recursos. La extensión identifica aquí el contenedor HMMSYS PackFile de Imperivm; no debe confundirse con otros formatos PAK que usan juegos distintos.
La firma completa ocupa 18 bytes: el texto HMMSYS PackFile seguido de salto de línea, el byte 26 y el byte cero. Identificar el contenedor es el primer paso antes de interpretar su directorio.
Cabecera
Sección titulada «Cabecera»LE significa little-endian. Las posiciones de esta tabla son desplazamientos dentro del archivo, contados desde cero.
| Posición en bytes | Tamaño | Contenido |
|---|---|---|
| 0 | 18 bytes | Firma HMMSYS PackFile y sus tres bytes finales |
| 18 | 14 bytes | Zona cuyo significado completo no se documenta aquí |
| 32 | uint32 LE | Número de entradas |
| 36 | uint32 LE | Longitud en bytes del directorio |
| 40 | Variable | Comienzo del directorio |
Entradas del directorio
Sección titulada «Entradas del directorio»La reconstrucción del nombre utiliza el prefijo indicado del nombre anterior y añade el sufijo de la entrada actual. No sumes el campo de la posición 36 a Offset: ese campo mide el directorio y los offsets de las entradas son absolutos.
- TotalLen: 1 byte con la longitud total del nombre.
- PrefixLen: 1 byte con la longitud del prefijo compartido con el nombre anterior.
- Suffix: TotalLen − PrefixLen bytes con la parte restante del nombre.
- Offset: entero de 32 bits little-endian con la posición absoluta de los datos en el archivo PAK.
- Size: entero de 32 bits little-endian con el tamaño de la entrada.
Al consultar o extraer
Sección titulada «Al consultar o extraer»- Comprueba la firma y que el archivo contenga la cabecera completa.
- Valida longitudes y posiciones antes de leer cada entrada; no aceptes un prefijo mayor que el nombre anterior.
- Comprueba que Offset y Size describan un rango contenido en el archivo.
- Al extraer, conserva la jerarquía relativa y rechaza rutas absolutas o recorridos mediante .. fuera del directorio de salida.
Límites conocidos
Sección titulada «Límites conocidos»Esta ficha describe la cabecera, la forma del directorio y la interpretación actual de sus offsets. No es una especificación completa del comportamiento ante archivos dañados ni de todas las variantes posibles.
El contenido de la zona entre el final del directorio y la primera entrada no queda caracterizado aquí. Tampoco se documenta un proceso completo de reempaquetado compatible con el juego.