Memory analysis

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.

Deutsch

Deutschsprachige Ausgabe

Categories

Subscribe

Imprint

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

Copyright © 2005-2010 by
Andreas Schuster
All rights reserved.