PAK · pacchetti di risorse
Contenitore di risorse con un’intestazione di 40 byte e una directory i cui nomi condividono prefissi tra le voci.
Edizione documentata: Imperivm HD · Documentazione parziale
A cosa serve
Sezione intitolata “A cosa serve”Un file .pak raggruppa file di risorse. Qui l’estensione indica il contenitore HMMSYS PackFile di Imperivm; altri giochi usano formati diversi con la stessa estensione PAK.
La firma completa occupa 18 byte: il testo HMMSYS PackFile seguito da un a capo, dal byte 26 e da un byte zero. Identifica il contenitore prima di interpretarne la directory.
Intestazione
Sezione intitolata “Intestazione”LE significa little-endian. Le posizioni di questa tabella sono offset all’interno del file, contati da zero.
| Posizione in byte | Dimensione | Contenuto |
|---|---|---|
| 0 | 18 byte | Firma HMMSYS PackFile e i suoi tre byte finali |
| 18 | 14 byte | Area il cui significato completo non è documentato qui |
| 32 | uint32 LE | Numero di voci |
| 36 | uint32 LE | Lunghezza della directory in byte |
| 40 | Variabile | Inizio della directory |
Voci della directory
Sezione intitolata “Voci della directory”Ricostruisci il nome con il prefisso indicato del nome precedente seguito dal suffisso attuale. Non sommare a Offset il campo in posizione 36: quel campo misura la directory e gli offset delle voci sono assoluti.
- TotalLen: un byte con la lunghezza totale del nome.
- PrefixLen: un byte con la lunghezza del prefisso condiviso con il nome precedente.
- Suffix: TotalLen − PrefixLen byte con la parte restante del nome.
- Offset: intero little-endian a 32 bit con la posizione assoluta dei dati della voce nel file PAK.
- Size: intero little-endian a 32 bit con la dimensione della voce.
Quando ispezioni o estrai
Sezione intitolata “Quando ispezioni o estrai”- Controlla la firma e che l’intestazione sia completa.
- Convalida lunghezze e posizioni prima di leggere ogni voce; non accettare un prefisso più lungo del nome precedente.
- Controlla che Offset e Size descrivano un intervallo interno al file.
- In estrazione, conserva la gerarchia relativa e rifiuta percorsi assoluti o risalite con .. fuori dalla cartella di destinazione.
Limiti noti
Sezione intitolata “Limiti noti”Questa scheda descrive l’intestazione, la forma della directory e l’interpretazione attuale dei suoi offset. Non è una specifica completa del comportamento con file danneggiati né di ogni possibile variante.
L’area tra la fine della directory e la prima voce non è caratterizzata qui. Non è documentata nemmeno una procedura completa di reimpacchettamento compatibile con il gioco.