IDAPython 8.4
Loading...
Searching...
No Matches
mba_t Class Reference

Proxy of C++ mba_t class.

Inheritance diagram for mba_t:

Public Member Functions

 __init__ (self, *args, **kwargs)
 
"bool" precise_defeas (self, *args)
 precise_defeas(self) -> bool
 
"bool" optimized (self, *args)
 optimized(self) -> bool
 
"bool" short_display (self, *args)
 short_display(self) -> bool
 
"bool" show_reduction (self, *args)
 show_reduction(self) -> bool
 
"bool" graph_insns (self, *args)
 graph_insns(self) -> bool
 
"bool" loaded_gdl (self, *args)
 loaded_gdl(self) -> bool
 
"bool" should_beautify (self, *args)
 should_beautify(self) -> bool
 
"bool" rtype_refined (self, *args)
 rtype_refined(self) -> bool
 
"bool" may_refine_rettype (self, *args)
 may_refine_rettype(self) -> bool
 
"bool" use_wingraph32 (self, *args)
 use_wingraph32(self) -> bool
 
"bool" display_numaddrs (self, *args)
 display_numaddrs(self) -> bool
 
"bool" display_valnums (self, *args)
 display_valnums(self) -> bool
 
"bool" is_pattern (self, *args)
 is_pattern(self) -> bool
 
"bool" is_thunk (self, *args)
 is_thunk(self) -> bool
 
"bool" saverest_done (self, *args)
 saverest_done(self) -> bool
 
"bool" callinfo_built (self, *args)
 callinfo_built(self) -> bool
 
"bool" really_alloc (self, *args)
 really_alloc(self) -> bool
 
"bool" lvars_allocated (self, *args)
 lvars_allocated(self) -> bool
 
"bool" chain_varnums_ok (self, *args)
 chain_varnums_ok(self) -> bool
 
"bool" returns_fpval (self, *args)
 returns_fpval(self) -> bool
 
"bool" has_passregs (self, *args)
 has_passregs(self) -> bool
 
"bool" generated_asserts (self, *args)
 generated_asserts(self) -> bool
 
"bool" propagated_asserts (self, *args)
 propagated_asserts(self) -> bool
 
"bool" deleted_pairs (self, *args)
 deleted_pairs(self) -> bool
 
"bool" common_stkvars_stkargs (self, *args)
 common_stkvars_stkargs(self) -> bool
 
"bool" lvar_names_ok (self, *args)
 lvar_names_ok(self) -> bool
 
"bool" lvars_renamed (self, *args)
 lvars_renamed(self) -> bool
 
"bool" has_over_chains (self, *args)
 has_over_chains(self) -> bool
 
"bool" valranges_done (self, *args)
 valranges_done(self) -> bool
 
"bool" argidx_ok (self, *args)
 argidx_ok(self) -> bool
 
"bool" argidx_sorted (self, *args)
 argidx_sorted(self) -> bool
 
"bool" code16_bit_removed (self, *args)
 code16_bit_removed(self) -> bool
 
"bool" has_stack_retval (self, *args)
 has_stack_retval(self) -> bool
 
"bool" has_outlines (self, *args)
 has_outlines(self) -> bool
 
"bool" is_ctr (self, *args)
 is_ctr(self) -> bool
 
"bool" is_dtr (self, *args)
 is_dtr(self) -> bool
 
"bool" is_cdtr (self, *args)
 is_cdtr(self) -> bool
 
"bool" prop_complex (self, *args)
 prop_complex(self) -> bool
 
"int" get_mba_flags (self, *args)
 get_mba_flags(self) -> int
 
"int" get_mba_flags2 (self, *args)
 get_mba_flags2(self) -> int
 
"void" set_mba_flags (self, *args)
 set_mba_flags(self, f)
 
"void" clr_mba_flags (self, *args)
 clr_mba_flags(self, f)
 
"void" set_mba_flags2 (self, *args)
 set_mba_flags2(self, f)
 
"void" clr_mba_flags2 (self, *args)
 clr_mba_flags2(self, f)
 
"void" clr_cdtr (self, *args)
 clr_cdtr(self)
 
"int" calc_shins_flags (self, *args)
 calc_shins_flags(self) -> int
 
"sval_t" stkoff_vd2ida (self, *args)
 stkoff_vd2ida(self, off) -> sval_t
 
"sval_t" stkoff_ida2vd (self, *args)
 stkoff_ida2vd(self, off) -> sval_t
 
"sval_t" argbase (self, *args)
 argbase(self) -> sval_t
 
"vdloc_t" idaloc2vd (self, *args)
 idaloc2vd(self, loc, width) -> vdloc_t
 
"argloc_t" vd2idaloc (self, *args)
 vd2idaloc(self, loc, width, spd) -> argloc_t
 
"bool" is_stkarg (self, *args)
 is_stkarg(self, v) -> bool
 
"argloc_t" get_ida_argloc (self, *args)
 get_ida_argloc(self, v) -> argloc_t
 
"bool" write_to_const_detected (self, *args)
 write_to_const_detected(self) -> bool
 
