From 35be4c5a84b73e6f47792ddf1cf02b26d94a0545 Mon Sep 17 00:00:00 2001 From: Mike Auty Date: Sun, 28 Jan 2018 16:25:16 +0000 Subject: [PATCH] Add in more information to the paged exceptions. --- volatility/framework/exceptions.py | 2 ++ volatility/framework/layers/intel.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/volatility/framework/exceptions.py b/volatility/framework/exceptions.py index 5e3bfa1dd..2bbab63c7 100644 --- a/volatility/framework/exceptions.py +++ b/volatility/framework/exceptions.py @@ -37,9 +37,11 @@ class PagedInvalidAddressException(InvalidAddressException): layer_name: str, invalid_address: int, invalid_bits: int, + entry: int, *args) -> None: super().__init__(layer_name, invalid_address, *args) self.invalid_bits = invalid_bits + self.entry = entry class InvalidDataException(VolatilityException): diff --git a/volatility/framework/layers/intel.py b/volatility/framework/layers/intel.py index c08bc3f84..cf72a0ffc 100644 --- a/volatility/framework/layers/intel.py +++ b/volatility/framework/layers/intel.py @@ -108,7 +108,7 @@ class Intel(interfaces.layers.TranslationLayerInterface): for (name, size, large_page) in self._structure: # Check we're valid if not self._page_is_valid(entry): - raise exceptions.PagedInvalidAddressException(self.name, offset, position + 1, + raise exceptions.PagedInvalidAddressException(self.name, offset, position + 1, entry, "Page Fault at entry " + hex(entry) + " in table " + name) # Check if we're a large page if large_page and (entry & (1 << 7)): @@ -130,7 +130,7 @@ class Intel(interfaces.layers.TranslationLayerInterface): # Now we're done if not self._page_is_valid(entry): - raise exceptions.PagedInvalidAddressException(self.name, offset, position + 1, + raise exceptions.PagedInvalidAddressException(self.name, offset, position + 1, entry, "Page Fault at entry {} in page entry".format(hex(entry))) page = self._mask(entry, self._maxphyaddr - 1, position + 1) | self._mask(offset, position, 0) return page, 1 << (position + 1), self._base_layer