) Don't expect an
immediate fix, but just wanted you to know it will get addressed...
MHL
On Fri, Apr 19, 2013 at 10:07 AM, Michael Hale Ligh
<michael.hale(a)gmail.com>wrote:
Hey Carl,
Another way to try would be:
profile.merge_overlay({
'XXX' : [ None, ['array', 4, ['Flags', dict(target =
'unsigned long',
bitmap = { 'A': 0, 'B': 1, 'C': 2 })]]],
})
In that case, Struct.XXX[0] should be the first element in the array which
is a Flags type. However, I ran into similar errors as you did, and I'm not
entirely sure my approach would produce the structure you need even if it
did work. This shows the error that I see:
>> flags = obj.Object("Array",
targetType = "Flags", offset = address, vm
= addrspace, count = 2)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/mike/Desktop/volatility/volatility/obj.py", line 173, in
Object
result = vm.profile.types[theType](offset = offset, vm = vm, name =
name, **kwargs)
File "/Users/mike/Desktop/volatility/volatility/obj.py", line 582, in
__init__
if self.current.size() == 0:
File "/Users/mike/Desktop/volatility/volatility/obj.py", line 435, in
size
return struct.calcsize(self.format_string)
TypeError: Struct() argument 1 must be string, not Array
So just posting this here for documentation. Any other devs know why this
doesn't work or how to get around it?
MHL
On Wed, Apr 17, 2013 at 5:54 PM, Carl Pulley <c.pulley(a)acme-labs.org.uk>wrote:
Hi all,
I'm currently attempting to code up a bitmap (within an overlay) that
consists of an array of 4 ulongs.
With (say) a single ulong, the following works great:
profile.merge_overlay({
'XXX': [ None, ['Flags', {'target': 'unsigned long',
'bitmap': { 'A':
0, 'B': 1, 'C': 2 }}]]
})
However, the obvious generalisation to 4 ulongs:
profile.merge_overlay({
'XXX': [ None, ['Flags', {'target': ['array', 4,
['unsigned long']],
'bitmap': { 'A': 0, 'B': 1, 'C': 2 }}]]
})
fails. Looking at the source, the profile.merge_overlay calls:
obj.Object(['array', 4, ['unsigned long']], offset=0, ..)
and this function in turn raises an exception (i.e. TypeError: unhashable
type: 'list') when it calls:
vm.profile.has_type(['array', 4, ['unsigned long']])
Attempts at using obj.Array instead also flounder.
Does anyone have any hints or tips as to how best to deal with bitmaps
that are arrays of bytes, ulongs or similar? Is it a case of having to
extend the obj.Flags class so that such things can be handled?
Many thanks,
Carl._______________________________________________
Vol-users mailing list
Vol-users(a)volatilityfoundation.org
http://lists.volatilityfoundation.org/mailman/listinfo/vol-users