"bool" bad_call_sp_detected (self, *args)
 bad_call_sp_detected(self) -> bool
 
"bool" regargs_is_not_aligned (self, *args)
 regargs_is_not_aligned(self) -> bool
 
"bool" has_bad_sp (self, *args)
 has_bad_sp(self) -> bool
 
"void" term (self, *args)
 term(self)
 
"func_t *" get_curfunc (self, *args)
 get_curfunc(self) -> func_t *
 
"bool" use_frame (self, *args)
 use_frame(self) -> bool
 
"bool" is_snippet (self, *args)
 is_snippet(self) -> bool
 
"bool" set_maturity (self, *args)
 set_maturity(self, mat) -> bool Set maturity level.
 
"int" optimize_local (self, *args)
 optimize_local(self, locopt_bits) -> int Optimize each basic block locally
 
"merror_t" build_graph (self, *args)
 build_graph(self) -> merror_t Build control flow graph.
 
"mbl_graph_t *" get_graph (self, *args)
 get_graph(self) -> mbl_graph_t Get control graph.
 
"int" analyze_calls (self, *args)
 analyze_calls(self, acflags) -> int Analyze calls and determine calling conventions.
 
"merror_t" optimize_global (self, *args)
 optimize_global(self) -> merror_t Optimize microcode globally.
 
"void" alloc_lvars (self, *args)
 alloc_lvars(self) Allocate local variables.
 
"void" dump (self, *args)
 dump(self) Dump microcode to a file.
 
"void" dump_mba (self, *args)
 dump_mba(self, _verify, title)
 
"void" verify (self, *args)
 verify(self, always) Verify microcode consistency.
 
"void" mark_chains_dirty (self, *args)
 mark_chains_dirty(self) Mark the microcode use-def chains dirty.
 
"mblock_t *" get_mblock (self, *args)
 get_mblock(self, n) -> mblock_t
 
"mblock_t *" insert_block (self, *args)
 insert_block(self, bblk) -> mblock_t Insert a block in the middle of the mbl array.
 
"bool" remove_block (self, *args)
 remove_block(self, blk) -> bool Delete a block.
 
"mblock_t *" copy_block (self, *args)
 copy_block(self, blk, new_serial, cpblk_flags=3) -> mblock_t Make a copy of a block.
 
"bool" remove_empty_and_unreachable_blocks (self, *args)
 remove_empty_and_unreachable_blocks(self) -> bool Delete all empty and unreachable blocks.
 
"bool" combine_blocks (self, *args)
 combine_blocks(self) -> bool Combine blocks.
 
"int" for_all_ops (self, *args)
 for_all_ops(self, mv) -> int Visit all operands of all instructions.
 
"int" for_all_insns (self, *args)
 for_all_insns(self, mv) -> int Visit all instructions.
 
"int" for_all_topinsns (self, *args)
 for_all_topinsns(self, mv) -> int Visit all top level instructions.
 
"mop_t *" find_mop (self, *args)
 find_mop(self, ctx, ea, is_dest, list) -> mop_t Find an operand in the microcode.
 
"minsn_t *" create_helper_call (self, *args)
 create_helper_call(self, ea, helper, rettype=None, callargs=None, out=None) -> minsn_t Create a call of a helper function.
 
"void" get_func_output_lists (self, *args)
 get_func_output_lists(self, return_regs, spoiled, type, call_ea=BADADDR, tail_call=False) Prepare the lists of registers & memory that are defined/killed by a function
 
"lvar_t const &" arg (self, *args)
 arg(self, n) -> lvar_t
 
"ea_t" alloc_fict_ea (self, *args)
 alloc_fict_ea(self, real_ea) -> ea_t Allocate a fictional address.
 
"ea_t" map_fict_ea (self, *args)
 map_fict_ea(self, fict_ea) -> ea_t Resolve a fictional address.
 
"ivl_t const &" get_std_region (self, *args)
 get_std_region(self, idx) -> ivl_t Get information about various memory regions.
 
"ivl_t const &" get_lvars_region (self, *args)
 get_lvars_region(self) -> ivl_t
 
"ivl_t const &" get_shadow_region (self, *args)
 get_shadow_region(self) -> ivl_t
 
"ivl_t const &" get_args_region (self, *args)
 get_args_region(self) -> ivl_t
 
"ivl_t" get_stack_region (self, *args)
 get_stack_region(self) -> ivl_t
 
"void" serialize (self, *args)
 serialize(self) Serialize mbl array into a sequence of bytes.
 
"void" save_snapshot (self, *args)
 save_snapshot(self, description) Create and save microcode snapshot.
 
"mreg_t" alloc_kreg (self, *args)
 alloc_kreg(self, size, check_size=True) -> mreg_t Allocate a kernel register.
 
"void" free_kreg (self, *args)
 free_kreg(self, reg, size) Free a kernel register.
 
"bool" set_lvar_name (self, *args)
 set_lvar_name(self, v, name, flagbits) -> bool
 
"bool" set_nice_lvar_name (self, *args)
 set_nice_lvar_name(self, v, name) -> bool
 
