Skip to content

Commit 6babe15

Browse files
committed
Address feedback
1 parent b78b7a5 commit 6babe15

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

volatility3/framework/plugins/windows/dumpfiles.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ def get_requirements(cls) -> List[interfaces.configuration.RequirementInterface]
4747
requirements.ListRequirement(
4848
name="virtaddr",
4949
element_type=int,
50-
description="Dump a single _FILE_OBJECT at this virtual address",
50+
description="Dump the _FILE_OBJECTs at the given virtual address(es)",
5151
optional=True,
5252
),
5353
requirements.ListRequirement(
5454
name="physaddr",
5555
element_type=int,
56-
description="Dump a single _FILE_OBJECT at this physical address",
56+
description="Dump a single _FILE_OBJECTs at the given physical address(es)",
5757
optional=True,
5858
),
5959
requirements.StringRequirement(
@@ -320,25 +320,24 @@ def _generator(self, procs: List, offsets: List):
320320
)
321321

322322
elif offsets:
323+
virtual_layer_name = kernel.layer_name
323324

324-
# Now process any offsets explicitly requested by the user.
325+
#FIXME - change this after standard access to physical layer
326+
physical_layer_name = self.context.layers[virtual_layer_name].config[
327+
"memory_layer"
328+
]
329+
330+
# Now process any offsets explicitly requested by the user.
325331
for offset, is_virtual in offsets:
326332
try:
327-
layer_name = kernel.layer_name
328-
# switch to a memory layer if the user provided --physaddr instead of --virtaddr
329-
if not is_virtual:
330-
layer_name = self.context.layers[layer_name].config[
331-
"memory_layer"
332-
]
333-
334333
file_obj = self.context.object(
335334
kernel.symbol_table_name + constants.BANG + "_FILE_OBJECT",
336-
layer_name=layer_name,
337-
native_layer_name=kernel.layer_name,
335+
layer_name=virtual_layer_name if is_virtual else physical_layer_name,
336+
native_layer_name=virtual_layer_name,
338337
offset=offset,
339338
)
340339
for result in self.process_file_object(
341-
self.context, kernel.layer_name, self.open, file_obj
340+
self.context, virtual_layer_name, self.open, file_obj
342341
):
343342
yield (0, result)
344343
except exceptions.InvalidAddressException:
@@ -362,11 +361,11 @@ def run(self):
362361
for virtaddr in self.config["virtaddr"]:
363362
offsets.append((virtaddr, True))
364363

365-
elif self.config.get("physaddr"):
364+
if self.config.get("physaddr"):
366365
for physaddr in self.config["physaddr"]:
367366
offsets.append((physaddr, False))
368367

369-
else:
368+
if not offsets:
370369
filter_func = pslist.PsList.create_pid_filter(
371370
[self.config.get("pid", None)]
372371
)

0 commit comments

Comments
 (0)