Example #1
0
def get_type11(addr, pos):
    arg0 = pykd.loadWStr(addr + get_uint32(pos))
    arg1 = get_uint8(pos + 4)
    if (arg1 == 0):
        return " '%s' FALSE" % arg0
    else:
        return " '%s' TRUE" % arg0
Example #2
0
def get_type16(addr, pos):
    arg0 = pykd.loadWStr(addr + get_uint32(pos))
    arg1 = get_int16(pos + 4)
    arg2 = get_uint8(pos + 6)
    if (arg2 == 0):
        return " '%s' %d FALSE" % (arg0, arg1)
    else:
        return " '%s' %d TRUE" % (arg0, arg1)
Example #3
0
def print_info(indent_level, addr, pfnc, func_id):

    name_pos = get_uint32(pfnc)
    stack = get_uint32(pfnc + 4)

    if (func_id):
        if (name_pos):
            name = pykd.loadWStr(addr + name_pos)
            pprint(
                indent_level, "Function %d ('%s') [max stack = %u]:" %
                (func_id, name, stack))
        else:
            pprint(indent_level,
                   "Function %d [max stack = %u]:" % (func_id, stack))
    else:
        pprint(indent_level, "Global code [max stack = %u]:" % stack)

    indent_level += 1

    flags = get_uint32(pfnc + 44)

    if (flags):

        string = "flags     = (%04lX)" % flags

        if (flags & 0x8000):
            string += " noconnect"

        if (flags & 0x4000):
            string += " sub"

        if (flags & 0x2000):
            string += " explicit"

        if (flags & 2):
            string += " private"

        pprint(indent_level, string)

    arg_count = get_int16(pfnc + 36)
    arg_addr = pfnc + 48

    if (func_id or arg_count > 0):
        print_list(indent_level, addr, "arg", arg_count, arg_addr, -1)

    lcl_count = get_int16(pfnc + 38)
    lcl_addr = arg_addr + 8 * arg_count

    if (func_id or lcl_count > 0):
        print_list(indent_level, addr, "lcl", lcl_count, lcl_addr, 1)

    tmp_count = get_int16(pfnc + 40)

    if (tmp_count > 0):
        print_list(indent_level, addr, "tmp", tmp_count, 0, 1)
Example #4
0
def print_list(indent_level, addr, kind, count, list_ptr, start_id):

    pprint(indent_level, "%s count = %d" % (kind, count))

    if (list_ptr):

        indent_level += 1

        for i in range(count):

            name_pos = get_uint32(list_ptr + 8 * i)
            flags = get_uint32(list_ptr + 8 * i + 4)

            if (start_id):
                string = "%s %3d =" % (kind, start_id * (i + 1))
            else:
                string = "%s =" % kind

            if (start_id >= 0):

                if (start_id):
                    string += "    "

                elif (flags & 2):
                    string += " pri"

                else:
                    string += " pub"

            elif (flags & 0x200):
                string += " ref"

            else:
                string += " val"

            if (flags & 0x100):
                string += " Variant ()"
            else:
                string += " Variant   "

            string += " '%s'" % pykd.loadWStr(addr + name_pos)

            pprint(indent_level, string)
def _data_area_id_from_context(base_address):
    data_area_id_addr = base_address + 600
    return loadWStr(data_area_id_addr)
def _user_id_from_context(base_address):
    user_id_addr = base_address + 348
    return loadWStr(user_id_addr)
Example #7
0
 def is_ustr(clx, addr):
     try:
         pykd.loadWStr(addr)
     except:
         return False
     return True
Example #8
0
def lstr(addr):
    # print(pykd.loadCStr(addr))
    print(pykd.loadWStr(addr))
def _meta_object_name_of_frame(frame):
    name_addr = ptrPtr(_meta_object_addr_of_frame(frame) + 16)
    if isValid(name_addr):
        return loadWStr(name_addr)
    else:
        return ''
 def testCStr(self):
     self.assertEqual('Hello', pykd.loadCStr(target.module.helloStr))
     self.assertEqual(u'Hello', pykd.loadWStr(target.module.helloWStr))
Example #11
0
def _data_area_id_from_context(base_address):
    data_area_id_addr = base_address + 600
    return loadWStr(data_area_id_addr)
Example #12
0
def get_type6(addr, pos):
    arg0 = pykd.loadWStr(addr + get_uint32(pos))
    return " '%s'" % arg0
Example #13
0
def get_type14(addr, pos):
    arg0 = pykd.loadWStr(addr + get_uint32(pos))
    arg1 = get_int16(pos + 4)
    arg2 = get_int16(pos + 6)
    return " '%s' %d %d" % (arg0, arg1, arg2)
Example #14
0
def get_type12(addr, pos):
    arg0 = pykd.loadWStr(addr + get_uint32(pos))
    arg1 = get_uint16(pos + 4)
    return " '%s' %d" % (arg0, arg1)
def _client_name_from_context(base_address):
    client_name_addr = base_address + 764
    return loadWStr(client_name_addr)
def _meta_object_name_of_frame(frame):
    name_addr = ptrPtr(_meta_object_addr_of_frame(frame) + 16)
    if isValid(name_addr):
        return loadWStr(name_addr)
    else:
        return ''
Example #17
0
def _user_id_from_context(base_address):
    user_id_addr = base_address + 348
    return loadWStr(user_id_addr)
def _method_name_of_raw_frame(frame):
    name_addr = ptrPtr(frame.stackOffset + 8)
    return loadWStr(name_addr)
Example #19
0
def _client_name_from_context(base_address):
    client_name_addr = base_address + 764
    return loadWStr(client_name_addr)
Example #20
0
 def get_wide_string(self, addr):
     return pykd.loadWStr(addr)
 def testBigCStr(self):
     self.assertEqual(
         0x2000, len(pykd.loadCStr(pykd.ptrPtr(target.module.bigCStr))))
     self.assertEqual(
         0x2000, len(pykd.loadWStr(pykd.ptrPtr(target.module.bigWStr))))
def _method_name_of_raw_frame(frame):
    name_addr = ptrPtr(frame.stackOffset + 8)
    return loadWStr(name_addr)