"bool" set_user_lvar_name (self, *args)
 set_user_lvar_name(self, v, name) -> bool
 

Static Public Member Functions

"mba_t *" deserialize (*args)
 deserialize(bytes) -> mba_t Deserialize a byte sequence into mbl array.
 

Protected Member Functions

"void" _print (self, *args)
 _print(self, vp)
 
"void" _register (self, *args)
 _register(self)
 
"void" _deregister (self, *args)
 _deregister(self)
 

Properties

 thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
 mbr = property(_ida_hexrays.mba_t_mbr_get, _ida_hexrays.mba_t_mbr_set, doc=!)
 
 entry_ea = property(_ida_hexrays.mba_t_entry_ea_get, _ida_hexrays.mba_t_entry_ea_set, doc=)
 
 last_prolog_ea = property(_ida_hexrays.mba_t_last_prolog_ea_get, _ida_hexrays.mba_t_last_prolog_ea_set, doc=)
 
 first_epilog_ea = property(_ida_hexrays.mba_t_first_epilog_ea_get, _ida_hexrays.mba_t_first_epilog_ea_set, doc=)
 
 qty = property(_ida_hexrays.mba_t_qty_get, _ida_hexrays.mba_t_qty_set, doc=)
 
 npurged = property(_ida_hexrays.mba_t_npurged_get, _ida_hexrays.mba_t_npurged_set, doc=)
 
 cc = property(_ida_hexrays.mba_t_cc_get, _ida_hexrays.mba_t_cc_set, doc=)
 
 tmpstk_size = property(_ida_hexrays.mba_t_tmpstk_size_get, _ida_hexrays.mba_t_tmpstk_size_set, doc=)
 
 frsize = property(_ida_hexrays.mba_t_frsize_get, _ida_hexrays.mba_t_frsize_set, doc=)
 
 frregs = property(_ida_hexrays.mba_t_frregs_get, _ida_hexrays.mba_t_frregs_set, doc=)
 
 fpd = property(_ida_hexrays.mba_t_fpd_get, _ida_hexrays.mba_t_fpd_set, doc=)
 
 pfn_flags = property(_ida_hexrays.mba_t_pfn_flags_get, _ida_hexrays.mba_t_pfn_flags_set, doc=)
 
 retsize = property(_ida_hexrays.mba_t_retsize_get, _ida_hexrays.mba_t_retsize_set, doc=)
 
 shadow_args = property(_ida_hexrays.mba_t_shadow_args_get, _ida_hexrays.mba_t_shadow_args_set, doc=)
 
 fullsize = property(_ida_hexrays.mba_t_fullsize_get, _ida_hexrays.mba_t_fullsize_set, doc=)
 
 stacksize = property(_ida_hexrays.mba_t_stacksize_get, _ida_hexrays.mba_t_stacksize_set, doc=)
 
 inargoff = property(_ida_hexrays.mba_t_inargoff_get, _ida_hexrays.mba_t_inargoff_set, doc=)
 
 minstkref = property(_ida_hexrays.mba_t_minstkref_get, _ida_hexrays.mba_t_minstkref_set, doc=)
 
 minstkref_ea = property(_ida_hexrays.mba_t_minstkref_ea_get, _ida_hexrays.mba_t_minstkref_ea_set, doc=)
 
 minargref = property(_ida_hexrays.mba_t_minargref_get, _ida_hexrays.mba_t_minargref_set, doc=)
 
 spd_adjust = property(_ida_hexrays.mba_t_spd_adjust_get, _ida_hexrays.mba_t_spd_adjust_set, doc=)
 
 aliased_vars = property(_ida_hexrays.mba_t_aliased_vars_get, _ida_hexrays.mba_t_aliased_vars_set, doc=)
 
 aliased_args = property(_ida_hexrays.mba_t_aliased_args_get, _ida_hexrays.mba_t_aliased_args_set, doc=)
 
 gotoff_stkvars = property(_ida_hexrays.mba_t_gotoff_stkvars_get, _ida_hexrays.mba_t_gotoff_stkvars_set, doc=)
 
 restricted_memory = property(_ida_hexrays.mba_t_restricted_memory_get, _ida_hexrays.mba_t_restricted_memory_set, doc=)
 
 aliased_memory = property(_ida_hexrays.mba_t_aliased_memory_get, _ida_hexrays.mba_t_aliased_memory_set, doc=)
 
 nodel_memory = property(_ida_hexrays.mba_t_nodel_memory_get, _ida_hexrays.mba_t_nodel_memory_set, doc=)
 
 consumed_argregs = property(_ida_hexrays.mba_t_consumed_argregs_get, _ida_hexrays.mba_t_consumed_argregs_set, doc=)
 
 maturity = property(_ida_hexrays.mba_t_maturity_get, _ida_hexrays.mba_t_maturity_set, doc=)
 
 reqmat = property(_ida_hexrays.mba_t_reqmat_get, _ida_hexrays.mba_t_reqmat_set, doc=)
 
 final_type = property(_ida_hexrays.mba_t_final_type_get, _ida_hexrays.mba_t_final_type_set, doc=)
 
 idb_type = property(_ida_hexrays.mba_t_idb_type_get, _ida_hexrays.mba_t_idb_type_set, doc=)
 
 idb_spoiled = property(_ida_hexrays.mba_t_idb_spoiled_get, _ida_hexrays.mba_t_idb_spoiled_set, doc=)
 
 spoiled_list = property(_ida_hexrays.mba_t_spoiled_list_get, _ida_hexrays.mba_t_spoiled_list_set, doc=)
 
 fti_flags = property(_ida_hexrays.mba_t_fti_flags_get, _ida_hexrays.mba_t_fti_flags_set, doc=)
 
 deprecated_idb_node = property(_ida_hexrays.mba_t_deprecated_idb_node_get, _ida_hexrays.mba_t_deprecated_idb_node_set, doc=)
 
 label = property(_ida_hexrays.mba_t_label_get, _ida_hexrays.mba_t_label_set, doc=)
 
 vars = property(_ida_hexrays.mba_t_vars_get, _ida_hexrays.mba_t_vars_set, doc=)
 
 argidx = property(_ida_hexrays.mba_t_argidx_get, _ida_hexrays.mba_t_argidx_set, doc=)
 
 retvaridx = property(_ida_hexrays.mba_t_retvaridx_get, _ida_hexrays.mba_t_retvaridx_set, doc=)
 
 error_ea = property(_ida_hexrays.mba_t_error_ea_get, _ida_hexrays.mba_t_error_ea_set, doc=)
 
 error_strarg = property(_ida_hexrays.mba_t_error_strarg_get, _ida_hexrays.mba_t_error_strarg_set, doc=)
 
 blocks = property(_ida_hexrays.mba_t_blocks_get, _ida_hexrays.mba_t_blocks_set, doc=)
 
 natural = property(_ida_hexrays.mba_t_natural_get, _ida_hexrays.mba_t_natural_set, doc=)
 
 std_ivls = property(_ida_hexrays.mba_t_std_ivls_get, _ida_hexrays.mba_t_std_ivls_set, doc=)
 
 notes = property(_ida_hexrays.mba_t_notes_get, _ida_hexrays.mba_t_notes_set, doc=)
 
 occurred_warns = property(_ida_hexrays.mba_t_occurred_warns_get, _ida_hexrays.mba_t_occurred_warns_set, doc=)
 
 idb_node = property(lambda self: self.deprecated_idb_node)
 

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self,
* args,
** kwargs )

