Ir al contenido
Colaborar

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

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.

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

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.
  • 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.

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.

Proponer una descripción mejor

Escribe cómo explicarías esta entrada. Tu propuesta quedará en un buzón privado, pendiente de revisión.

0 / 4000

Las propuestas no se publican automáticamente. No incluyas datos personales en la descripción.