import pymem

pm = pymem.Pymem(43084)
base = 0x7ff6afc20000

def get_rtti_name(vt_rva):
    vt_addr = base + vt_rva
    try:
        col = pm.read_ulonglong(vt_addr - 8)
        td_offset = pm.read_uint(col + 12)
        td_addr = base + td_offset
        raw = pm.read_bytes(td_addr + 16, 64)
        name = raw.split(b'\x00')[0].decode('ascii', errors='ignore')
        return name
    except Exception as e:
        return f"Error: {e}"

for rva in [0x2fcbc78, 0x2f7ff20, 0x2f9e910, 0x2f9e428]:
    print(f"RVA {hex(rva)} -> RTTI: {get_rtti_name(rva)}")