Member Function Documentation

◆ _deregister()

"void" _deregister ( self,
* args )
protected

◆ _print()

"void" _print ( self,
* args )
protected

Parameters

vp: vd_printer_t &

◆ _register()

"void" _register ( self,
* args )
protected

◆ alloc_fict_ea()

"ea_t" alloc_fict_ea ( self,
* args )

This function can be used to allocate a new unique address for a new instruction, if re-using any existing address leads to conflicts. For example, if the last instruction of the function modifies R0 and falls through to the next function, it will be a tail call: LDM R0!, {R4,R7} end of the function start of another function In this case R0 generates two different lvars at the same address:

  • one modified by LDM
  • another that represents the return value from the tail call Another example: a third-party plugin makes a copy of an instruction. This may lead to the generation of two variables at the same address. Example 3: fictional addresses can be used for new instructions created while modifying the microcode. This function can be used to allocate a new unique address for a new instruction or a variable. The fictional address is selected from an unallocated address range.
Parameters
real_ea(C++: ea_t) real instruction address (BADADDR is ok too)
Returns
: a unique fictional address

◆ alloc_kreg()

"mreg_t" alloc_kreg ( self,
* args )
Parameters
size(C++: size_t) size of the register in bytes
check_size(C++: bool) if true, only the sizes that correspond to a size of a basic type will be accepted.
Returns
: allocated register. mr_none means failure.

◆ alloc_lvars()

"void" alloc_lvars ( self,
* args )

Must be called only immediately after optimize_global(), with no modifications to the microcode. Converts registers, stack variables, and similar operands into mop_l. This call will not fail because all necessary checks were performed in optimize_global(). After this call the microcode reaches its final state.

◆ analyze_calls()

"int" analyze_calls ( self,
* args )
Parameters
acflags(C++: int) permitted actions that are necessary for successful detection of calling conventions. See Bits for analyze_calls()
Returns
: number of calls. -1 means error.

◆ arg()

"lvar_t const &" arg ( self,
* args )
Parameters
nint

◆ argbase()

"sval_t" argbase ( self,
* args )

◆ argidx_ok()

"bool" argidx_ok ( self,
* args )

◆ argidx_sorted()

"bool" argidx_sorted ( self,
* args )

◆ bad_call_sp_detected()

"bool" bad_call_sp_detected ( self,
* args )

◆ build_graph()

"merror_t" build_graph ( self,
* args )

This function may be called only once. It calculates the type of each basic block and the adjacency list. optimize_local() calls this function if necessary. You need to call this function only before MMAT_LOCOPT.

