Zurück zu allen Beiträgen

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.