Support the new HMAP_ENTRY structure for Win10.

This commit is contained in:
Mike Auty
2017-10-09 01:40:37 +01:00
parent 3f70ee92be
commit c09ce60f73
3 changed files with 11 additions and 1 deletions
+1 -1
View File
@@ -141,7 +141,7 @@ class RegistryHive(interfaces.layers.TranslationLayerInterface):
table = storage.Map.Directory[dir_index]
entry = table.Table[table_index]
return entry.BlockAddress + suboffset
return entry.helper_block_offset + suboffset
def mapping(self, offset, length, ignore_errors = False):
@@ -18,6 +18,7 @@ class WindowsKernelIntermedSymbols(intermed.IntermediateSymbolTable):
self.set_type_class('_CMHIVE', registry._CMHIVE)
self.set_type_class('_CM_KEY_NODE', registry._CM_KEY_NODE)
self.set_type_class('_CM_KEY_VALUE', registry._CM_KEY_VALUE)
self.set_type_class('_HMAP_ENTRY', registry._HMAP_ENTRY)
@classmethod
def get_requirements(cls):
@@ -23,6 +23,15 @@ class RegValueTypes(enum.Enum):
REG_QWORD = 11
class _HMAP_ENTRY(objects.Struct):
@property
def helper_block_offset(self):
try:
return self.PermanentBinAddress ^ (self.PermanentBinAddress & 0x3)
except AttributeError:
return self.BlockAddress
class _CMHIVE(objects.Struct):
@property
def helper_name(self):