Returns
: error code

◆ calc_shins_flags()

"int" calc_shins_flags ( self,
* args )

◆ callinfo_built()

"bool" callinfo_built ( self,
* args )

◆ chain_varnums_ok()

"bool" chain_varnums_ok ( self,
* args )

◆ clr_cdtr()

"void" clr_cdtr ( self,
* args )

◆ clr_mba_flags()

"void" clr_mba_flags ( self,
* args )
Parameters
fint

◆ clr_mba_flags2()

"void" clr_mba_flags2 ( self,
* args )
Parameters
fint

◆ code16_bit_removed()

"bool" code16_bit_removed ( self,
* args )

◆ combine_blocks()

"bool" combine_blocks ( self,
* args )

This function merges blocks constituting linear flow. It calls remove_empty_and_unreachable_blocks() as well.

Returns
: true if changed any blocks

◆ common_stkvars_stkargs()

"bool" common_stkvars_stkargs ( self,
* args )

◆ copy_block()

"mblock_t *" copy_block ( self,
* args )

This function makes a simple copy of the block. It does not fix the predecessor and successor lists, they must be fixed if necessary.

Parameters
blk(C++: mblock_t *) block to copy
new_serial(C++: int) position of the copied block
cpblk_flags(C++: int) combination of Batch decompilation bits... bits
Returns
: pointer to the new copy

◆ create_helper_call()

"minsn_t *" create_helper_call ( self,
* args )
Parameters
ea(C++: ea_t) The desired address of the instruction
helper(C++: const char *) The helper name
rettype(C++: const tinfo_t *) The return type (nullptr or empty type means 'void')
callargs(C++: const mcallargs_t *) The helper arguments (nullptr-no arguments)
out(C++: const mop_t *) The operand where the call result should be stored. If this argument is not nullptr, "mov helper_call(), out" will be generated. Otherwise "call helper()" will be generated. Note: the size of this operand must be equal to the RETTYPE size
Returns
: pointer to the created instruction or nullptr if error

◆ deleted_pairs()

"bool" deleted_pairs ( self,
* args )

◆ deserialize()

"mba_t *" deserialize ( * args)
static
Parameters
bytes(C++: const uchar *) pointer to the beginning of the byte sequence.
Returns
: new mbl array

◆ display_numaddrs()

"bool" display_numaddrs ( self,
* args )

◆ display_valnums()

"bool" display_valnums ( self,
* args )

◆ dump()

"void" dump ( self,
* args )

The file will be created in the directory pointed by IDA_DUMPDIR envvar. Dump will be created only if IDA is run under debugger.

◆ dump_mba()

"void" dump_mba ( self,
* args )
Parameters
_verifybool
titlechar const *

◆ find_mop()

"mop_t *" find_mop ( self,
* args )

This function tries to find the operand that matches LIST. Any operand that overlaps with LIST is considered as a match.

Parameters
ctx(C++: op_parent_info_t *) context information for the result
ea(C++: ea_t) desired address of the operand. BADADDR means to accept any address.
is_dest(C++: bool) search for destination operand? this argument may be ignored if the exact match could not be found
list(C++: const mlist_t &) list of locations the correspond to the operand
Returns
: pointer to the operand or nullptr.

◆ for_all_insns()

"int" for_all_insns ( self,
* args )

This function visits all instruction and subinstructions.

Parameters
mv(C++: minsn_visitor_t &) instruction visitor
Returns
: non-zero value returned by mv.visit_mop() or zero

◆ for_all_ops()

"int" for_all_ops ( self,
* args )
Parameters
mv(C++: mop_visitor_t &) operand visitor
Returns
: non-zero value returned by mv.visit_mop() or zero

◆ for_all_topinsns()

"int" for_all_topinsns ( self,
* args )
Parameters
mv(C++: minsn_visitor_t &) instruction visitor
Returns
: non-zero value returned by mv.visit_mop() or zero

◆ free_kreg()

"void" free_kreg ( self,
* args )

If wrong arguments are passed, this function will generate an internal error.

Parameters
reg(C++: mreg_t) a previously allocated kernel register
size(C++: size_t) size of the register in bytes

◆ generated_asserts()

"bool" generated_asserts ( self,
* args )

◆ get_args_region()

"ivl_t const &" get_args_region ( self,
* args )

◆ get_curfunc()

"func_t *" get_curfunc ( self,
* args )

◆ get_func_output_lists()

"void" get_func_output_lists ( self,
* args )
Parameters
return_regs(C++: mlist_t *) defined regs to return (eax,edx)
spoiled(C++: mlist_t *) spoiled regs (flags,ecx,mem)
type(C++: const tinfo_t &) the function type
call_ea(C++: ea_t) the call insn address (if known)
tail_call(C++: bool) is it the tail call?

◆ get_graph()

"mbl_graph_t *" get_graph ( self,
* args )

Call build_graph() if you need the graph before MMAT_LOCOPT.

◆ get_ida_argloc()

"argloc_t" get_ida_argloc ( self,
* args )
Parameters
vlvar_t const &

