What you did ended up doing in the editbox plugin seems reasonable. I
had to do something similar to fix the --fix parameter to dlldump and
procdump. Problem was for wow64 processes, Volatility was using
_IMAGE_OPTIONAL_HEADER64 and not the _IMAGE_OPTIONAL_HEADER (32-bit
version). At this location in the code, we had a pointer to the PE
header but not the _EPROCESS structure so I couldn't use the IsWow64
method. Instead, I checked the _OPTIONAL_HEADER.Magic value and compared
with IMAGE_NT_OPTIONAL_HDR32_MAGIC...and if so I casted the image header
to the 32-bit version.
https://github.com/volatilityfoundation/volatility/commit/c6841586ccbba2f3f…
Cheers,
MHL
On 5/20/16 5:03 PM, Bridgey theGeek wrote:
  Hi all,
 Wondering if anybody's come across this scenario...
 I want to read an address from my_offset:
 my_address = obj.Object('address', offset=my_offset, vm=task_vm)
 However, for Wow64 the address should only be 4 bytes, but because we're
 analysing with a 64-bit profile, 'address' will cause 8 bytes to be
 parsed (right?).
 Do I need to replace it with something like:
 if profile_is_32bit or process_is_wow64:
     my_address = obj.Object('unsigned long', offset=my_offset, vm=task_vm)
 else:
     my_address = obj.Object('unsigned long long', offset=my_offset,
 vm=task_vm)
 Or do I need to start manually unpacking structs?
 Thanks,
 Adam
 _______________________________________________
 Vol-users mailing list
 Vol-users(a)volatilityfoundation.org
 
http://lists.volatilityfoundation.org/mailman/listinfo/vol-users