64bit Crash Dumps

Die Crash Dumps der 32bit- und der 64bit-Versionen von Microsoft Windows unterscheiden sich deutlich. Da 64bit-Maschinen immer häufiger anzutreffen sind, gebe ich in diesem Beitrag einige Hinweise zur Struktur der zugehörigen Crash Dumps.

Der erste Unterschied springt zumindest bei der Betrachtung im Hexeditor sofort ins Auge: statt mit "PAGEDUMP" beginnen die Dateien jetzt mit der Signatur "PAGEDU64":

Signatur eines 64bit Crash Dumps

Eine weitere bedeutende Änderung besteht darin, dass Adressen nun natürlich als 64bit-Zahlen angegeben werden. Gegenüber dem 32bit-Header gibt es deshalb einige Verschiebungen.

OffsetTypFeldBemerkungen
0x000charSignature[4]'PAGE'
0x004charValidDump[4]'DU64'
0x008uint32MajorVersion
0x00cuint32MinorVersionNummer der Windows Build
0x010uint64DirectoryTableBase
0x018uint64PfnDataBase
0x020uint64PsLoadedModuleList
0x028uint64PsActiveProcessHead
0x030uint32MachineImageType
0x034uint32NumberProcessors
...
0x088charPhysicalMemoryBlock[0x80]
...
0xf98uint32DumpType1 = full dump, 2 = kernel dump (kleiner)
...
0xfa0int64SystemUpTimegemessen in Einheiten zu 100 ns
0xfa8int64SystemTimeFILETIME

Der PhysicalMemoryBlock enthält in der 64bit-Version bis zu 7 Runs (4 in der 32bit-Version).

typedef struct {
	uint64				BasePage;
	uint64				PageCount;
} _PHYSICAL_MEMORY_RUN64;

typedef struct { uint64 NumberOfRuns; uint64 NumberOfPages; _PHYSICAL_MEMORY_RUN64 Run[NumberOfRuns]; } _PHYSICAL_MEMORY_DESCRIPTOR64;

Diese und einige Werte mehr kann das Template für den 010 Editor parsen. Der folgende Screenshot zeigt ein Beispiel:

Das Template für den 010 Editor interpretiert den 64bit-Header

Für Hinweise zum Datenformat danke ich "blufferisme".

Archiv

Impressum

Dieses Blog ist ein Projekt von:
Andreas Schuster
Im Äuelchen 45
D-53177 Bonn
impressum@forensikblog.de

Copyright © 2005-2012 by
Andreas Schuster
Alle Rechte vorbehalten.
Powered by Movable Type 5.12