◆ get_lvars_region()

"ivl_t const &" get_lvars_region ( self,
* args )

◆ get_mba_flags()

"int" get_mba_flags ( self,
* args )

◆ get_mba_flags2()

"int" get_mba_flags2 ( self,
* args )

◆ get_mblock()

"mblock_t *" get_mblock ( self,
* args )
Parameters
nint

◆ get_shadow_region()

"ivl_t const &" get_shadow_region ( self,
* args )

◆ get_stack_region()

"ivl_t" get_stack_region ( self,
* args )

◆ get_std_region()

"ivl_t const &" get_std_region ( self,
* args )

We map the stack frame to the global memory, to some unused range.

Parameters
idx(C++: memreg_index_t) enum memreg_index_t

◆ graph_insns()

"bool" graph_insns ( self,
* args )

◆ has_bad_sp()

"bool" has_bad_sp ( self,
* args )

◆ has_outlines()

"bool" has_outlines ( self,
* args )

◆ has_over_chains()

"bool" has_over_chains ( self,
* args )

◆ has_passregs()

"bool" has_passregs ( self,
* args )

◆ has_stack_retval()

"bool" has_stack_retval ( self,
* args )

◆ idaloc2vd()

"vdloc_t" idaloc2vd ( self,
* args )
Parameters
locargloc_t const &
widthint

◆ insert_block()

"mblock_t *" insert_block ( self,
* args )

The very first block of microcode must be empty, it is the entry block. The very last block of microcode must be BLT_STOP, it is the exit block. Therefore inserting a new block before the entry point or after the exit block is not a good idea.

Parameters
bblk(C++: int) the new block will be inserted before BBLK
Returns
: ptr to the new block

◆ is_cdtr()

"bool" is_cdtr ( self,
* args )

◆ is_ctr()

"bool" is_ctr ( self,
* args )

◆ is_dtr()

"bool" is_dtr ( self,
* args )

◆ is_pattern()

"bool" is_pattern ( self,
* args )

◆ is_snippet()

"bool" is_snippet ( self,
* args )

◆ is_stkarg()

"bool" is_stkarg ( self,
* args )
Parameters
vlvar_t const &

◆ is_thunk()

"bool" is_thunk ( self,
* args )

◆ loaded_gdl()

"bool" loaded_gdl ( self,
* args )

◆ lvar_names_ok()

"bool" lvar_names_ok ( self,
* args )

◆ lvars_allocated()

"bool" lvars_allocated ( self,
* args )

◆ lvars_renamed()

"bool" lvars_renamed ( self,
* args )

◆ map_fict_ea()

"ea_t" map_fict_ea ( self,
* args )

This function provides a reverse of the mapping made by alloc_fict_ea().

Parameters
fict_ea(C++: ea_t) fictional definition address
Returns
: the real instruction address

◆ mark_chains_dirty()

"void" mark_chains_dirty ( self,
* args )

Call this function is any inter-block data dependencies got changed because of your modifications to the microcode. Failing to do so may cause an internal error.

◆ may_refine_rettype()

"bool" may_refine_rettype ( self,
* args )

◆ optimize_global()

"merror_t" optimize_global ( self,
* args )

This function applies various optimization methods until we reach the fixed point. After that it preallocates lvars unless reqmat forbids it.

Returns
: error code

◆ optimize_local()

"int" optimize_local ( self,
* args )
Parameters
locopt_bits(C++: int) combination of Bits for optimize_local() bits
Returns
: number of changes. 0 means nothing changed This function is called by the decompiler, usually there is no need to call it explicitly.

◆ optimized()

"bool" optimized ( self,
* args )

◆ precise_defeas()

"bool" precise_defeas ( self,
* args )

◆ prop_complex()

"bool" prop_complex ( self,
* args )

◆ propagated_asserts()

"bool" propagated_asserts ( self,
* args )

◆ really_alloc()

"bool" really_alloc ( self,
* args )

◆ regargs_is_not_aligned()

"bool" regargs_is_not_aligned ( self,
* args )

◆ remove_block()

"bool" remove_block ( self,
* args )
Parameters
blk(C++: mblock_t *) block to delete
Returns
: true if at least one of the other blocks became empty or unreachable

◆ remove_empty_and_unreachable_blocks()

"bool" remove_empty_and_unreachable_blocks ( self,
* args )

Blocks marked with MBL_KEEP won't be deleted.

◆ returns_fpval()

"bool" returns_fpval ( self,
* args )

◆ rtype_refined()

"bool" rtype_refined ( self,
* args )

◆ save_snapshot()

"void" save_snapshot ( self,
* args )
Parameters
description(C++: const char *) char const *

◆ saverest_done()

"bool" saverest_done ( self,
* args )

◆ serialize()

"void" serialize ( self,
* args )

◆ set_lvar_name()

"bool" set_lvar_name ( self,
* args )
Parameters
vlvar_t &
namechar const *
flagbitsint

◆ set_maturity()

"bool" set_maturity ( self,
* args )
Parameters
mat(C++: mba_maturity_t) new maturity level
Returns
: true if it is time to stop analysis Plugins may use this function to skip some parts of the analysis. The maturity level cannot be decreased.

