params: portval - core.value representation of 'ipc_port *' object
returns: str - string of kobject information
"""
- kobject_str = "{0: <#020x}".format(portval.kdata.kobject)
io_bits = unsigned(portval.ip_object.io_bits)
- objtype_index = io_bits & 0x7ff
+ if io_bits & 0x400 :
+ kobject_val = portval.kdata.kolabel.ikol_kobject
+ else:
+ kobject_val = portval.kdata.kobject
+ kobject_str = "{0: <#020x}".format(kobject_val)
+ objtype_index = io_bits & 0x3ff
if objtype_index < len(xnudefines.kobject_types) :
objtype_str = xnudefines.kobject_types[objtype_index]
if objtype_str == 'IOKIT_OBJ':
- iokit_classnm = GetObjectTypeStr(portval.kdata.kobject)
+ iokit_classnm = GetObjectTypeStr(kobject_val)
if not iokit_classnm:
iokit_classnm = "<unknown class>"
else:
else:
desc_str = "kobject({0:s})".format(objtype_str)
if xnudefines.kobject_types[objtype_index] in ('TASK_RESUME', 'TASK'):
- desc_str += " " + GetProcNameForTask(Cast(portval.kdata.kobject, 'task *'))
+ desc_str += " " + GetProcNameForTask(Cast(kobject_val, 'task *'))
else:
desc_str = "kobject(UNKNOWN) {:d}".format(objtype_index)
return kobject_str + " " + desc_str