MAM-Kompression im Detail
Eine .pf-Datei aus Windows XP ist denkbar einfach: öffnen, an Offset
null den SCCA-Header lesen und von dort weiter parsen. Wirft man
dieselbe .pf-Datei aus Windows 10 in denselben Parser, kommt Unsinn
heraus. Der Grund heißt MAM.
Das MAM-Framing
Seit Windows 8 komprimiert das Betriebssystem jede Prefetch-Datei, bevor sie auf die Platte geschrieben wird. Die komprimierte Datei beginnt mit einem acht Byte langen Framing-Header:
offset size field
0 3 ASCII signature "MAM"
3 1 compression algorithm (0x04 = Xpress Huffman)
4 4 uncompressed payload size (u32 little-endian)
8 … compressed payload
Das Byte direkt nach MAM identifiziert den Kompressionsalgorithmus
des restlichen Dateiinhalts. Microsoft definiert fünf Algorithmen in
der Familie COMPRESSION_FORMAT_*; Prefetch verwendet ausschließlich
Xpress Huffman (0x04). Das Feld für die unkomprimierte Größe
teilt dem Dekompressor mit, wie groß der Ausgabe-Buffer sein muss.
Xpress Huffman in einem Absatz
Xpress Huffman ist eine blockorientierte LZ77-Variante. Jeder Block
beginnt mit einer Huffman-Alphabettabelle mit 256 Einträgen — ein
Nibble pro Symbol —, die Literal-Byte-Codes für 0..255 sowie
Match-Längen-Codes definiert. Der kodierte Stream wird als Huffman-Code
gelesen; jedes Symbol erzeugt entweder ein Literal-Byte oder
signalisiert eine Rückwärtsreferenz in den bereits dekomprimierten
Output. Das Format ist in Microsofts Open-Spec-Korpus als [MS-XCA]
dokumentiert.
Der Parser, den diese Seite verwendet (frnsc-prefetch), enthält eine
Xpress-Huffman-Dekodierung in reinem Rust, sodass die gesamte Pipeline
in einem WebAssembly-Modul laufen kann — ohne Aufruf nativer Tools und
ohne Windows-spezifische API.
Warum das wichtig ist
Werkzeuge, die nur das SCCA-Layout aus der XP-Ära kennen, lesen die
ersten drei Bytes einer Win-8+-Prefetch-Datei (MAM) und stürzen
entweder ab oder parsen stillschweigend falsch. Die Zahl forensischer
Beiträge, die noch immer den Hinweis „getestet unter Windows 7" tragen,
ist nicht gleich null. Wenn Sie Prefetch-Artefakte von einem modernen
Endpunkt sammeln und Ihre Toolchain den Dienst quittiert, lohnt sich
als Erstes die Frage, ob überhaupt ein Xpress-Huffman-Dekoder in der
Pipeline steckt.
Die gute Nachricht: Das Format hat sich seit Windows 8 nicht geändert. Sobald Ihre Toolchain die Dekompression beherrscht, funktioniert derselbe Code-Pfad bis hinauf zu Windows 11 — was sich zwischen den Versionen unterscheidet, ist der SCCA-Payload im Inneren, nicht der äußere MAM-Frame.