◆ set_mba_flags()

"void" set_mba_flags ( self,
* args )
Parameters
fint

◆ set_mba_flags2()

"void" set_mba_flags2 ( self,
* args )
Parameters
fint

◆ set_nice_lvar_name()

"bool" set_nice_lvar_name ( self,
* args )
Parameters
vlvar_t &
namechar const *

◆ set_user_lvar_name()

"bool" set_user_lvar_name ( self,
* args )
Parameters
vlvar_t &
namechar const *

◆ short_display()

"bool" short_display ( self,
* args )

◆ should_beautify()

"bool" should_beautify ( self,
* args )

◆ show_reduction()

"bool" show_reduction ( self,
* args )

◆ stkoff_ida2vd()

"sval_t" stkoff_ida2vd ( self,
* args )
Parameters
offsval_t

◆ stkoff_vd2ida()

"sval_t" stkoff_vd2ida ( self,
* args )
Parameters
offsval_t

◆ term()

"void" term ( self,
* args )

◆ use_frame()

"bool" use_frame ( self,
* args )

◆ use_wingraph32()

"bool" use_wingraph32 ( self,
* args )

◆ valranges_done()

"bool" valranges_done ( self,
* args )

◆ vd2idaloc()

"argloc_t" vd2idaloc ( self,
* args )
Parameters
locvdloc_t const &
widthint
spdsval_t

vd2idaloc(self, loc, width) -> argloc_t

Parameters
locvdloc_t const &
widthint

◆ verify()

"void" verify ( self,
* args )
Parameters
always(C++: bool) if false, the check will be performed only if ida runs under debugger If any inconsistency is discovered, an internal error will be generated. We strongly recommend you to call this function before returing control to the decompiler from your callbacks, in the case if you modified the microcode. If the microcode is inconsistent, this function will generate an internal error. We provide the source code of this function in the plugins/hexrays_sdk/verifier directory for your reference.

◆ write_to_const_detected()

"bool" write_to_const_detected ( self,
* args )

Property Documentation

◆ aliased_args

aliased_args = property(_ida_hexrays.mba_t_aliased_args_get, _ida_hexrays.mba_t_aliased_args_set, doc=)
static

◆ aliased_memory

aliased_memory = property(_ida_hexrays.mba_t_aliased_memory_get, _ida_hexrays.mba_t_aliased_memory_set, doc=)
static

◆ aliased_vars

aliased_vars = property(_ida_hexrays.mba_t_aliased_vars_get, _ida_hexrays.mba_t_aliased_vars_set, doc=)
static

◆ argidx

argidx = property(_ida_hexrays.mba_t_argidx_get, _ida_hexrays.mba_t_argidx_set, doc=)
static

◆ blocks

blocks = property(_ida_hexrays.mba_t_blocks_get, _ida_hexrays.mba_t_blocks_set, doc=)
static

◆ cc

cc = property(_ida_hexrays.mba_t_cc_get, _ida_hexrays.mba_t_cc_set, doc=)
static

◆ consumed_argregs

consumed_argregs = property(_ida_hexrays.mba_t_consumed_argregs_get, _ida_hexrays.mba_t_consumed_argregs_set, doc=)
static

◆ deprecated_idb_node

deprecated_idb_node = property(_ida_hexrays.mba_t_deprecated_idb_node_get, _ida_hexrays.mba_t_deprecated_idb_node_set, doc=)
static

◆ entry_ea

entry_ea = property(_ida_hexrays.mba_t_entry_ea_get, _ida_hexrays.mba_t_entry_ea_set, doc=)
static

◆ error_ea

error_ea = property(_ida_hexrays.mba_t_error_ea_get, _ida_hexrays.mba_t_error_ea_set, doc=)
static

◆ error_strarg

error_strarg = property(_ida_hexrays.mba_t_error_strarg_get, _ida_hexrays.mba_t_error_strarg_set, doc=)
static

◆ final_type

final_type = property(_ida_hexrays.mba_t_final_type_get, _ida_hexrays.mba_t_final_type_set, doc=)
static

◆ first_epilog_ea

first_epilog_ea = property(_ida_hexrays.mba_t_first_epilog_ea_get, _ida_hexrays.mba_t_first_epilog_ea_set, doc=)
static

◆ fpd

fpd = property(_ida_hexrays.mba_t_fpd_get, _ida_hexrays.mba_t_fpd_set, doc=)
static

◆ frregs

frregs = property(_ida_hexrays.mba_t_frregs_get, _ida_hexrays.mba_t_frregs_set, doc=)
static

◆ frsize

frsize = property(_ida_hexrays.mba_t_frsize_get, _ida_hexrays.mba_t_frsize_set, doc=)
static

◆ fti_flags

fti_flags = property(_ida_hexrays.mba_t_fti_flags_get, _ida_hexrays.mba_t_fti_flags_set, doc=)
static

◆ fullsize

fullsize = property(_ida_hexrays.mba_t_fullsize_get, _ida_hexrays.mba_t_fullsize_set, doc=)
static

