def _get_user_lvar_settings(ea):
     dct = {}
     lvinf = ida_hexrays.lvar_uservec_t()
     if ida_hexrays.restore_user_lvar_settings(lvinf, ea):
         dct['lvvec'] = []
         for lv in lvinf.lvvec:
             dct['lvvec'].append(HexRaysHooks._get_lvar_saved_info(lv))
         dct['sizes'] = list(lvinf.sizes)
         dct['lmaps'] = []
         it = ida_hexrays.lvar_mapping_begin(lvinf.lmaps)
         while it != ida_hexrays.lvar_mapping_end(lvinf.lmaps):
             key = ida_hexrays.lvar_mapping_first(it)
             key = HexRaysHooks._get_lvar_locator(key)
             val = ida_hexrays.lvar_mapping_second(it)
             val = HexRaysHooks._get_lvar_locator(val)
             dct['lmaps'].append((key, val))
             it = ida_hexrays.lvar_mapping_next(it)
         dct['stkoff_delta'] = lvinf.stkoff_delta
         dct['ulv_flags'] = lvinf.ulv_flags
     return dct
Example #2
0
def _get_user_lvar_settings(ea):
    dct = {}
    lvinf = ida_hexrays.lvar_uservec_t()
    if ida_hexrays.restore_user_lvar_settings(lvinf, ea):
        dct["lvvec"] = []
        for lv in lvinf.lvvec:
            dct["lvvec"].append(_get_lvar_saved_info(lv))
        if hasattr(lvinf, "sizes"):
            dct["sizes"] = list(lvinf.sizes)
        dct["lmaps"] = []
        it = ida_hexrays.lvar_mapping_begin(lvinf.lmaps)
        while it != ida_hexrays.lvar_mapping_end(lvinf.lmaps):
            key = ida_hexrays.lvar_mapping_first(it)
            key = _get_lvar_locator(key)
            val = ida_hexrays.lvar_mapping_second(it)
            val = _get_lvar_locator(val)
            dct["lmaps"].append((key, val))
            it = ida_hexrays.lvar_mapping_next(it)
        dct["stkoff_delta"] = lvinf.stkoff_delta
        dct["ulv_flags"] = lvinf.ulv_flags
    return dct