64bit Crash Dumps

Crash Dumps of 32bit and 64bit versions of Microsoft Windows differ significantly. Because the market share of 64bit machines increases steadily, I decided to update my post on the Crash Dump (DMP) format.

A first and significant difference will catch your eye as soon as you view at a 64bit crash dump in a hex editor: instead of "PAGEDUMP" the file now starts with a "PAGEDU64" signature.

Signature of a 64bit crash dump

Not surprisingly addresses now are 64 bit wide. So in comparison to the 32bit header some fields were shifted.

OffsetTypeFieldRemarks
0x000charSignature[4]'PAGE'
0x004charValidDump[4]'DU64'
0x008uint32MajorVersion
0x00cuint32MinorVersionWindows build no.
0x010uint64DirectoryTableBase
0x018uint64PfnDataBase
0x020uint64PsLoadedModuleList
0x028uint64PsActiveProcessHead
0x030uint32MachineImageType
0x034uint32NumberProcessors
...
0x088charPhysicalMemoryBlock[0x80]
...
0xf98uint32DumpType1 = full dump, 2 = kernel dump (smaller)
...
0xfa0int64SystemUpTimemeasured in units of 100 ns
0xfa8int64SystemTimeFILETIME

The PhysicalMemoryBlock now contains up to 7 runs (in contrast to 4 in the 32bit format).

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

These fields and some more can be parsed with ease by means of a template for the 010 Editor. Here is an example of a 64bit file header:

64bit file header parsed by the 010 Editor template

Thanks go to "blufferisme", who provided me with some information on the file format.

Archives

Imprint

This blog is a project of:
Andreas Schuster
Im Äuelchen 45
D-53177 Bonn
impressum@forensikblog.de

Copyright © 2005-2012 by
Andreas Schuster
All rights reserved.
Powered by Movable Type 5.12