◆ gotoff_stkvars

gotoff_stkvars = property(_ida_hexrays.mba_t_gotoff_stkvars_get, _ida_hexrays.mba_t_gotoff_stkvars_set, doc=)
static

◆ idb_node

idb_node = property(lambda self: self.deprecated_idb_node)
static

◆ idb_spoiled

idb_spoiled = property(_ida_hexrays.mba_t_idb_spoiled_get, _ida_hexrays.mba_t_idb_spoiled_set, doc=)
static

◆ idb_type

idb_type = property(_ida_hexrays.mba_t_idb_type_get, _ida_hexrays.mba_t_idb_type_set, doc=)
static

◆ inargoff

inargoff = property(_ida_hexrays.mba_t_inargoff_get, _ida_hexrays.mba_t_inargoff_set, doc=)
static

◆ label

label = property(_ida_hexrays.mba_t_label_get, _ida_hexrays.mba_t_label_set, doc=)
static

◆ last_prolog_ea

last_prolog_ea = property(_ida_hexrays.mba_t_last_prolog_ea_get, _ida_hexrays.mba_t_last_prolog_ea_set, doc=)
static

◆ maturity

maturity = property(_ida_hexrays.mba_t_maturity_get, _ida_hexrays.mba_t_maturity_set, doc=)
static

◆ mbr

mbr = property(_ida_hexrays.mba_t_mbr_get, _ida_hexrays.mba_t_mbr_set, doc=!)
static

◆ minargref

minargref = property(_ida_hexrays.mba_t_minargref_get, _ida_hexrays.mba_t_minargref_set, doc=)
static

◆ minstkref

minstkref = property(_ida_hexrays.mba_t_minstkref_get, _ida_hexrays.mba_t_minstkref_set, doc=)
static

◆ minstkref_ea

minstkref_ea = property(_ida_hexrays.mba_t_minstkref_ea_get, _ida_hexrays.mba_t_minstkref_ea_set, doc=)
static

◆ natural

natural = property(_ida_hexrays.mba_t_natural_get, _ida_hexrays.mba_t_natural_set, doc=)
static

◆ nodel_memory

nodel_memory = property(_ida_hexrays.mba_t_nodel_memory_get, _ida_hexrays.mba_t_nodel_memory_set, doc=)
static

◆ notes

notes = property(_ida_hexrays.mba_t_notes_get, _ida_hexrays.mba_t_notes_set, doc=)
static

◆ npurged

npurged = property(_ida_hexrays.mba_t_npurged_get, _ida_hexrays.mba_t_npurged_set, doc=)
static

◆ occurred_warns

occurred_warns = property(_ida_hexrays.mba_t_occurred_warns_get, _ida_hexrays.mba_t_occurred_warns_set, doc=)
static

◆ pfn_flags

pfn_flags = property(_ida_hexrays.mba_t_pfn_flags_get, _ida_hexrays.mba_t_pfn_flags_set, doc=)
static

◆ qty

qty = property(_ida_hexrays.mba_t_qty_get, _ida_hexrays.mba_t_qty_set, doc=)
static

◆ reqmat

reqmat = property(_ida_hexrays.mba_t_reqmat_get, _ida_hexrays.mba_t_reqmat_set, doc=)
static

◆ restricted_memory

restricted_memory = property(_ida_hexrays.mba_t_restricted_memory_get, _ida_hexrays.mba_t_restricted_memory_set, doc=)
static

◆ retsize

retsize = property(_ida_hexrays.mba_t_retsize_get, _ida_hexrays.mba_t_retsize_set, doc=)
static

◆ retvaridx

retvaridx = property(_ida_hexrays.mba_t_retvaridx_get, _ida_hexrays.mba_t_retvaridx_set, doc=)
static

◆ shadow_args

shadow_args = property(_ida_hexrays.mba_t_shadow_args_get, _ida_hexrays.mba_t_shadow_args_set, doc=)
static

◆ spd_adjust

spd_adjust = property(_ida_hexrays.mba_t_spd_adjust_get, _ida_hexrays.mba_t_spd_adjust_set, doc=)
static

◆ spoiled_list

spoiled_list = property(_ida_hexrays.mba_t_spoiled_list_get, _ida_hexrays.mba_t_spoiled_list_set, doc=)
static

◆ stacksize

stacksize = property(_ida_hexrays.mba_t_stacksize_get, _ida_hexrays.mba_t_stacksize_set, doc=)
static

◆ std_ivls

std_ivls = property(_ida_hexrays.mba_t_std_ivls_get, _ida_hexrays.mba_t_std_ivls_set, doc=)
static

◆ thisown

thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
static

◆ tmpstk_size

tmpstk_size = property(_ida_hexrays.mba_t_tmpstk_size_get, _ida_hexrays.mba_t_tmpstk_size_set, doc=)
static

◆ vars

vars = property(_ida_hexrays.mba_t_vars_get, _ida_hexrays.mba_t_vars_set, doc=)
static

The documentation for this class was generated from the following file: