HexRays SDK header file. More...
Go to the source code of this file.
Classes | |
class | valrng_t |
struct | operand_locator_t |
Operand locator. More... | |
struct | number_format_t |
Number representation. More... | |
struct | vd_printer_t |
Base helper class to convert binary data structures into text. More... | |
struct | vc_printer_t |
Helper class to convert cfunc_t into text. More... | |
struct | file_printer_t |
Helper class to convert binary data structures into text and put into a file. More... | |
struct | qstring_printer_t |
Helper class to convert cfunc_t into a text string. More... | |
class | vdloc_t |
struct | lvar_locator_t |
Local variable locator. More... | |
class | lvar_t |
Definition of a local variable (register or stack) #var #lvar. More... | |
struct | lvars_t |
Vector of local variables. More... | |
struct | lvar_saved_info_t |
Saved user settings for local variables: name, type, comment. More... | |
struct | lvar_uservec_t |
All user-defined information about local variables. More... | |
struct | user_lvar_modifier_t |
Helper class to modify saved local variable settings. More... | |
struct | udcall_t |
User-defined function calls. More... | |
struct | microcode_filter_t |
Generic microcode generator class. More... | |
class | udc_filter_t |
Abstract class: User-defined call generator derived classes should implement method 'match'. More... | |
class | bitset_t |
Bit set class. See https://en.wikipedia.org/wiki/Bit_array. More... | |
class | bitset_t::iterator |
struct | ivl_tpl< T > |
struct | ivl_t |
struct | ivl_with_name_t |
class | ivlset_tpl< Ivl, T > |
struct | ivlset_t |
class | rlist_t |
struct | mlist_t |
struct | optinsn_t |
User defined callback to optimize individual microcode instructions. More... | |
struct | optblock_t |
User defined callback to optimize microcode blocks. More... | |
class | simple_graph_t |
struct | op_parent_info_t |
The context info used by visitors. More... | |
struct | minsn_visitor_t |
Micro instruction visitor. More... | |
struct | mop_visitor_t |
Micro operand visitor. More... | |
struct | scif_visitor_t |
Scattered mop: visit each of the scattered locations as a separate mop. More... | |
struct | mlist_mop_visitor_t |
struct | lvar_ref_t |
Reference to a local variable. Used by mop_l. More... | |
struct | stkvar_ref_t |
Reference to a stack variable. Used for mop_S. More... | |
struct | scif_t |
Scattered operand info. Used for mop_sc. More... | |
struct | mnumber_t |
An integer constant. More... | |
struct | fnumber_t |
Floating point constant. More... | |
class | mop_t |
A microinstruction operand. More... | |
class | mop_pair_t |
Pair of operands. More... | |
class | mop_addr_t |
Address of an operand (mop_l, mop_v, mop_S, mop_r) More... | |
class | mcallarg_t |
A call argument. More... | |
class | mcallinfo_t |
Information about a call. More... | |
class | mcases_t |
List of switch cases and targets. More... | |
struct | voff_t |
Value offset (microregister number or stack offset) More... | |
struct | vivl_t |
Value interval (register or stack range) More... | |
class | chain_t |
ud (use->def) and du (def->use) chain. More... | |
class | block_chains_t |
Chains of one block. More... | |
struct | chain_visitor_t |
Chain visitor class. More... | |
class | graph_chains_t |
class | minsn_t |
Microinstruction class #insn. More... | |
class | mblock_t |
Microcode of one basic block. More... | |
struct | hexwarn_t |
Warning instances. More... | |
struct | mba_ranges_t |
Ranges to decompile. Either a function or an explicit vector of ranges. More... | |
struct | range_item_iterator_t |
Item iterator of arbitrary rangevec items. More... | |
struct | mba_item_iterator_t |
Item iterator for mba_ranges_t. More... | |
struct | range_chunk_iterator_t |
Chunk iterator of arbitrary rangevec items. More... | |
struct | mba_range_iterator_t |
Chunk iterator for mba_ranges_t. More... | |
class | mba_t |
Micro block array (internal representation of the decompiled code). More... | |
class | chain_keeper_t |
Convenience class to release graph chains automatically. More... | |
class | mbl_graph_t |
Control flow graph of microcode. More... | |
struct | cdg_insn_iterator_t |
class | codegen_t |
Helper class to generate the initial microcode. More... | |
struct | hexrays_failure_t |
Exception object: decompiler failure information. More... | |
struct | vd_failure_t |
Exception object: decompiler exception. More... | |
struct | vd_interr_t |
Exception object: decompiler internal error. More... | |
struct | gco_info_t |
Result of get_current_operand() More... | |
struct | cnumber_t |
An immediate number. More... | |
struct | var_ref_t |
Reference to a local variable. More... | |
struct | ctree_visitor_t |
A generic helper class that is used for ctree traversal. More... | |
struct | ctree_parentee_t |
A helper ctree traversal class that maintains parent information. More... | |
struct | cfunc_parentee_t |
Class to traverse the whole function. More... | |
struct | treeloc_t |
Ctree location. Used to denote comment locations. More... | |
struct | citem_cmt_t |
Ctree item comment. More... | |
struct | citem_locator_t |
Generic ctree item locator. More... | |
struct | bit_bound_t |
struct | citem_t |
Basic ctree item. More... | |
struct | cexpr_t |
Ctree item: expression. More... | |
struct | ceinsn_t |
Statement with an expression. More... | |
struct | cif_t |
If statement. More... | |
struct | cloop_t |
Base class for loop statements. More... | |
struct | cfor_t |
For-loop. More... | |
struct | cwhile_t |
While-loop. More... | |
struct | cdo_t |
Do-loop. More... | |
struct | creturn_t |
Return statement. More... | |
struct | cgoto_t |
Goto statement. More... | |
struct | casm_t |
asm statement More... | |
struct | cinsn_t |
Ctree item: statement. More... | |
struct | cblock_t |
Compound statement (curly braces) More... | |
struct | carg_t |
Function argument. More... | |
struct | carglist_t |
Function argument list. More... | |
struct | ccase_t |
Switch case. Usually cinsn_t is a block. More... | |
struct | ccases_t |
Vector of switch cases. More... | |
struct | cswitch_t |
Switch statement. More... | |
struct | ctree_anchor_t |
Invisible COLOR_ADDR tags in the output text are used to refer to ctree items and variables. More... | |
struct | ctree_item_t |
Cursor item. More... | |
struct | cfunc_t |
Decompiled function. Decompilation result is kept here. More... | |
struct | ctext_position_t |
Cursor position in the output text (pseudocode). More... | |
struct | history_item_t |
Navigation history item. More... | |
struct | vdui_t |
Information about the pseudocode window. More... | |
struct | ui_stroff_op_t |
Select UDT for the operands using "Select offsets" widget. More... | |
struct | ui_stroff_applicator_t |
Callback to apply the selection. More... | |
struct | user_numforms_iterator_t |
Iterator class for user_numforms_t. More... | |
struct | lvar_mapping_iterator_t |
struct | udcall_map_iterator_t |
struct | user_cmts_iterator_t |
Iterator class for user_cmts_t. More... | |
struct | user_iflags_iterator_t |
struct | user_unions_iterator_t |
struct | user_labels_iterator_t |
Iterator class for user_labels_t. More... | |
struct | eamap_iterator_t |
struct | boundaries_iterator_t |
struct | block_chains_iterator_t |
Macros | |
#define | hexapi |
Public functions are marked with this keyword. More... | |
#define | MAX_SUPPORTED_STACK_SIZE 0x100000 |
#define | HEXRAYS_PLACEMENT_DELETE void operator delete(void *, void *) {} |
#define | HEXRAYS_MEMORY_ALLOCATION_FUNCS() |
#define | VLR_TYPE 0x0F |
#define | VLR_NONE 0x00 |
#define | VLR_ALL 0x01 |
#define | VLR_IVLS 0x02 |
#define | VLR_RANGE 0x03 |
#define | VLR_SRANGE 0x04 |
#define | VLR_BITS 0x05 |
#define | VLR_SECT 0x06 |
#define | VLR_UNION 0x07 |
#define | VLR_UNK 0x08 |
#define | m_max 0x49 |
#define | NF_FIXED 0x01 |
number format has been defined by the user More... | |
#define | NF_NEGDONE 0x02 |
temporary internal bit: negation has been performed More... | |
#define | NF_BINVDONE 0x04 |
temporary internal bit: inverting bits is done More... | |
#define | NF_NEGATE 0x08 |
The user asked to negate the constant. More... | |
#define | NF_BITNOT 0x10 |
The user asked to invert bits of the constant. More... | |
#define | NF_VALID 0x20 |
internal bit: stroff or enum is valid for enums: this bit is set immediately for stroffs: this bit is set at the end of decompilation More... | |
#define | CVAR_USED 0x00000001 |
is used in the code? More... | |
#define | CVAR_TYPE 0x00000002 |
the type is defined? More... | |
#define | CVAR_NAME 0x00000004 |
has nice name? More... | |
#define | CVAR_MREG 0x00000008 |
corresponding mregs were replaced? More... | |
#define | CVAR_NOWD 0x00000010 |
width is unknown More... | |
#define | CVAR_UNAME 0x00000020 |
user-defined name More... | |
#define | CVAR_UTYPE 0x00000040 |
user-defined type More... | |
#define | CVAR_RESULT 0x00000080 |
function result variable More... | |
#define | CVAR_ARG 0x00000100 |
function argument More... | |
#define | CVAR_FAKE 0x00000200 |
fake variable (return var or va_list) More... | |
#define | CVAR_OVER 0x00000400 |
overlapping variable More... | |
#define | CVAR_FLOAT 0x00000800 |
used in a fpu insn More... | |
#define | CVAR_SPOILED 0x00001000 |
internal flag, do not use: spoiled var More... | |
#define | CVAR_MAPDST 0x00002000 |
other variables are mapped to this var More... | |
#define | CVAR_PARTIAL 0x00004000 |
variable type is partialy defined More... | |
#define | CVAR_THISARG 0x00008000 |
'this' argument of c++ member functions More... | |
#define | CVAR_FORCED 0x00010000 |
variable was created by an explicit request otherwise we could reuse an existing var More... | |
#define | CVAR_REGNAME 0x00020000 |
has a register name (like _RAX): if lvar is used by an m_ext instruction More... | |
#define | CVAR_NOPTR 0x00040000 |
variable cannot be a pointer (user choice) More... | |
#define | CVAR_DUMMY 0x00080000 |
dummy argument (added to fill a hole in the argument list) More... | |
#define | CVAR_NOTARG 0x00100000 |
variable cannot be an input argument More... | |
#define | CVAR_AUTOMAP 0x00200000 |
variable was automatically mapped More... | |
#define | CVAR_BYREF 0x00400000 |
the address of the variable was taken More... | |
#define | CVAR_INASM 0x00800000 |
variable is used in instructions translated into __asm {...} More... | |
#define | CVAR_UNUSED 0x01000000 |
user-defined __unused attribute meaningful only if: is_arg_var() && !mba->final_type More... | |
#define | CVAR_SHARED 0x02000000 |
variable is mapped to several chains More... | |
#define | SVW_INT 0x00 |
#define | SVW_FLOAT 0x01 |
#define | SVW_SOFT 0x02 |
#define | LVINF_KEEP 0x0001 |
preserve saved user settings regardless of vars for example, if a var loses all its user-defined attributes or even gets destroyed, keep its lvar_saved_info_t. More... | |
#define | LVINF_FORCE 0x0002 |
force allocation of a new variable. More... | |
#define | LVINF_NOPTR 0x0004 |
variable type should not be a pointer More... | |
#define | LVINF_NOMAP 0x0008 |
forbid automatic mapping of the variable More... | |
#define | LVINF_UNUSED 0x0010 |
unused argument, corresponds to CVAR_UNUSED More... | |
#define | ULV_PRECISE_DEFEA 0x0001 |
Use precise defea's for lvar locations. More... | |
#define | MLI_NAME 0x01 |
apply lvar name More... | |
#define | MLI_TYPE 0x02 |
apply lvar type More... | |
#define | MLI_CMT 0x04 |
apply lvar comment More... | |
#define | MLI_SET_FLAGS 0x08 |
set LVINF_... bits More... | |
#define | MLI_CLR_FLAGS 0x10 |
clear LVINF_... bits More... | |
#define | ALLMEM ivl_t::allmem |
#define | SHINS_NUMADDR 0x01 |
display definition addresses for numbers More... | |
#define | SHINS_VALNUM 0x02 |
display value numbers More... | |
#define | SHINS_SHORT 0x04 |
do not display use-def chains and other attrs More... | |
#define | SHINS_LDXEA 0x08 |
display address of ldx expressions (not used) More... | |
#define | OPROP_IMPDONE 0x01 |
imported operand (a pointer) has been dereferenced More... | |
#define | OPROP_UDT 0x02 |
a struct or union More... | |
#define | OPROP_FLOAT 0x04 |
possibly floating value More... | |
#define | OPROP_CCFLAGS 0x08 |
mop_n: a pc-relative value mop_a: an address obtained from a relocation else: value of a condition code register (like mr_cc) More... | |
#define | OPROP_UDEFVAL 0x10 |
uses undefined value More... | |
#define | OPROP_LOWADDR 0x20 |
a low address offset More... | |
#define | FUNC_NAME_MEMCPY "memcpy" |
#define | FUNC_NAME_WMEMCPY "wmemcpy" |
#define | FUNC_NAME_MEMSET "memset" |
#define | FUNC_NAME_WMEMSET "wmemset" |
#define | FUNC_NAME_MEMSET32 "memset32" |
#define | FUNC_NAME_MEMSET64 "memset64" |
#define | FUNC_NAME_STRCPY "strcpy" |
#define | FUNC_NAME_WCSCPY "wcscpy" |
#define | FUNC_NAME_STRLEN "strlen" |
#define | FUNC_NAME_WCSLEN "wcslen" |
#define | FUNC_NAME_STRCAT "strcat" |
#define | FUNC_NAME_WCSCAT "wcscat" |
#define | FUNC_NAME_TAIL "tail" |
#define | FUNC_NAME_VA_ARG "va_arg" |
#define | FUNC_NAME_EMPTY "$empty" |
#define | FUNC_NAME_PRESENT "$present" |
#define | FUNC_NAME_CONTAINING_RECORD "CONTAINING_RECORD" |
#define | MAX_FUNC_ARGS 64 |
#define | FCI_PROP 0x001 |
call has been propagated More... | |
#define | FCI_DEAD 0x002 |
some return registers were determined dead More... | |
#define | FCI_FINAL 0x004 |
call type is final, should not be changed More... | |
#define | FCI_NORET 0x008 |
call does not return More... | |
#define | FCI_PURE 0x010 |
pure function More... | |
#define | FCI_NOSIDE 0x020 |
call does not have side effects More... | |
#define | FCI_SPLOK 0x040 |
spoiled/visible_memory lists have been optimized. More... | |
#define | FCI_HASCALL 0x080 |
A function is an synthetic helper combined from several instructions and at least one of them was a call to a real functions. More... | |
#define | FCI_HASFMT 0x100 |
A variadic function with recognized printf- or scanf-style format string. More... | |
#define | FCI_EXPLOCS 0x400 |
all arglocs are specified explicitly More... | |
#define | CHF_INITED 0x01 |
is chain initialized? (valid only after lvar allocation) More... | |
#define | CHF_REPLACED 0x02 |
chain operands have been replaced? More... | |
#define | CHF_OVER 0x04 |
overlapped chain More... | |
#define | CHF_FAKE 0x08 |
fake chain created by widen_chains() More... | |
#define | CHF_PASSTHRU 0x10 |
pass-thru chain, must use the input variable to the block More... | |
#define | CHF_TERM 0x20 |
terminating chain; the variable does not survive across the block More... | |
#define | SIZEOF_BLOCK_CHAINS 56 |
#define | GCA_EMPTY 0x01 |
include empty chains More... | |
#define | GCA_SPEC 0x02 |
include chains for special registers More... | |
#define | GCA_ALLOC 0x04 |
enumerate only allocated chains More... | |
#define | GCA_NALLOC 0x08 |
enumerate only non-allocated chains More... | |
#define | GCA_OFIRST 0x10 |
consider only chains of the first block More... | |
#define | GCA_OLAST 0x20 |
consider only chains of the last block More... | |
#define | IPROP_OPTIONAL 0x0001 |
optional instruction More... | |
#define | IPROP_PERSIST 0x0002 |
persistent insn; they are not destroyed More... | |
#define | IPROP_WILDMATCH 0x0004 |
match multiple insns More... | |
#define | IPROP_CLNPOP 0x0008 |
the purpose of the instruction is to clean stack (e.g. More... | |
#define | IPROP_FPINSN 0x0010 |
floating point insn More... | |
#define | IPROP_FARCALL 0x0020 |
call of a far function using push cs/call sequence More... | |
#define | IPROP_TAILCALL 0x0040 |
tail call More... | |
#define | IPROP_ASSERT 0x0080 |
assertion: usually mov #val, op. More... | |
#define | IPROP_SPLIT 0x0700 |
the instruction has been split: More... | |
#define | IPROP_SPLIT1 0x0100 |
into 1 byte More... | |
#define | IPROP_SPLIT2 0x0200 |
into 2 bytes More... | |
#define | IPROP_SPLIT4 0x0300 |
into 4 bytes More... | |
#define | IPROP_SPLIT8 0x0400 |
into 8 bytes More... | |
#define | IPROP_COMBINED 0x0800 |
insn has been modified because of a partial reference More... | |
#define | IPROP_EXTSTX 0x1000 |
this is m_ext propagated into m_stx More... | |
#define | IPROP_IGNLOWSRC 0x2000 |
low part of the instruction source operand has been created artificially (this bit is used only for 'and x, 80...') More... | |
#define | IPROP_INV_JX 0x4000 |
inverted conditional jump More... | |
#define | IPROP_WAS_NORET 0x8000 |
was noret icall More... | |
#define | IPROP_MULTI_MOV 0x10000 |
the minsn was generated as part of insn that moves multiple registers (example: STM on ARM may transfer multiple registers) More... | |
#define | IPROP_DONT_PROP 0x20000 |
may not propagate More... | |
#define | IPROP_DONT_COMB 0x40000 |
may not combine this instruction with others More... | |
#define | IPROP_MBARRIER 0x80000 |
this instruction acts as a memory barrier (instructions accessing memory may not be reordered past it) More... | |
#define | IPROP_UNMERGED 0x100000 |
'goto' instruction was transformed info 'call' More... | |
#define | OPTI_ADDREXPRS 0x0001 |
optimize all address expressions (&x+N; &x-&y) More... | |
#define | OPTI_MINSTKREF 0x0002 |
may update minstkref More... | |
#define | OPTI_COMBINSNS 0x0004 |
may combine insns (only for optimize_insn) More... | |
#define | OPTI_NO_LDXOPT 0x0008 |
the function is called after the propagation attempt, we do not optimize low/high(ldx) in this case More... | |
#define | EQ_IGNSIZE 0x0001 |
ignore source operand sizes More... | |
#define | EQ_IGNCODE 0x0002 |
ignore instruction opcodes More... | |
#define | EQ_CMPDEST 0x0004 |
compare instruction destinations More... | |
#define | EQ_OPTINSN 0x0008 |
optimize mop_d operands More... | |
#define | NORET_IGNORE_WAS_NORET_ICALL 0x01 |
#define | NORET_FORBID_ANALYSIS 0x02 |
#define | MAXRANGE bitrange_t(0, USHRT_MAX) |
#define | MBL_PRIV 0x0001 |
private block - no instructions except the specified are accepted (used in patterns) More... | |
#define | MBL_NONFAKE 0x0000 |
regular block More... | |
#define | MBL_FAKE 0x0002 |
fake block More... | |
#define | MBL_GOTO 0x0004 |
this block is a goto target More... | |
#define | MBL_TCAL 0x0008 |
aritifical call block for tail calls More... | |
#define | MBL_PUSH 0x0010 |
needs "convert push/pop instructions" More... | |
#define | MBL_DMT64 0x0020 |
needs "demote 64bits" More... | |
#define | MBL_COMB 0x0040 |
needs "combine" pass More... | |
#define | MBL_PROP 0x0080 |
needs 'propagation' pass More... | |
#define | MBL_DEAD 0x0100 |
needs "eliminate deads" pass More... | |
#define | MBL_LIST 0x0200 |
use/def lists are ready (not dirty) More... | |
#define | MBL_INCONST 0x0400 |
inconsistent lists: we are building them More... | |
#define | MBL_CALL 0x0800 |
call information has been built More... | |
#define | MBL_BACKPROP 0x1000 |
performed backprop_cc More... | |
#define | MBL_NORET 0x2000 |
dead end block: doesn't return execution control More... | |
#define | MBL_DSLOT 0x4000 |
block for delay slot More... | |
#define | MBL_VALRANGES 0x8000 |
should optimize using value ranges More... | |
#define | MBL_KEEP 0x10000 |
do not remove even if unreachable More... | |
#define | FD_BACKWARD 0x0000 |
search direction More... | |
#define | FD_FORWARD 0x0001 |
search direction More... | |
#define | FD_USE 0x0000 |
look for use More... | |
#define | FD_DEF 0x0002 |
look for definition More... | |
#define | FD_DIRTY 0x0004 |
ignore possible implicit definitions by function calls and indirect memory access More... | |
#define | VR_AT_START 0x0000 |
get value ranges before the instruction or at the block start (if M is nullptr) More... | |
#define | VR_AT_END 0x0001 |
get value ranges after the instruction or at the block end, just after the last instruction (if M is nullptr) More... | |
#define | VR_EXACT 0x0002 |
find exact match. More... | |
#define | MBA_PRCDEFS 0x00000001 |
use precise defeas for chain-allocated lvars More... | |
#define | MBA_NOFUNC 0x00000002 |
function is not present, addresses might be wrong More... | |
#define | MBA_PATTERN 0x00000004 |
microcode pattern, callinfo is present More... | |
#define | MBA_LOADED 0x00000008 |
loaded gdl, no instructions (debugging) More... | |
#define | MBA_RETFP 0x00000010 |
function returns floating point value More... | |
#define | MBA_SPLINFO 0x00000020 |
(final_type ? idb_spoiled : spoiled_regs) is valid More... | |
#define | MBA_PASSREGS 0x00000040 |
has mcallinfo_t::pass_regs More... | |
#define | MBA_THUNK 0x00000080 |
thunk function More... | |
#define | MBA_CMNSTK 0x00000100 |
stkvars+stkargs should be considered as one area More... | |
#define | MBA_PREOPT 0x00000200 |
preoptimization stage complete More... | |
#define | MBA_CMBBLK 0x00000400 |
request to combine blocks More... | |
#define | MBA_ASRTOK 0x00000800 |
assertions have been generated More... | |
#define | MBA_CALLS 0x00001000 |
callinfo has been built More... | |
#define | MBA_ASRPROP 0x00002000 |
assertion have been propagated More... | |
#define | MBA_SAVRST 0x00004000 |
save-restore analysis has been performed More... | |
#define | MBA_RETREF 0x00008000 |
return type has been refined More... | |
#define | MBA_GLBOPT 0x00010000 |
microcode has been optimized globally More... | |
#define | MBA_LVARS0 0x00040000 |
lvar pre-allocation has been performed More... | |
#define | MBA_LVARS1 0x00080000 |
lvar real allocation has been performed More... | |
#define | MBA_DELPAIRS 0x00100000 |
pairs have been deleted once More... | |
#define | MBA_CHVARS 0x00200000 |
can verify chain varnums More... | |
#define | MBA_SHORT 0x00400000 |
use short display More... | |
#define | MBA_COLGDL 0x00800000 |
display graph after each reduction More... | |
#define | MBA_INSGDL 0x01000000 |
display instruction in graphs More... | |
#define | MBA_NICE 0x02000000 |
apply transformations to c code More... | |
#define | MBA_REFINE 0x04000000 |
may refine return value size More... | |
#define | MBA_WINGR32 0x10000000 |
use wingraph32 More... | |
#define | MBA_NUMADDR 0x20000000 |
display definition addresses for numbers More... | |
#define | MBA_VALNUM 0x40000000 |
display value numbers More... | |
#define | MBA_INITIAL_FLAGS |
#define | MBA2_LVARNAMES_OK 0x00000001 |
may verify lvar_names? More... | |
#define | MBA2_LVARS_RENAMED 0x00000002 |
accept empty names now? More... | |
#define | MBA2_OVER_CHAINS 0x00000004 |
has overlapped chains? More... | |
#define | MBA2_VALRNG_DONE 0x00000008 |
calculated valranges? More... | |
#define | MBA2_IS_CTR 0x00000010 |
is constructor? More... | |
#define | MBA2_IS_DTR 0x00000020 |
is destructor? More... | |
#define | MBA2_ARGIDX_OK 0x00000040 |
may verify input argument list? More... | |
#define | MBA2_NO_DUP_CALLS 0x00000080 |
forbid multiple calls with the same ea More... | |
#define | MBA2_NO_DUP_LVARS 0x00000100 |
forbid multiple lvars with the same ea More... | |
#define | MBA2_UNDEF_RETVAR 0x00000200 |
return value is undefined More... | |
#define | MBA2_ARGIDX_SORTED 0x00000400 |
args finally sorted according to ABI (e.g. More... | |
#define | MBA2_CODE16_BIT 0x00000800 |
the code16 bit removed More... | |
#define | MBA2_STACK_RETVAL 0x00001000 |
the return value is on the stack More... | |
#define | MBA2_HAS_OUTLINES 0x00002000 |
calls to outlined code have been inlined More... | |
#define | MBA2_NO_FRAME 0x00004000 |
do not use function frame info (only snippet mode) More... | |
#define | MBA2_PROP_COMPLEX 0x00008000 |
allow propagation of more complex variable definitions More... | |
#define | MBA2_DONT_VERIFY 0x80000000 |
Do not verify microcode. More... | |
#define | MBA2_INITIAL_FLAGS (MBA2_LVARNAMES_OK|MBA2_LVARS_RENAMED) |
#define | MBA2_ALL_FLAGS 0x0000FFFF |
#define | NALT_VD 2 |
this index is not used by ida More... | |
#define | LOCOPT_ALL 0x0001 |
redo optimization for all blocks. More... | |
#define | LOCOPT_REFINE 0x0002 |
refine return type, ok to fail More... | |
#define | LOCOPT_REFINE2 0x0004 |
refine return type, try harder More... | |
#define | ACFL_LOCOPT 0x01 |
perform local propagation (requires ACFL_BLKOPT) More... | |
#define | ACFL_BLKOPT 0x02 |
perform interblock transformations More... | |
#define | ACFL_GLBPROP 0x04 |
perform global propagation More... | |
#define | ACFL_GLBDEL 0x08 |
perform dead code eliminition More... | |
#define | ACFL_GUESS 0x10 |
may guess calling conventions More... | |
#define | CPBLK_FAST 0x0000 |
do not update minbstkref and minbargref More... | |
#define | CPBLK_MINREF 0x0001 |
update minbstkref and minbargref More... | |
#define | CPBLK_OPTJMP 0x0002 |
del the jump insn at the end of the block if it becomes useless More... | |
#define | OPF_REUSE 0x00 |
reuse existing window More... | |
#define | OPF_NEW_WINDOW 0x01 |
open new window More... | |
#define | OPF_REUSE_ACTIVE 0x02 |
reuse existing window, only if the currently active widget is a pseudocode view More... | |
#define | OPF_NO_WAIT 0x08 |
do not display waitbox if decompilation happens More... | |
#define | OPF_WINDOW_MGMT_MASK 0x07 |
#define | VDRUN_NEWFILE 0x00000000 |
Create a new file or overwrite existing file. More... | |
#define | VDRUN_APPEND 0x00000001 |
Create a new file or append to existing file. More... | |
#define | VDRUN_ONLYNEW 0x00000002 |
Fail if output file already exists. More... | |
#define | VDRUN_SILENT 0x00000004 |
Silent decompilation. More... | |
#define | VDRUN_SENDIDB 0x00000008 |
Send problematic databases to hex-rays.com. More... | |
#define | VDRUN_MAYSTOP 0x00000010 |
The user can cancel decompilation. More... | |
#define | VDRUN_CMDLINE 0x00000020 |
Called from ida's command line. More... | |
#define | VDRUN_STATS 0x00000040 |
Print statistics into vd_stats.txt. More... | |
#define | VDRUN_LUMINA 0x00000080 |
Use lumina server. More... | |
#define | GCO_STK 0x0000 |
a stack variable More... | |
#define | GCO_REG 0x0001 |
is register? otherwise a stack variable More... | |
#define | GCO_USE 0x0002 |
is source operand? More... | |
#define | GCO_DEF 0x0004 |
is destination operand? More... | |
#define | CV_FAST 0x0000 |
do not maintain parent information More... | |
#define | CV_PRUNE 0x0001 |
this bit is set by visit...() to prune the walk More... | |
#define | CV_PARENTS 0x0002 |
maintain parent information More... | |
#define | CV_POST 0x0004 |
call the leave...() functions More... | |
#define | CV_RESTART 0x0008 |
restart enumeration at the top expr (apply_to_exprs) More... | |
#define | CV_INSNS 0x0010 |
visit only statements, prune all expressions do not use before the final ctree maturity because expressions may contain statements at intermediate stages (see cot_insn). More... | |
#define | EXFL_CPADONE 0x0001 |
pointer arithmetic correction done More... | |
#define | EXFL_LVALUE 0x0002 |
expression is lvalue even if it doesn't look like it More... | |
#define | EXFL_FPOP 0x0004 |
floating point operation More... | |
#define | EXFL_ALONE 0x0008 |
standalone helper More... | |
#define | EXFL_CSTR 0x0010 |
string literal More... | |
#define | EXFL_PARTIAL 0x0020 |
type of the expression is considered partial More... | |
#define | EXFL_UNDEF 0x0040 |
expression uses undefined value More... | |
#define | EXFL_JUMPOUT 0x0080 |
jump out-of-function More... | |
#define | EXFL_VFTABLE 0x0100 |
is ptr to vftable (used for cot_memptr, cot_memref) More... | |
#define | EXFL_ALL 0x01FF |
all currently defined bits More... | |
#define | CFL_FINAL 0x0001 |
call type is final, should not be changed More... | |
#define | CFL_HELPER 0x0002 |
created from a decompiler helper function More... | |
#define | CFL_NORET 0x0004 |
call does not return More... | |
#define | ANCHOR_INDEX 0x1FFFFFFF |
#define | ANCHOR_MASK 0xC0000000 |
#define | ANCHOR_CITEM 0x00000000 |
c-tree item More... | |
#define | ANCHOR_LVAR 0x40000000 |
declaration of local variable More... | |
#define | ANCHOR_ITP 0x80000000 |
item type preciser More... | |
#define | ANCHOR_BLKCMT 0x20000000 |
block comment (for ctree items) More... | |
#define | GLN_CURRENT 0x01 |
get label of the current item More... | |
#define | GLN_GOTO_TARGET 0x02 |
get goto target More... | |
#define | GLN_ALL 0x03 |
get both More... | |
#define | INS_EPILOG ((cinsn_t *)1) |
#define | CIT_COLLAPSED 0x0001 |
display ctree item in collapsed form More... | |
#define | CFS_BOUNDS 0x0001 |
'eamap' and 'boundaries' are ready More... | |
#define | CFS_TEXT 0x0002 |
'sv' is ready (and hdrlines) More... | |
#define | CFS_LVARS_HIDDEN 0x0004 |
local variable definitions are collapsed More... | |
#define | CFS_LOCKED 0x0008 |
cfunc is temporarily locked More... | |
#define | DECOMP_NO_WAIT 0x0001 |
do not display waitbox More... | |
#define | DECOMP_NO_CACHE 0x0002 |
do not use decompilation cache (snippets are never cached) More... | |
#define | DECOMP_NO_FRAME 0x0004 |
do not use function frame info (only snippet mode) More... | |
#define | DECOMP_WARNINGS 0x0008 |
display warnings in the output window More... | |
#define | DECOMP_ALL_BLKS 0x0010 |
generate microcode for unreachable blocks More... | |
#define | DECOMP_NO_HIDE 0x0020 |
do not close display waitbox. see close_hexrays_waitboxes() More... | |
#define | DECOMP_NO_XREFS 0x0040 |
Obsolete. Use DECOMP_GXREFS_NOUPD. More... | |
#define | DECOMP_GXREFS_DEFLT 0x0000 |
the default behavior: do not update the global xrefs cache upon decompile() call, but when the pseudocode text is generated (e.g., through cfunc_t.get_pseudocode()) More... | |
#define | DECOMP_GXREFS_NOUPD 0x0040 |
do not update the global xrefs cache More... | |
#define | DECOMP_GXREFS_FORCE 0x0080 |
update the global xrefs cache immediately More... | |
#define | DECOMP_VOID_MBA 0x0100 |
return empty mba object (to be used with gen_microcode) More... | |
#define | VDUI_VISIBLE 0x0001 |
is visible? More... | |
#define | VDUI_VALID 0x0002 |
is valid? More... | |
Typedefs | |
typedef std::set< voff_t > | voff_set_t |
typedef int | mreg_t |
Micro register. More... | |
typedef std::set< ea_t > | easet_t |
typedef std::set< minsn_t * > | minsn_ptr_set_t |
typedef std::set< qstring > | strings_t |
typedef qvector< minsn_t * > | minsnptrs_t |
typedef qvector< mop_t * > | mopptrs_t |
typedef qvector< mop_t > | mopvec_t |
typedef qvector< uint64 > | uint64vec_t |
typedef qvector< mreg_t > | mregvec_t |
typedef qrefcnt_t< cfunc_t > | cfuncptr_t |
typedef uint64 | uvlr_t |
typedef int64 | svlr_t |
typedef int | maymust_t |
typedef std::map< operand_locator_t, number_format_t > | user_numforms_t |
typedef qvector< lvar_saved_info_t > | lvar_saved_infos_t |
typedef std::map< lvar_locator_t, lvar_locator_t > | lvar_mapping_t |
Local variable mapping (is used to merge variables) More... | |
typedef std::map< ea_t, udcall_t > | udcall_map_t |
typedef size_t | mbitmap_t |
typedef qvector< bitset_t > | array_of_bitsets |
typedef ivl_tpl< uval_t > | uval_ivl_t |
typedef ivlset_tpl< ivl_t, uval_t > | uval_ivl_ivlset_t |
Set of address intervals. More... | |
typedef qvector< ivlset_t > | array_of_ivlsets |
typedef qvector< mlist_t > | mlistvec_t |
typedef uint8 | mopt_t |
Instruction operand types. More... | |
typedef qvector< mcallarg_t > | mcallargs_t |
typedef qvector< block_chains_t > | block_chains_vec_t |
Graph chains. More... | |
typedef qvector< hexwarn_t > | hexwarns_t |
using | mbl_array_t = mba_t |
typedef qvector< citem_t * > | ctree_items_t |
Vector of parents. More... | |
typedef ctree_items_t | parents_t |
typedef std::map< treeloc_t, citem_cmt_t > | user_cmts_t |
typedef std::map< citem_locator_t, int32 > | user_iflags_t |
typedef std::map< ea_t, intvec_t > | user_unions_t |
typedef qvector< cinsn_t * > | cinsnptrvec_t |
Vector of pointers to statements. More... | |
typedef qlist< cinsn_t > | cinsn_list_t |
typedef std::map< int, qstring > | user_labels_t |
typedef std::map< ea_t, cinsnptrvec_t > | eamap_t |
typedef std::map< cinsn_t *, rangeset_t > | boundaries_t |
typedef qvector< cfuncptr_t > | cfuncptrs_t |
typedef void * | hexdsp_t(int code,...) |
Hex-Rays decompiler dispatcher. More... | |
typedef ssize_t | hexrays_cb_t(void *ud, hexrays_event_t event, va_list va) |
Handler of decompiler events. More... | |
typedef qstack< history_item_t > | history_t |
Navigation history. More... | |
typedef int | cmt_type_t |
Comment types. More... | |
typedef qvector< ui_stroff_op_t > | ui_stroff_ops_t |
typedef size_t | iterator_word |
Enumerations | |
enum | { MAX_VLR_SIZE = sizeof(uvlr_t) } |
enum | cmpop_t { CMP_NZ , CMP_Z , CMP_AE , CMP_B , CMP_A , CMP_BE , CMP_GT , CMP_GE , CMP_LT , CMP_LE } |
enum | merror_t { MERR_OK = 0 , MERR_BLOCK = 1 , MERR_INTERR = -1 , MERR_INSN = -2 , MERR_MEM = -3 , MERR_BADBLK = -4 , MERR_BADSP = -5 , MERR_PROLOG = -6 , MERR_SWITCH = -7 , MERR_EXCEPTION = -8 , MERR_HUGESTACK = -9 , MERR_LVARS = -10 , MERR_BITNESS = -11 , MERR_BADCALL = -12 , MERR_BADFRAME = -13 , MERR_UNKTYPE = -14 , MERR_BADIDB = -15 , MERR_SIZEOF = -16 , MERR_REDO = -17 , MERR_CANCELED = -18 , MERR_RECDEPTH = -19 , MERR_OVERLAP = -20 , MERR_PARTINIT = -21 , MERR_COMPLEX = -22 , MERR_LICENSE = -23 , MERR_ONLY32 = -24 , MERR_ONLY64 = -25 , MERR_BUSY = -26 , MERR_FARPTR = -27 , MERR_EXTERN = -28 , MERR_FUNCSIZE = -29 , MERR_BADRANGES = -30 , MERR_BADARCH = -31 , MERR_DSLOT = -32 , MERR_STOP = -33 , MERR_CLOUD = -34 , MERR_MAX_ERR = 34 , MERR_LOOP = -35 } |
enum | mcode_t { m_nop = 0x00 , m_stx = 0x01 , m_ldx = 0x02 , m_ldc = 0x03 , m_mov = 0x04 , m_neg = 0x05 , m_lnot = 0x06 , m_bnot = 0x07 , m_xds = 0x08 , m_xdu = 0x09 , m_low = 0x0A , m_high = 0x0B , m_add = 0x0C , m_sub = 0x0D , m_mul = 0x0E , m_udiv = 0x0F , m_sdiv = 0x10 , m_umod = 0x11 , m_smod = 0x12 , m_or = 0x13 , m_and = 0x14 , m_xor = 0x15 , m_shl = 0x16 , m_shr = 0x17 , m_sar = 0x18 , m_cfadd = 0x19 , m_ofadd = 0x1A , m_cfshl = 0x1B , m_cfshr = 0x1C , m_sets = 0x1D , m_seto = 0x1E , m_setp = 0x1F , m_setnz = 0x20 , m_setz = 0x21 , m_setae = 0x22 , m_setb = 0x23 , m_seta = 0x24 , m_setbe = 0x25 , m_setg = 0x26 , m_setge = 0x27 , m_setl = 0x28 , m_setle = 0x29 , m_jcnd = 0x2A , m_jnz = 0x2B , m_jz = 0x2C , m_jae = 0x2D , m_jb = 0x2E , m_ja = 0x2F , m_jbe = 0x30 , m_jg = 0x31 , m_jge = 0x32 , m_jl = 0x33 , m_jle = 0x34 , m_jtbl = 0x35 , m_ijmp = 0x36 , m_goto = 0x37 , m_call = 0x38 , m_icall = 0x39 , m_ret = 0x3A , m_push = 0x3B , m_pop = 0x3C , m_und = 0x3D , m_ext = 0x3E , m_f2i = 0x3F , m_f2u = 0x40 , m_i2f = 0x41 , m_u2f = 0x42 , m_f2f = 0x43 , m_fneg = 0x44 , m_fadd = 0x45 , m_fsub = 0x46 , m_fmul = 0x47 , m_fdiv = 0x48 } |
enum | type_source_t { GUESSED_NONE , GUESSED_WEAK , GUESSED_FUNC , GUESSED_DATA , TS_NOELL = 0x8000000 , TS_SHRINK = 0x4000000 , TS_DONTREF = 0x2000000 , TS_MASK = 0xE000000 } |
Type source (where the type information comes from) More... | |
enum | side_effect_t { NO_SIDEFF , WITH_SIDEFF , ONLY_SIDEFF , ANY_REGSIZE = 0x80 , ANY_FPSIZE = 0x100 } |
How to handle side effect of change_size() Sometimes we need to create a temporary operand and change its size in order to check some hypothesis. More... | |
enum | funcrole_t { ROLE_UNK , ROLE_EMPTY , ROLE_MEMSET , ROLE_MEMSET32 , ROLE_MEMSET64 , ROLE_MEMCPY , ROLE_STRCPY , ROLE_STRLEN , ROLE_STRCAT , ROLE_TAIL , ROLE_BUG , ROLE_ALLOCA , ROLE_BSWAP , ROLE_PRESENT , ROLE_CONTAINING_RECORD , ROLE_FASTFAIL , ROLE_READFLAGS , ROLE_IS_MUL_OK , ROLE_SATURATED_MUL , ROLE_BITTEST , ROLE_BITTESTANDSET , ROLE_BITTESTANDRESET , ROLE_BITTESTANDCOMPLEMENT , ROLE_VA_ARG , ROLE_VA_COPY , ROLE_VA_START , ROLE_VA_END , ROLE_ROL , ROLE_ROR , ROLE_CFSUB3 , ROLE_OFSUB3 , ROLE_ABS , ROLE_3WAYCMP0 , ROLE_3WAYCMP1 , ROLE_WMEMCPY , ROLE_WMEMSET , ROLE_WCSCPY , ROLE_WCSLEN , ROLE_WCSCAT , ROLE_SSE_CMP4 , ROLE_SSE_CMP8 } |
Function roles. More... | |
enum | mblock_type_t { BLT_NONE = 0 , BLT_STOP = 1 , BLT_0WAY = 2 , BLT_1WAY = 3 , BLT_2WAY = 4 , BLT_NWAY = 5 , BLT_XTRN = 6 } |
Basic block types. More... | |
enum | warnid_t { WARN_VARARG_REGS , WARN_ILL_PURGED , WARN_ILL_FUNCTYPE , WARN_VARARG_TCAL , WARN_VARARG_NOSTK , WARN_VARARG_MANY , WARN_ADDR_OUTARGS , WARN_DEP_UNK_CALLS , WARN_ILL_ELLIPSIS , WARN_GUESSED_TYPE , WARN_EXP_LINVAR , WARN_WIDEN_CHAINS , WARN_BAD_PURGED , WARN_CBUILD_LOOPS , WARN_NO_SAVE_REST , WARN_ODD_INPUT_REG , WARN_ODD_ADDR_USE , WARN_MUST_RET_FP , WARN_ILL_FPU_STACK , WARN_SELFREF_PROP , WARN_WOULD_OVERLAP , WARN_ARRAY_INARG , WARN_MAX_ARGS , WARN_BAD_FIELD_TYPE , WARN_WRITE_CONST , WARN_BAD_RETVAR , WARN_FRAG_LVAR , WARN_HUGE_STKOFF , WARN_UNINITED_REG , WARN_FIXED_MACRO , WARN_WRONG_VA_OFF , WARN_CR_NOFIELD , WARN_CR_BADOFF , WARN_BAD_STROFF , WARN_BAD_VARSIZE , WARN_UNSUPP_REG , WARN_UNALIGNED_ARG , WARN_BAD_STD_TYPE , WARN_BAD_CALL_SP , WARN_MISSED_SWITCH , WARN_BAD_SP , WARN_BAD_STKPNT , WARN_UNDEF_LVAR , WARN_JUMPOUT , WARN_BAD_VALRNG , WARN_BAD_SHADOW , WARN_OPT_VALRNG , WARN_RET_LOCREF , WARN_BAD_MAPDST , WARN_BAD_INSN , WARN_ODD_ABI , WARN_UNBALANCED_STACK , WARN_OPT_VALRNG2 , WARN_OPT_VALRNG3 , WARN_OPT_USELESS_JCND , WARN_MAX } |
Warning ids. More... | |
enum | mba_maturity_t { MMAT_ZERO , MMAT_GENERATED , MMAT_PREOPTIMIZED , MMAT_LOCOPT , MMAT_CALLS , MMAT_GLBOPT1 , MMAT_GLBOPT2 , MMAT_GLBOPT3 , MMAT_LVARS } |
Microcode maturity levels. More... | |
enum | memreg_index_t { MMIDX_GLBLOW , MMIDX_LVARS , MMIDX_RETADDR , MMIDX_SHADOW , MMIDX_ARGS , MMIDX_GLBHIGH } |
< memory region types More... | |
enum | gctype_t { GC_REGS_AND_STKVARS , GC_ASR , GC_XDSU , GC_END , GC_DIRTY_ALL = (1 << (2*GC_END))-1 } |
Kind of use-def and def-use chains. More... | |
enum | ctype_t { cot_empty = 0 , cot_comma = 1 , cot_asg = 2 , cot_asgbor = 3 , cot_asgxor = 4 , cot_asgband = 5 , cot_asgadd = 6 , cot_asgsub = 7 , cot_asgmul = 8 , cot_asgsshr = 9 , cot_asgushr = 10 , cot_asgshl = 11 , cot_asgsdiv = 12 , cot_asgudiv = 13 , cot_asgsmod = 14 , cot_asgumod = 15 , cot_tern = 16 , cot_lor = 17 , cot_land = 18 , cot_bor = 19 , cot_xor = 20 , cot_band = 21 , cot_eq = 22 , cot_ne = 23 , cot_sge = 24 , cot_uge = 25 , cot_sle = 26 , cot_ule = 27 , cot_sgt = 28 , cot_ugt = 29 , cot_slt = 30 , cot_ult = 31 , cot_sshr = 32 , cot_ushr = 33 , cot_shl = 34 , cot_add = 35 , cot_sub = 36 , cot_mul = 37 , cot_sdiv = 38 , cot_udiv = 39 , cot_smod = 40 , cot_umod = 41 , cot_fadd = 42 , cot_fsub = 43 , cot_fmul = 44 , cot_fdiv = 45 , cot_fneg = 46 , cot_neg = 47 , cot_cast = 48 , cot_lnot = 49 , cot_bnot = 50 , cot_ptr = 51 , cot_ref = 52 , cot_postinc = 53 , cot_postdec = 54 , cot_preinc = 55 , cot_predec = 56 , cot_call = 57 , cot_idx = 58 , cot_memref = 59 , cot_memptr = 60 , cot_num = 61 , cot_fnum = 62 , cot_str = 63 , cot_obj = 64 , cot_var = 65 , cot_insn = 66 , cot_sizeof = 67 , cot_helper = 68 , cot_type = 69 , cot_last = cot_type , cit_empty = 70 , cit_block = 71 , cit_expr = 72 , cit_if = 73 , cit_for = 74 , cit_while = 75 , cit_do = 76 , cit_switch = 77 , cit_break = 78 , cit_continue = 79 , cit_return = 80 , cit_goto = 81 , cit_asm = 82 , cit_end } |
Ctree item code. More... | |
enum | ctree_maturity_t { CMAT_ZERO , CMAT_BUILT , CMAT_TRANS1 , CMAT_NICE , CMAT_TRANS2 , CMAT_CPA , CMAT_TRANS3 , CMAT_CASTED , CMAT_FINAL } |
Ctree maturity level. More... | |
enum | item_preciser_t { ITP_EMPTY , ITP_ARG1 , ITP_ARG64 = ITP_ARG1+63 , ITP_BRACE1 , ITP_INNER_LAST = ITP_BRACE1 , ITP_ASM , ITP_ELSE , ITP_DO , ITP_SEMI , ITP_CURLY1 , ITP_CURLY2 , ITP_BRACE2 , ITP_COLON , ITP_BLOCK1 , ITP_BLOCK2 , ITP_CASE = 0x40000000 , ITP_SIGN = 0x20000000 } |
Comment item preciser. More... | |
enum | cmt_retrieval_type_t { RETRIEVE_ONCE , RETRIEVE_ALWAYS } |
Comment retrieval type. More... | |
enum | use_curly_t { CALC_CURLY_BRACES , NO_CURLY_BRACES , USE_CURLY_BRACES } |
Should curly braces be printed? More... | |
enum | cursor_item_type_t { VDI_NONE , VDI_EXPR , VDI_LVAR , VDI_FUNC , VDI_TAIL } |
Type of the cursor item. More... | |
enum | allow_unused_labels_t { FORBID_UNUSED_LABELS = 0 , ALLOW_UNUSED_LABELS = 1 } |
Unused label disposition. More... | |
enum | input_device_t { USE_KEYBOARD = 0 , USE_MOUSE = 1 } |
Type of the input device. More... | |
enum | hexcall_t { hx_user_numforms_begin , hx_user_numforms_end , hx_user_numforms_next , hx_user_numforms_prev , hx_user_numforms_first , hx_user_numforms_second , hx_user_numforms_find , hx_user_numforms_insert , hx_user_numforms_erase , hx_user_numforms_clear , hx_user_numforms_size , hx_user_numforms_free , hx_user_numforms_new , hx_lvar_mapping_begin , hx_lvar_mapping_end , hx_lvar_mapping_next , hx_lvar_mapping_prev , hx_lvar_mapping_first , hx_lvar_mapping_second , hx_lvar_mapping_find , hx_lvar_mapping_insert , hx_lvar_mapping_erase , hx_lvar_mapping_clear , hx_lvar_mapping_size , hx_lvar_mapping_free , hx_lvar_mapping_new , hx_udcall_map_begin , hx_udcall_map_end , hx_udcall_map_next , hx_udcall_map_prev , hx_udcall_map_first , hx_udcall_map_second , hx_udcall_map_find , hx_udcall_map_insert , hx_udcall_map_erase , hx_udcall_map_clear , hx_udcall_map_size , hx_udcall_map_free , hx_udcall_map_new , hx_user_cmts_begin , hx_user_cmts_end , hx_user_cmts_next , hx_user_cmts_prev , hx_user_cmts_first , hx_user_cmts_second , hx_user_cmts_find , hx_user_cmts_insert , hx_user_cmts_erase , hx_user_cmts_clear , hx_user_cmts_size , hx_user_cmts_free , hx_user_cmts_new , hx_user_iflags_begin , hx_user_iflags_end , hx_user_iflags_next , hx_user_iflags_prev , hx_user_iflags_first , hx_user_iflags_second , hx_user_iflags_find , hx_user_iflags_insert , hx_user_iflags_erase , hx_user_iflags_clear , hx_user_iflags_size , hx_user_iflags_free , hx_user_iflags_new , hx_user_unions_begin , hx_user_unions_end , hx_user_unions_next , hx_user_unions_prev , hx_user_unions_first , hx_user_unions_second , hx_user_unions_find , hx_user_unions_insert , hx_user_unions_erase , hx_user_unions_clear , hx_user_unions_size , hx_user_unions_free , hx_user_unions_new , hx_user_labels_begin , hx_user_labels_end , hx_user_labels_next , hx_user_labels_prev , hx_user_labels_first , hx_user_labels_second , hx_user_labels_find , hx_user_labels_insert , hx_user_labels_erase , hx_user_labels_clear , hx_user_labels_size , hx_user_labels_free , hx_user_labels_new , hx_eamap_begin , hx_eamap_end , hx_eamap_next , hx_eamap_prev , hx_eamap_first , hx_eamap_second , hx_eamap_find , hx_eamap_insert , hx_eamap_erase , hx_eamap_clear , hx_eamap_size , hx_eamap_free , hx_eamap_new , hx_boundaries_begin , hx_boundaries_end , hx_boundaries_next , hx_boundaries_prev , hx_boundaries_first , hx_boundaries_second , hx_boundaries_find , hx_boundaries_insert , hx_boundaries_erase , hx_boundaries_clear , hx_boundaries_size , hx_boundaries_free , hx_boundaries_new , hx_block_chains_begin , hx_block_chains_end , hx_block_chains_next , hx_block_chains_prev , hx_block_chains_get , hx_block_chains_find , hx_block_chains_insert , hx_block_chains_erase , hx_block_chains_clear , hx_block_chains_size , hx_block_chains_free , hx_block_chains_new , hx_valrng_t_clear , hx_valrng_t_copy , hx_valrng_t_assign , hx_valrng_t_compare , hx_valrng_t_set_eq , hx_valrng_t_set_cmp , hx_valrng_t_reduce_size , hx_valrng_t_intersect_with , hx_valrng_t_unite_with , hx_valrng_t_inverse , hx_valrng_t_has , hx_valrng_t_print , hx_valrng_t_dstr , hx_valrng_t_cvt_to_single_value , hx_valrng_t_cvt_to_cmp , hx_get_merror_desc , hx_reg2mreg , hx_mreg2reg , hx_install_optinsn_handler , hx_remove_optinsn_handler , hx_install_optblock_handler , hx_remove_optblock_handler , hx_must_mcode_close_block , hx_is_mcode_propagatable , hx_negate_mcode_relation , hx_swap_mcode_relation , hx_get_signed_mcode , hx_get_unsigned_mcode , hx_mcode_modifies_d , hx_operand_locator_t_compare , hx_vd_printer_t_print , hx_file_printer_t_print , hx_qstring_printer_t_print , hx_dstr , hx_is_type_correct , hx_is_small_udt , hx_is_nonbool_type , hx_is_bool_type , hx_partial_type_num , hx_get_float_type , hx_get_int_type_by_width_and_sign , hx_get_unk_type , hx_dummy_ptrtype , hx_get_member_type , hx_make_pointer , hx_create_typedef , hx_get_type , hx_set_type , hx_vdloc_t_dstr , hx_vdloc_t_compare , hx_vdloc_t_is_aliasable , hx_print_vdloc , hx_arglocs_overlap , hx_lvar_locator_t_compare , hx_lvar_locator_t_dstr , hx_lvar_t_dstr , hx_lvar_t_is_promoted_arg , hx_lvar_t_accepts_type , hx_lvar_t_set_lvar_type , hx_lvar_t_set_width , hx_lvar_t_append_list_ , hx_lvars_t_find_stkvar , hx_lvars_t_find , hx_lvars_t_find_lvar , hx_restore_user_lvar_settings , hx_save_user_lvar_settings , hx_modify_user_lvars , hx_restore_user_defined_calls , hx_save_user_defined_calls , hx_parse_user_call , hx_convert_to_user_call , hx_install_microcode_filter , hx_udc_filter_t_init , hx_udc_filter_t_apply , hx_bitset_t_bitset_t , hx_bitset_t_copy , hx_bitset_t_add , hx_bitset_t_add_ , hx_bitset_t_add__ , hx_bitset_t_sub , hx_bitset_t_sub_ , hx_bitset_t_sub__ , hx_bitset_t_cut_at , hx_bitset_t_shift_down , hx_bitset_t_has , hx_bitset_t_has_all , hx_bitset_t_has_any , hx_bitset_t_dstr , hx_bitset_t_empty , hx_bitset_t_count , hx_bitset_t_count_ , hx_bitset_t_last , hx_bitset_t_fill_with_ones , hx_bitset_t_has_common , hx_bitset_t_intersect , hx_bitset_t_is_subset_of , hx_bitset_t_compare , hx_bitset_t_goup , hx_ivl_t_dstr , hx_ivl_t_compare , hx_ivlset_t_add , hx_ivlset_t_add_ , hx_ivlset_t_addmasked , hx_ivlset_t_sub , hx_ivlset_t_sub_ , hx_ivlset_t_has_common , hx_ivlset_t_print , hx_ivlset_t_dstr , hx_ivlset_t_count , hx_ivlset_t_has_common_ , hx_ivlset_t_contains , hx_ivlset_t_includes , hx_ivlset_t_intersect , hx_ivlset_t_compare , hx_get_mreg_name , hx_rlist_t_print , hx_rlist_t_dstr , hx_mlist_t_addmem , hx_mlist_t_print , hx_mlist_t_dstr , hx_mlist_t_compare , hx_lvar_ref_t_compare , hx_lvar_ref_t_var , hx_stkvar_ref_t_compare , hx_stkvar_ref_t_get_stkvar , hx_fnumber_t_print , hx_fnumber_t_dstr , hx_mop_t_copy , hx_mop_t_assign , hx_mop_t_swap , hx_mop_t_erase , hx_mop_t_print , hx_mop_t_dstr , hx_mop_t_create_from_mlist , hx_mop_t_create_from_ivlset , hx_mop_t_create_from_vdloc , hx_mop_t_create_from_scattered_vdloc , hx_mop_t_create_from_insn , hx_mop_t_make_number , hx_mop_t_make_fpnum , hx_mop_t_make_reg_pair , hx_mop_t_make_helper , hx_mop_t_is_bit_reg , hx_mop_t_may_use_aliased_memory , hx_mop_t_is01 , hx_mop_t_is_sign_extended_from , hx_mop_t_is_zero_extended_from , hx_mop_t_equal_mops , hx_mop_t_lexcompare , hx_mop_t_for_all_ops , hx_mop_t_for_all_scattered_submops , hx_mop_t_is_constant , hx_mop_t_get_stkoff , hx_mop_t_make_low_half , hx_mop_t_make_high_half , hx_mop_t_make_first_half , hx_mop_t_make_second_half , hx_mop_t_shift_mop , hx_mop_t_change_size , hx_mop_t_preserve_side_effects , hx_mop_t_apply_ld_mcode , hx_mcallarg_t_print , hx_mcallarg_t_dstr , hx_mcallarg_t_set_regarg , hx_mcallinfo_t_lexcompare , hx_mcallinfo_t_set_type , hx_mcallinfo_t_get_type , hx_mcallinfo_t_print , hx_mcallinfo_t_dstr , hx_mcases_t_compare , hx_mcases_t_print , hx_mcases_t_dstr , hx_vivl_t_extend_to_cover , hx_vivl_t_intersect , hx_vivl_t_print , hx_vivl_t_dstr , hx_chain_t_print , hx_chain_t_dstr , hx_chain_t_append_list_ , hx_block_chains_t_get_chain , hx_block_chains_t_print , hx_block_chains_t_dstr , hx_graph_chains_t_for_all_chains , hx_graph_chains_t_release , hx_minsn_t_init , hx_minsn_t_copy , hx_minsn_t_swap , hx_minsn_t_print , hx_minsn_t_dstr , hx_minsn_t_setaddr , hx_minsn_t_optimize_subtree , hx_minsn_t_for_all_ops , hx_minsn_t_for_all_insns , hx_minsn_t__make_nop , hx_minsn_t_equal_insns , hx_minsn_t_lexcompare , hx_minsn_t_is_noret_call , hx_minsn_t_is_helper , hx_minsn_t_find_call , hx_minsn_t_has_side_effects , hx_minsn_t_find_opcode , hx_minsn_t_find_ins_op , hx_minsn_t_find_num_op , hx_minsn_t_modifies_d , hx_minsn_t_is_between , hx_minsn_t_may_use_aliased_memory , hx_getf_reginsn , hx_getb_reginsn , hx_mblock_t_init , hx_mblock_t_print , hx_mblock_t_dump , hx_mblock_t_vdump_block , hx_mblock_t_insert_into_block , hx_mblock_t_remove_from_block , hx_mblock_t_for_all_insns , hx_mblock_t_for_all_ops , hx_mblock_t_for_all_uses , hx_mblock_t_optimize_insn , hx_mblock_t_optimize_block , hx_mblock_t_build_lists , hx_mblock_t_append_use_list , hx_mblock_t_append_def_list , hx_mblock_t_build_use_list , hx_mblock_t_build_def_list , hx_mblock_t_find_first_use , hx_mblock_t_find_redefinition , hx_mblock_t_is_rhs_redefined , hx_mblock_t_find_access , hx_mblock_t_get_valranges , hx_mba_t_idaloc2vd , hx_mba_t_vd2idaloc , hx_mba_t_term , hx_mba_t_optimize_local , hx_mba_t_build_graph , hx_mba_t_get_graph , hx_mba_t_analyze_calls , hx_mba_t_optimize_global , hx_mba_t_alloc_lvars , hx_mba_t_dump , hx_mba_t_vdump_mba , hx_mba_t_print , hx_mba_t_verify , hx_mba_t_mark_chains_dirty , hx_mba_t_insert_block , hx_mba_t_remove_block , hx_mba_t_remove_empty_and_unreachable_blocks , hx_mba_t_combine_blocks , hx_mba_t_for_all_ops , hx_mba_t_for_all_insns , hx_mba_t_for_all_topinsns , hx_mba_t_find_mop , hx_mba_t_arg , hx_mba_t_serialize , hx_mba_t_deserialize , hx_mbl_graph_t_is_accessed_globally , hx_mbl_graph_t_get_ud , hx_mbl_graph_t_get_du , hx_codegen_t_emit , hx_codegen_t_emit_ , hx_is_kreg , hx_get_temp_regs , hx_get_hexrays_version , hx_open_pseudocode , hx_close_pseudocode , hx_get_widget_vdui , hx_decompile_many , hx_hexrays_failure_t_desc , hx_send_database , hx_gco_info_t_append_to_list , hx_get_current_operand , hx_remitem , hx_negated_relation , hx_swapped_relation , hx_get_op_signness , hx_asgop , hx_asgop_revert , hx_cnumber_t_print , hx_cnumber_t_value , hx_cnumber_t_assign , hx_cnumber_t_compare , hx_var_ref_t_compare , hx_ctree_visitor_t_apply_to , hx_ctree_visitor_t_apply_to_exprs , hx_ctree_parentee_t_recalc_parent_types , hx_cfunc_parentee_t_calc_rvalue_type , hx_citem_locator_t_compare , hx_citem_t_contains_expr , hx_citem_t_contains_label , hx_citem_t_find_parent_of , hx_citem_t_find_closest_addr , hx_cexpr_t_assign , hx_cexpr_t_compare , hx_cexpr_t_replace_by , hx_cexpr_t_cleanup , hx_cexpr_t_put_number , hx_cexpr_t_print1 , hx_cexpr_t_calc_type , hx_cexpr_t_equal_effect , hx_cexpr_t_is_child_of , hx_cexpr_t_contains_operator , hx_cexpr_t_get_high_nbit_bound , hx_cexpr_t_get_low_nbit_bound , hx_cexpr_t_requires_lvalue , hx_cexpr_t_has_side_effects , hx_cif_t_assign , hx_cif_t_compare , hx_cloop_t_assign , hx_cfor_t_compare , hx_cwhile_t_compare , hx_cdo_t_compare , hx_creturn_t_compare , hx_cgoto_t_compare , hx_casm_t_compare , hx_cinsn_t_assign , hx_cinsn_t_compare , hx_cinsn_t_replace_by , hx_cinsn_t_cleanup , hx_cinsn_t_new_insn , hx_cinsn_t_create_if , hx_cinsn_t_print , hx_cinsn_t_print1 , hx_cinsn_t_is_ordinary_flow , hx_cinsn_t_contains_insn , hx_cinsn_t_collect_free_breaks , hx_cinsn_t_collect_free_continues , hx_cblock_t_compare , hx_carglist_t_compare , hx_ccase_t_compare , hx_ccases_t_compare , hx_cswitch_t_compare , hx_ctree_item_t_get_memptr , hx_ctree_item_t_get_lvar , hx_ctree_item_t_get_ea , hx_ctree_item_t_get_label_num , hx_lnot , hx_new_block , hx_vcreate_helper , hx_vcall_helper , hx_make_num , hx_make_ref , hx_dereference , hx_save_user_labels , hx_save_user_cmts , hx_save_user_numforms , hx_save_user_iflags , hx_save_user_unions , hx_restore_user_labels , hx_restore_user_cmts , hx_restore_user_numforms , hx_restore_user_iflags , hx_restore_user_unions , hx_cfunc_t_build_c_tree , hx_cfunc_t_verify , hx_cfunc_t_print_dcl , hx_cfunc_t_print_func , hx_cfunc_t_get_func_type , hx_cfunc_t_get_lvars , hx_cfunc_t_get_stkoff_delta , hx_cfunc_t_find_label , hx_cfunc_t_remove_unused_labels , hx_cfunc_t_get_user_cmt , hx_cfunc_t_set_user_cmt , hx_cfunc_t_get_user_iflags , hx_cfunc_t_set_user_iflags , hx_cfunc_t_has_orphan_cmts , hx_cfunc_t_del_orphan_cmts , hx_cfunc_t_get_user_union_selection , hx_cfunc_t_set_user_union_selection , hx_cfunc_t_get_line_item , hx_cfunc_t_get_warnings , hx_cfunc_t_get_eamap , hx_cfunc_t_get_boundaries , hx_cfunc_t_get_pseudocode , hx_cfunc_t_gather_derefs , hx_cfunc_t_find_item_coords , hx_cfunc_t_cleanup , hx_decompile , hx_gen_microcode , hx_mark_cfunc_dirty , hx_clear_cached_cfuncs , hx_has_cached_cfunc , hx_get_ctype_name , hx_create_field_name , hx_install_hexrays_callback , hx_remove_hexrays_callback , hx_vdui_t_set_locked , hx_vdui_t_refresh_view , hx_vdui_t_refresh_ctext , hx_vdui_t_switch_to , hx_vdui_t_get_number , hx_vdui_t_get_current_label , hx_vdui_t_clear , hx_vdui_t_refresh_cpos , hx_vdui_t_get_current_item , hx_vdui_t_ui_rename_lvar , hx_vdui_t_rename_lvar , hx_vdui_t_ui_set_call_type , hx_vdui_t_ui_set_lvar_type , hx_vdui_t_set_lvar_type , hx_vdui_t_ui_edit_lvar_cmt , hx_vdui_t_set_lvar_cmt , hx_vdui_t_ui_map_lvar , hx_vdui_t_ui_unmap_lvar , hx_vdui_t_map_lvar , hx_vdui_t_set_strmem_type , hx_vdui_t_rename_strmem , hx_vdui_t_set_global_type , hx_vdui_t_rename_global , hx_vdui_t_rename_label , hx_vdui_t_jump_enter , hx_vdui_t_ctree_to_disasm , hx_vdui_t_calc_cmt_type , hx_vdui_t_edit_cmt , hx_vdui_t_edit_func_cmt , hx_vdui_t_del_orphan_cmts , hx_vdui_t_set_num_radix , hx_vdui_t_set_num_enum , hx_vdui_t_set_num_stroff , hx_vdui_t_invert_sign , hx_vdui_t_invert_bits , hx_vdui_t_collapse_item , hx_vdui_t_collapse_lvars , hx_vdui_t_split_item , hx_hexrays_alloc , hx_hexrays_free , hx_vdui_t_set_noptr_lvar , hx_select_udt_by_offset , hx_mblock_t_get_valranges_ , hx_cfunc_t_refresh_func_ctext , hx_checkout_hexrays_license , hx_mba_t_copy_block , hx_mblock_t_optimize_useless_jump , hx_mblock_t_get_reginsn_qty , hx_modify_user_lvar_info , hx_cdg_insn_iterator_t_next , hx_restore_user_labels2 , hx_save_user_labels2 , hx_mba_ranges_t_range_contains , hx_close_hexrays_waitbox , hx_mba_t_map_fict_ea , hx_mba_t_alloc_fict_ea , hx_mba_t_alloc_kreg , hx_mba_t_free_kreg , hx_mba_t_idaloc2vd_ , hx_mba_t_vd2idaloc_ , hx_bitset_t_fill_gaps , hx_cfunc_t_save_user_labels , hx_cfunc_t_save_user_cmts , hx_cfunc_t_save_user_numforms , hx_cfunc_t_save_user_iflags , hx_cfunc_t_save_user_unions , hx_minsn_t_set_combined , hx_mba_t_save_snapshot , hx_create_cfunc , hx_mba_t_set_maturity , hx_rename_lvar , hx_locate_lvar , hx_mba_t_create_helper_call , hx_lvar_t_append_list , hx_chain_t_append_list , hx_udc_filter_t_cleanup , hx_mba_t_get_curfunc , hx_mop_t__make_gvar , hx_mop_t_make_gvar , hx_cexpr_t_maybe_ptr , hx_minsn_t_serialize , hx_minsn_t_deserialize , hx_mba_t_stkoff_vd2ida , hx_mba_t_stkoff_ida2vd , hx_cexpr_t_dstr , hx_cinsn_t_dstr , hx_ctree_item_t_print , hx_ctree_item_t_dstr , hx_mba_t_set_lvar_name , hx_change_hexrays_config , hx_mba_t_get_func_output_lists } |
API call numbers. More... | |
Functions | |
void * | hexrays_alloc (size_t size) |
void | hexrays_free (void *ptr) |
DECLARE_TYPE_AS_MOVABLE (valrng_t) | |
THREAD_SAFE bool | is_may_access (maymust_t maymust) |
ea_t | get_merror_desc (qstring *out, merror_t code, mba_t *mba) |
Get textual description of an error code. More... | |
THREAD_SAFE bool | must_mcode_close_block (mcode_t mcode, bool including_calls) |
Must an instruction with the given opcode be the last one in a block? Such opcodes are called closing opcodes. More... | |
THREAD_SAFE bool | is_mcode_propagatable (mcode_t mcode) |
May opcode be propagated? Such opcodes can be used in sub-instructions (nested instructions) There is a handful of non-propagatable opcodes, like jumps, ret, nop, etc All other regular opcodes are propagatable and may appear in a nested instruction. More... | |
THREAD_SAFE bool | is_mcode_addsub (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_xdsu (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_set (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_set1 (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_j1 (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_jcond (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_convertible_to_jmp (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_convertible_to_set (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_call (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_fpu (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_commutative (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_shift (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_divmod (mcode_t op) |
THREAD_SAFE bool | has_mcode_seloff (mcode_t op) |
THREAD_SAFE mcode_t | set2jcnd (mcode_t code) |
THREAD_SAFE mcode_t | jcnd2set (mcode_t code) |
THREAD_SAFE mcode_t | negate_mcode_relation (mcode_t code) |
THREAD_SAFE mcode_t | swap_mcode_relation (mcode_t code) |
THREAD_SAFE mcode_t | get_signed_mcode (mcode_t code) |
THREAD_SAFE mcode_t | get_unsigned_mcode (mcode_t code) |
THREAD_SAFE bool | is_signed_mcode (mcode_t code) |
THREAD_SAFE bool | is_unsigned_mcode (mcode_t code) |
THREAD_SAFE bool | mcode_modifies_d (mcode_t mcode) |
const char * | dstr (const tinfo_t *tif) |
Print the specified type info. More... | |
bool | is_type_correct (const type_t *ptr) |
Verify a type string. More... | |
bool | is_small_udt (const tinfo_t &tif) |
Is a small structure or union? More... | |
bool | is_nonbool_type (const tinfo_t &type) |
Is definitely a non-boolean type? More... | |
bool | is_bool_type (const tinfo_t &type) |
Is a boolean type? More... | |
THREAD_SAFE bool | is_ptr_or_array (type_t t) |
Is a pointer or array type? More... | |
THREAD_SAFE bool | is_paf (type_t t) |
Is a pointer, array, or function type? More... | |
THREAD_SAFE bool | is_inplace_def (const tinfo_t &type) |
Is struct/union/enum definition (not declaration)? More... | |
int | partial_type_num (const tinfo_t &type) |
Calculate number of partial subtypes. More... | |
tinfo_t | get_float_type (int width) |
Get a type of a floating point value with the specified width. More... | |
tinfo_t | get_int_type_by_width_and_sign (int srcwidth, type_sign_t sign) |
Create a type info by width and sign. More... | |
tinfo_t | get_unk_type (int size) |
Create a partial type info by width. More... | |
tinfo_t | dummy_ptrtype (int ptrsize, bool isfp) |
Generate a dummy pointer type. More... | |
bool | get_member_type (const member_t *mptr, tinfo_t *type) |
Get type of a structure field. More... | |
tinfo_t | make_pointer (const tinfo_t &type) |
Create a pointer type. More... | |
tinfo_t | create_typedef (const char *name) |
Create a reference to a named type. More... | |
tinfo_t | create_typedef (int n) |
Create a reference to an ordinal type. More... | |
bool | get_type (uval_t id, tinfo_t *tif, type_source_t guess) |
Get a global type. More... | |
bool | set_type (uval_t id, const tinfo_t &tif, type_source_t source, bool force=false) |
Set a global type. More... | |
void | print_vdloc (qstring *vout, const vdloc_t &loc, int nbytes) |
Print vdloc. More... | |
bool | arglocs_overlap (const vdloc_t &loc1, size_t w1, const vdloc_t &loc2, size_t w2) |
Do two arglocs overlap? More... | |
DECLARE_TYPE_AS_MOVABLE (lvar_t) | |
DECLARE_TYPE_AS_MOVABLE (lvar_saved_info_t) | |
bool | restore_user_lvar_settings (lvar_uservec_t *lvinf, ea_t func_ea) |
Restore user defined local variable settings in the database. More... | |
void | save_user_lvar_settings (ea_t func_ea, const lvar_uservec_t &lvinf) |
Save user defined local variable settings into the database. More... | |
bool | modify_user_lvars (ea_t entry_ea, user_lvar_modifier_t &mlv) |
Modify saved local variable settings. More... | |
bool | modify_user_lvar_info (ea_t func_ea, uint mli_flags, const lvar_saved_info_t &info) |
Modify saved local variable settings of one variable. More... | |
bool | locate_lvar (lvar_locator_t *out, ea_t func_ea, const char *varname) |
Find a variable by name. More... | |
bool | rename_lvar (ea_t func_ea, const char *oldname, const char *newname) |
Rename a local variable. More... | |
bool | restore_user_defined_calls (udcall_map_t *udcalls, ea_t func_ea) |
Restore user defined function calls from the database. More... | |
void | save_user_defined_calls (ea_t func_ea, const udcall_map_t &udcalls) |
Save user defined local function calls into the database. More... | |
bool | parse_user_call (udcall_t *udc, const char *decl, bool silent) |
Convert function type declaration into internal structure. More... | |
merror_t | convert_to_user_call (const udcall_t &udc, codegen_t &cdg) |
try to generate user-defined call for an instruction More... | |
bool | install_microcode_filter (microcode_filter_t *filter, bool install=true) |
register/unregister non-standard microcode generator More... | |
DECLARE_TYPE_AS_MOVABLE (bitset_t) | |
DECLARE_TYPE_AS_MOVABLE (ivl_t) | |
DECLARE_TYPE_AS_MOVABLE (ivlset_t) | |
DECLARE_TYPE_AS_MOVABLE (rlist_t) | |
DECLARE_TYPE_AS_MOVABLE (mlist_t) | |
DECLARE_TYPE_AS_MOVABLE (mlistvec_t) | |
const mlist_t & | get_temp_regs (void) |
Get list of temporary registers. More... | |
bool | is_kreg (mreg_t r) |
Is a kernel register? Kernel registers are temporary registers that can be used freely. More... | |
mreg_t | reg2mreg (int reg) |
Map a processor register to a microregister. More... | |
int | mreg2reg (mreg_t reg, int width) |
Map a microregister to a processor register. More... | |
int | get_mreg_name (qstring *out, mreg_t reg, int width, void *ud=nullptr) |
Get the microregister name. More... | |
void | install_optinsn_handler (optinsn_t *opt) |
Install an instruction level custom optimizer. More... | |
bool | remove_optinsn_handler (optinsn_t *opt) |
Remove an instruction level custom optimizer. More... | |
void | install_optblock_handler (optblock_t *opt) |
Install a block level custom optimizer. More... | |
bool | remove_optblock_handler (optblock_t *opt) |
Remove a block level custom optimizer. More... | |
DECLARE_TYPE_AS_MOVABLE (mop_t) | |
DECLARE_TYPE_AS_MOVABLE (mcallarg_t) | |
const minsn_t * | getf_reginsn (const minsn_t *ins) |
Skip assertions forward. More... | |
const minsn_t * | getb_reginsn (const minsn_t *ins) |
Skip assertions backward. More... | |
minsn_t * | getf_reginsn (minsn_t *ins) |
minsn_t * | getb_reginsn (minsn_t *ins) |
DECLARE_TYPE_AS_MOVABLE (hexwarn_t) | |
bool | change_hexrays_config (const char *directive) |
Parse DIRECTIVE and update the current configuration variables. More... | |
const char * | get_hexrays_version (void) |
Get decompiler version. More... | |
bool | checkout_hexrays_license (bool silent) |
Check out a floating decompiler license. More... | |
vdui_t * | open_pseudocode (ea_t ea, int flags) |
Open pseudocode window. More... | |
bool | close_pseudocode (TWidget *f) |
Close pseudocode window. More... | |
vdui_t * | get_widget_vdui (TWidget *f) |
Get the vdui_t instance associated to the TWidget. More... | |
bool | decompile_many (const char *outfile, const eavec_t *funcaddrs, int flags) |
Batch decompilation. More... | |
void | send_database (const hexrays_failure_t &err, bool silent) |
Send the database to Hex-Rays. More... | |
bool | get_current_operand (gco_info_t *out) |
Get the instruction operand under the cursor. More... | |
void | remitem (const citem_t *e) |
ctype_t | negated_relation (ctype_t op) |
Negate a comparison operator. For example, cot_sge becomes cot_slt. More... | |
ctype_t | swapped_relation (ctype_t op) |
Swap a comparison operator. For example, cot_sge becomes cot_sle. More... | |
type_sign_t | get_op_signness (ctype_t op) |
Get operator sign. Meaningful for sign-dependent operators, like cot_sdiv. More... | |
ctype_t | asgop (ctype_t cop) |
Convert plain operator into assignment operator. For example, cot_add returns cot_asgadd. More... | |
ctype_t | asgop_revert (ctype_t cop) |
Convert assignment operator into plain operator. More... | |
bool | op_uses_x (ctype_t op) |
Does operator use the 'x' field of cexpr_t? More... | |
bool | op_uses_y (ctype_t op) |
Does operator use the 'y' field of cexpr_t? More... | |
bool | op_uses_z (ctype_t op) |
Does operator use the 'z' field of cexpr_t? More... | |
bool | is_binary (ctype_t op) |
Is binary operator? More... | |
bool | is_unary (ctype_t op) |
Is unary operator? More... | |
bool | is_relational (ctype_t op) |
Is comparison operator? More... | |
bool | is_assignment (ctype_t op) |
Is assignment operator? More... | |
bool | accepts_udts (ctype_t op) |
bool | is_prepost (ctype_t op) |
Is pre/post increment/decrement operator? More... | |
bool | is_commutative (ctype_t op) |
Is commutative operator? More... | |
bool | is_additive (ctype_t op) |
Is additive operator? More... | |
bool | is_multiplicative (ctype_t op) |
Is multiplicative operator? More... | |
bool | is_bitop (ctype_t op) |
Is bit related operator? More... | |
bool | is_logical (ctype_t op) |
Is logical operator? More... | |
bool | is_loop (ctype_t op) |
Is loop statement code? More... | |
bool | is_break_consumer (ctype_t op) |
Does a break statement influence the specified statement code? More... | |
bool | is_lvalue (ctype_t op) |
Is Lvalue operator? More... | |
bool | accepts_small_udts (ctype_t op) |
Is the operator allowed on small structure or union? More... | |
DECLARE_TYPE_AS_MOVABLE (citem_t) | |
DECLARE_TYPE_AS_MOVABLE (cexpr_t) | |
DECLARE_TYPE_AS_MOVABLE (ceinsn_t) | |
DECLARE_TYPE_AS_MOVABLE (cinsn_t) | |
DECLARE_TYPE_AS_MOVABLE (carg_t) | |
DECLARE_TYPE_AS_MOVABLE (ccase_t) | |
cexpr_t * | lnot (cexpr_t *e) |
Logically negate the specified expression. More... | |
cinsn_t * | new_block (void) |
Create a new block-statement. More... | |
cexpr_t * | vcreate_helper (bool standalone, const tinfo_t &type, const char *format, va_list va) |
cexpr_t * | create_helper (bool standalone, const tinfo_t &type, const char *format,...) |
cexpr_t * | vcall_helper (const tinfo_t &rettype, carglist_t *args, const char *format, va_list va) |
cexpr_t * | call_helper (const tinfo_t &rettype, carglist_t *args, const char *format,...) |
cexpr_t * | make_num (uint64 n, cfunc_t *func=nullptr, ea_t ea=BADADDR, int opnum=0, type_sign_t sign=no_sign, int size=0) |
Create a number expression. More... | |
cexpr_t * | make_ref (cexpr_t *e) |
Create a reference. More... | |
cexpr_t * | dereference (cexpr_t *e, int ptrsize, bool is_flt=false) |
Dereference a pointer. More... | |
void | save_user_labels (ea_t func_ea, const user_labels_t *user_labels) |
Save user defined labels into the database. More... | |
void | save_user_labels2 (ea_t func_ea, const user_labels_t *user_labels, const cfunc_t *func=nullptr) |
void | save_user_cmts (ea_t func_ea, const user_cmts_t *user_cmts) |
Save user defined comments into the database. More... | |
void | save_user_numforms (ea_t func_ea, const user_numforms_t *numforms) |
Save user defined number formats into the database. More... | |
void | save_user_iflags (ea_t func_ea, const user_iflags_t *iflags) |
Save user defined citem iflags into the database. More... | |
void | save_user_unions (ea_t func_ea, const user_unions_t *unions) |
Save user defined union field selections into the database. More... | |
user_labels_t * | restore_user_labels (ea_t func_ea) |
Restore user defined labels from the database. More... | |
user_labels_t * | restore_user_labels2 (ea_t func_ea, const cfunc_t *func=nullptr) |
user_cmts_t * | restore_user_cmts (ea_t func_ea) |
Restore user defined comments from the database. More... | |
user_numforms_t * | restore_user_numforms (ea_t func_ea) |
Restore user defined number formats from the database. More... | |
user_iflags_t * | restore_user_iflags (ea_t func_ea) |
Restore user defined citem iflags from the database. More... | |
user_unions_t * | restore_user_unions (ea_t func_ea) |
Restore user defined union field selections from the database. More... | |
void | close_hexrays_waitbox (void) |
Close the waitbox displayed by the decompiler. More... | |
cfuncptr_t | decompile (const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr, int decomp_flags=0) |
Decompile a snippet or a function. More... | |
cfuncptr_t | decompile_func (func_t *pfn, hexrays_failure_t *hf=nullptr, int decomp_flags=0) |
Decompile a function. More... | |
cfuncptr_t | decompile_snippet (const rangevec_t &ranges, hexrays_failure_t *hf=nullptr, int decomp_flags=0) |
Decompile a snippet. More... | |
mba_t * | gen_microcode (const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr, const mlist_t *retlist=nullptr, int decomp_flags=0, mba_maturity_t reqmat=MMAT_GLBOPT3) |
Generate microcode of an arbitrary code snippet. More... | |
mba_t * | create_empty_mba (const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr) |
Create an empty microcode object. More... | |
cfuncptr_t | create_cfunc (mba_t *mba) |
Create a new cfunc_t object. More... | |
bool | mark_cfunc_dirty (ea_t ea, bool close_views=false) |
Flush the cached decompilation results. More... | |
void | clear_cached_cfuncs (void) |
Flush all cached decompilation results. More... | |
bool | has_cached_cfunc (ea_t ea) |
Do we have a cached decompilation result for 'ea'? More... | |
const char * | get_ctype_name (ctype_t op) |
qstring | create_field_name (const tinfo_t &type, uval_t offset=BADADDR) |
enum hexrays_event_t | ENUM_SIZE (int) |
Decompiler events. More... | |
bool | install_hexrays_callback (hexrays_cb_t *callback, void *ud) |
Install handler for decompiler events. More... | |
int | remove_hexrays_callback (hexrays_cb_t *callback, void *ud) |
Uninstall handler for decompiler events. More... | |
DECLARE_TYPE_AS_MOVABLE (ui_stroff_op_t) | |
int | select_udt_by_offset (const qvector< tinfo_t > *udts, const ui_stroff_ops_t &ops, ui_stroff_applicator_t &applicator) |
Select UDT. More... | |
bool | init_hexrays_plugin (int flags=0) |
Check that your plugin is compatible with hex-rays decompiler. More... | |
void | term_hexrays_plugin () |
Stop working with hex-rays decompiler. More... | |
operand_locator_t const & | user_numforms_first (user_numforms_iterator_t p) |
Get reference to the current map key. More... | |
number_format_t & | user_numforms_second (user_numforms_iterator_t p) |
Get reference to the current map value. More... | |
user_numforms_iterator_t | user_numforms_find (const user_numforms_t *map, const operand_locator_t &key) |
Find the specified key in user_numforms_t. More... | |
user_numforms_iterator_t | user_numforms_insert (user_numforms_t *map, const operand_locator_t &key, const number_format_t &val) |
Insert new (operand_locator_t, number_format_t) pair into user_numforms_t. More... | |
user_numforms_iterator_t | user_numforms_begin (const user_numforms_t *map) |
Get iterator pointing to the beginning of user_numforms_t. More... | |
user_numforms_iterator_t | user_numforms_end (const user_numforms_t *map) |
Get iterator pointing to the end of user_numforms_t. More... | |
user_numforms_iterator_t | user_numforms_next (user_numforms_iterator_t p) |
Move to the next element. More... | |
user_numforms_iterator_t | user_numforms_prev (user_numforms_iterator_t p) |
Move to the previous element. More... | |
void | user_numforms_erase (user_numforms_t *map, user_numforms_iterator_t p) |
Erase current element from user_numforms_t. More... | |
void | user_numforms_clear (user_numforms_t *map) |
Clear user_numforms_t. More... | |
size_t | user_numforms_size (user_numforms_t *map) |
Get size of user_numforms_t. More... | |
void | user_numforms_free (user_numforms_t *map) |
Delete user_numforms_t instance. More... | |
user_numforms_t * | user_numforms_new () |
Create a new user_numforms_t instance. More... | |
lvar_locator_t const & | lvar_mapping_first (lvar_mapping_iterator_t p) |
Get reference to the current map key. More... | |
lvar_locator_t & | lvar_mapping_second (lvar_mapping_iterator_t p) |
Get reference to the current map value. More... | |
lvar_mapping_iterator_t | lvar_mapping_find (const lvar_mapping_t *map, const lvar_locator_t &key) |
Find the specified key in lvar_mapping_t. More... | |
lvar_mapping_iterator_t | lvar_mapping_insert (lvar_mapping_t *map, const lvar_locator_t &key, const lvar_locator_t &val) |
Insert new (lvar_locator_t, lvar_locator_t) pair into lvar_mapping_t. More... | |
lvar_mapping_iterator_t | lvar_mapping_begin (const lvar_mapping_t *map) |
Get iterator pointing to the beginning of lvar_mapping_t. More... | |
lvar_mapping_iterator_t | lvar_mapping_end (const lvar_mapping_t *map) |
Get iterator pointing to the end of lvar_mapping_t. More... | |
lvar_mapping_iterator_t | lvar_mapping_next (lvar_mapping_iterator_t p) |
Move to the next element. More... | |
lvar_mapping_iterator_t | lvar_mapping_prev (lvar_mapping_iterator_t p) |
Move to the previous element. More... | |
void | lvar_mapping_erase (lvar_mapping_t *map, lvar_mapping_iterator_t p) |
Erase current element from lvar_mapping_t. More... | |
void | lvar_mapping_clear (lvar_mapping_t *map) |
Clear lvar_mapping_t. More... | |
size_t | lvar_mapping_size (lvar_mapping_t *map) |
Get size of lvar_mapping_t. More... | |
void | lvar_mapping_free (lvar_mapping_t *map) |
Delete lvar_mapping_t instance. More... | |
lvar_mapping_t * | lvar_mapping_new () |
Create a new lvar_mapping_t instance. More... | |
ea_t const & | udcall_map_first (udcall_map_iterator_t p) |
Get reference to the current map key. More... | |
udcall_t & | udcall_map_second (udcall_map_iterator_t p) |
Get reference to the current map value. More... | |
udcall_map_iterator_t | udcall_map_find (const udcall_map_t *map, const ea_t &key) |
Find the specified key in udcall_map_t. More... | |
udcall_map_iterator_t | udcall_map_insert (udcall_map_t *map, const ea_t &key, const udcall_t &val) |
Insert new (ea_t, udcall_t) pair into udcall_map_t. More... | |
udcall_map_iterator_t | udcall_map_begin (const udcall_map_t *map) |
Get iterator pointing to the beginning of udcall_map_t. More... | |
udcall_map_iterator_t | udcall_map_end (const udcall_map_t *map) |
Get iterator pointing to the end of udcall_map_t. More... | |
udcall_map_iterator_t | udcall_map_next (udcall_map_iterator_t p) |
Move to the next element. More... | |
udcall_map_iterator_t | udcall_map_prev (udcall_map_iterator_t p) |
Move to the previous element. More... | |
void | udcall_map_erase (udcall_map_t *map, udcall_map_iterator_t p) |
Erase current element from udcall_map_t. More... | |
void | udcall_map_clear (udcall_map_t *map) |
Clear udcall_map_t. More... | |
size_t | udcall_map_size (udcall_map_t *map) |
Get size of udcall_map_t. More... | |
void | udcall_map_free (udcall_map_t *map) |
Delete udcall_map_t instance. More... | |
udcall_map_t * | udcall_map_new () |
Create a new udcall_map_t instance. More... | |
treeloc_t const & | user_cmts_first (user_cmts_iterator_t p) |
Get reference to the current map key. More... | |
citem_cmt_t & | user_cmts_second (user_cmts_iterator_t p) |
Get reference to the current map value. More... | |
user_cmts_iterator_t | user_cmts_find (const user_cmts_t *map, const treeloc_t &key) |
Find the specified key in user_cmts_t. More... | |
user_cmts_iterator_t | user_cmts_insert (user_cmts_t *map, const treeloc_t &key, const citem_cmt_t &val) |
Insert new (treeloc_t, citem_cmt_t) pair into user_cmts_t. More... | |
user_cmts_iterator_t | user_cmts_begin (const user_cmts_t *map) |
Get iterator pointing to the beginning of user_cmts_t. More... | |
user_cmts_iterator_t | user_cmts_end (const user_cmts_t *map) |
Get iterator pointing to the end of user_cmts_t. More... | |
user_cmts_iterator_t | user_cmts_next (user_cmts_iterator_t p) |
Move to the next element. More... | |
user_cmts_iterator_t | user_cmts_prev (user_cmts_iterator_t p) |
Move to the previous element. More... | |
void | user_cmts_erase (user_cmts_t *map, user_cmts_iterator_t p) |
Erase current element from user_cmts_t. More... | |
void | user_cmts_clear (user_cmts_t *map) |
Clear user_cmts_t. More... | |
size_t | user_cmts_size (user_cmts_t *map) |
Get size of user_cmts_t. More... | |
void | user_cmts_free (user_cmts_t *map) |
Delete user_cmts_t instance. More... | |
user_cmts_t * | user_cmts_new () |
Create a new user_cmts_t instance. More... | |
citem_locator_t const & | user_iflags_first (user_iflags_iterator_t p) |
Get reference to the current map key. More... | |
int32 & | user_iflags_second (user_iflags_iterator_t p) |
Get reference to the current map value. More... | |
user_iflags_iterator_t | user_iflags_find (const user_iflags_t *map, const citem_locator_t &key) |
Find the specified key in user_iflags_t. More... | |
user_iflags_iterator_t | user_iflags_insert (user_iflags_t *map, const citem_locator_t &key, const int32 &val) |
Insert new (citem_locator_t, int32) pair into user_iflags_t. More... | |
user_iflags_iterator_t | user_iflags_begin (const user_iflags_t *map) |
Get iterator pointing to the beginning of user_iflags_t. More... | |
user_iflags_iterator_t | user_iflags_end (const user_iflags_t *map) |
Get iterator pointing to the end of user_iflags_t. More... | |
user_iflags_iterator_t | user_iflags_next (user_iflags_iterator_t p) |
Move to the next element. More... | |
user_iflags_iterator_t | user_iflags_prev (user_iflags_iterator_t p) |
Move to the previous element. More... | |
void | user_iflags_erase (user_iflags_t *map, user_iflags_iterator_t p) |
Erase current element from user_iflags_t. More... | |
void | user_iflags_clear (user_iflags_t *map) |
Clear user_iflags_t. More... | |
size_t | user_iflags_size (user_iflags_t *map) |
Get size of user_iflags_t. More... | |
void | user_iflags_free (user_iflags_t *map) |
Delete user_iflags_t instance. More... | |
user_iflags_t * | user_iflags_new () |
Create a new user_iflags_t instance. More... | |
ea_t const & | user_unions_first (user_unions_iterator_t p) |
Get reference to the current map key. More... | |
intvec_t & | user_unions_second (user_unions_iterator_t p) |
Get reference to the current map value. More... | |
user_unions_iterator_t | user_unions_find (const user_unions_t *map, const ea_t &key) |
Find the specified key in user_unions_t. More... | |
user_unions_iterator_t | user_unions_insert (user_unions_t *map, const ea_t &key, const intvec_t &val) |
Insert new (ea_t, intvec_t) pair into user_unions_t. More... | |
user_unions_iterator_t | user_unions_begin (const user_unions_t *map) |
Get iterator pointing to the beginning of user_unions_t. More... | |
user_unions_iterator_t | user_unions_end (const user_unions_t *map) |
Get iterator pointing to the end of user_unions_t. More... | |
user_unions_iterator_t | user_unions_next (user_unions_iterator_t p) |
Move to the next element. More... | |
user_unions_iterator_t | user_unions_prev (user_unions_iterator_t p) |
Move to the previous element. More... | |
void | user_unions_erase (user_unions_t *map, user_unions_iterator_t p) |
Erase current element from user_unions_t. More... | |
void | user_unions_clear (user_unions_t *map) |
Clear user_unions_t. More... | |
size_t | user_unions_size (user_unions_t *map) |
Get size of user_unions_t. More... | |
void | user_unions_free (user_unions_t *map) |
Delete user_unions_t instance. More... | |
user_unions_t * | user_unions_new () |
Create a new user_unions_t instance. More... | |
int const & | user_labels_first (user_labels_iterator_t p) |
Get reference to the current map key. More... | |
qstring & | user_labels_second (user_labels_iterator_t p) |
Get reference to the current map value. More... | |
user_labels_iterator_t | user_labels_find (const user_labels_t *map, const int &key) |
Find the specified key in user_labels_t. More... | |
user_labels_iterator_t | user_labels_insert (user_labels_t *map, const int &key, const qstring &val) |
Insert new (int, qstring) pair into user_labels_t. More... | |
user_labels_iterator_t | user_labels_begin (const user_labels_t *map) |
Get iterator pointing to the beginning of user_labels_t. More... | |
user_labels_iterator_t | user_labels_end (const user_labels_t *map) |
Get iterator pointing to the end of user_labels_t. More... | |
user_labels_iterator_t | user_labels_next (user_labels_iterator_t p) |
Move to the next element. More... | |
user_labels_iterator_t | user_labels_prev (user_labels_iterator_t p) |
Move to the previous element. More... | |
void | user_labels_erase (user_labels_t *map, user_labels_iterator_t p) |
Erase current element from user_labels_t. More... | |
void | user_labels_clear (user_labels_t *map) |
Clear user_labels_t. More... | |
size_t | user_labels_size (user_labels_t *map) |
Get size of user_labels_t. More... | |
void | user_labels_free (user_labels_t *map) |
Delete user_labels_t instance. More... | |
user_labels_t * | user_labels_new () |
Create a new user_labels_t instance. More... | |
ea_t const & | eamap_first (eamap_iterator_t p) |
Get reference to the current map key. More... | |
cinsnptrvec_t & | eamap_second (eamap_iterator_t p) |
Get reference to the current map value. More... | |
eamap_iterator_t | eamap_find (const eamap_t *map, const ea_t &key) |
Find the specified key in eamap_t. More... | |
eamap_iterator_t | eamap_insert (eamap_t *map, const ea_t &key, const cinsnptrvec_t &val) |
Insert new (ea_t, cinsnptrvec_t) pair into eamap_t. More... | |
eamap_iterator_t | eamap_begin (const eamap_t *map) |
Get iterator pointing to the beginning of eamap_t. More... | |
eamap_iterator_t | eamap_end (const eamap_t *map) |
Get iterator pointing to the end of eamap_t. More... | |
eamap_iterator_t | eamap_next (eamap_iterator_t p) |
Move to the next element. More... | |
eamap_iterator_t | eamap_prev (eamap_iterator_t p) |
Move to the previous element. More... | |
void | eamap_erase (eamap_t *map, eamap_iterator_t p) |
Erase current element from eamap_t. More... | |
void | eamap_clear (eamap_t *map) |
Clear eamap_t. More... | |
size_t | eamap_size (eamap_t *map) |
Get size of eamap_t. More... | |
void | eamap_free (eamap_t *map) |
Delete eamap_t instance. More... | |
eamap_t * | eamap_new () |
Create a new eamap_t instance. More... | |
cinsn_t *const & | boundaries_first (boundaries_iterator_t p) |
Get reference to the current map key. More... | |
rangeset_t & | boundaries_second (boundaries_iterator_t p) |
Get reference to the current map value. More... | |
boundaries_iterator_t | boundaries_find (const boundaries_t *map, const cinsn_t *&key) |
Find the specified key in boundaries_t. More... | |
boundaries_iterator_t | boundaries_insert (boundaries_t *map, const cinsn_t *&key, const rangeset_t &val) |
Insert new (cinsn_t *, rangeset_t) pair into boundaries_t. More... | |
boundaries_iterator_t | boundaries_begin (const boundaries_t *map) |
Get iterator pointing to the beginning of boundaries_t. More... | |
boundaries_iterator_t | boundaries_end (const boundaries_t *map) |
Get iterator pointing to the end of boundaries_t. More... | |
boundaries_iterator_t | boundaries_next (boundaries_iterator_t p) |
Move to the next element. More... | |
boundaries_iterator_t | boundaries_prev (boundaries_iterator_t p) |
Move to the previous element. More... | |
void | boundaries_erase (boundaries_t *map, boundaries_iterator_t p) |
Erase current element from boundaries_t. More... | |
void | boundaries_clear (boundaries_t *map) |
Clear boundaries_t. More... | |
size_t | boundaries_size (boundaries_t *map) |
Get size of boundaries_t. More... | |
void | boundaries_free (boundaries_t *map) |
Delete boundaries_t instance. More... | |
boundaries_t * | boundaries_new () |
Create a new boundaries_t instance. More... | |
chain_t & | block_chains_get (block_chains_iterator_t p) |
Get reference to the current set value. More... | |
block_chains_iterator_t | block_chains_find (const block_chains_t *set, const chain_t &val) |
Find the specified key in set block_chains_t. More... | |
block_chains_iterator_t | block_chains_insert (block_chains_t *set, const chain_t &val) |
Insert new (chain_t) into set block_chains_t. More... | |
block_chains_iterator_t | block_chains_begin (const block_chains_t *set) |
Get iterator pointing to the beginning of block_chains_t. More... | |
block_chains_iterator_t | block_chains_end (const block_chains_t *set) |
Get iterator pointing to the end of block_chains_t. More... | |
block_chains_iterator_t | block_chains_next (block_chains_iterator_t p) |
Move to the next element. More... | |
block_chains_iterator_t | block_chains_prev (block_chains_iterator_t p) |
Move to the previous element. More... | |
void | block_chains_erase (block_chains_t *set, block_chains_iterator_t p) |
Erase current element from block_chains_t. More... | |
void | block_chains_clear (block_chains_t *set) |
Clear block_chains_t. More... | |
size_t | block_chains_size (block_chains_t *set) |
Get size of block_chains_t. More... | |
void | block_chains_free (block_chains_t *set) |
Delete block_chains_t instance. More... | |
block_chains_t * | block_chains_new () |
Create a new block_chains_t instance. More... | |
Variables | |
const uvlr_t | MAX_VALUE = uvlr_t(-1) |
const svlr_t | MAX_SVALUE = svlr_t(uvlr_t(-1) >> 1) |
const svlr_t | MIN_SVALUE = ~MAX_SVALUE |
const maymust_t | MUST_ACCESS = 0x00 |
const maymust_t | MAY_ACCESS = 0x01 |
const maymust_t | MAYMUST_ACCESS_MASK = 0x01 |
const maymust_t | ONE_ACCESS_TYPE = 0x20 |
const maymust_t | INCLUDE_SPOILED_REGS = 0x40 |
const maymust_t | EXCLUDE_PASS_REGS = 0x80 |
const maymust_t | FULL_XDSU = 0x100 |
const maymust_t | WITH_ASSERTS = 0x200 |
const maymust_t | EXCLUDE_VOLATILE = 0x400 |
const maymust_t | INCLUDE_UNUSED_SRC = 0x800 |
const maymust_t | INCLUDE_DEAD_RETREGS = 0x1000 |
const maymust_t | INCLUDE_RESTRICTED = 0x2000 |
const maymust_t | CALL_SPOILS_ONLY_ARGS = 0x4000 |
const mreg_t | mr_none = mreg_t(-1) |
const mreg_t | mr_cf = mreg_t(0) |
const mreg_t | mr_zf = mreg_t(1) |
const mreg_t | mr_sf = mreg_t(2) |
const mreg_t | mr_of = mreg_t(3) |
const mreg_t | mr_pf = mreg_t(4) |
const int | cc_count = mr_pf - mr_cf + 1 |
const mreg_t | mr_cc = mreg_t(5) |
const mreg_t | mr_first = mreg_t(8) |
const size_t | bitset_width = sizeof(mbitmap_t) * CHAR_BIT |
const size_t | bitset_align = bitset_width - 1 |
const size_t | bitset_shift = 6 |
const mopt_t | mop_z = 0 |
none More... | |
const mopt_t | mop_r = 1 |
register (they exist until MMAT_LVARS) More... | |
const mopt_t | mop_n = 2 |
immediate number constant More... | |
const mopt_t | mop_str = 3 |
immediate string constant (user representation) More... | |
const mopt_t | mop_d = 4 |
result of another instruction More... | |
const mopt_t | mop_S = 5 |
local stack variable (they exist until MMAT_LVARS) More... | |
const mopt_t | mop_v = 6 |
global variable More... | |
const mopt_t | mop_b = 7 |
micro basic block (mblock_t) More... | |
const mopt_t | mop_f = 8 |
list of arguments More... | |
const mopt_t | mop_l = 9 |
local variable More... | |
const mopt_t | mop_a = 10 |
mop_addr_t: address of operand (mop_l, mop_v, mop_S, mop_r) More... | |
const mopt_t | mop_h = 11 |
helper function More... | |
const mopt_t | mop_c = 12 |
mcases More... | |
const mopt_t | mop_fn = 13 |
floating point constant More... | |
const mopt_t | mop_p = 14 |
operand pair More... | |
const mopt_t | mop_sc = 15 |
scattered More... | |
const int | NOSIZE = -1 |
wrong or unexisting operand size More... | |
const int64 | HEXRAYS_API_MAGIC = 0x00DEC0DE00000003LL |
const cmt_type_t | CMT_NONE = 0x0000 |
No comment is possible. More... | |
const cmt_type_t | CMT_TAIL = 0x0001 |
Indented comment. More... | |
const cmt_type_t | CMT_BLOCK1 = 0x0002 |
Anterioir block comment. More... | |
const cmt_type_t | CMT_BLOCK2 = 0x0004 |
Posterior block comment. More... | |
const cmt_type_t | CMT_LVAR = 0x0008 |
Local variable comment. More... | |
const cmt_type_t | CMT_FUNC = 0x0010 |
Function comment. More... | |
const cmt_type_t | CMT_ALL = 0x001F |
All comments. More... | |
int | hexdsp |
Detailed Description
HexRays SDK header file.
The decompiler SDK consists of a single header file.
The header file defines data structures and inline functions.
Definition in file hexrays.hpp.
Macro Definition Documentation
◆ ACFL_BLKOPT
#define ACFL_BLKOPT 0x02 |
perform interblock transformations
Definition at line 4797 of file hexrays.hpp.
◆ ACFL_GLBDEL
#define ACFL_GLBDEL 0x08 |
perform dead code eliminition
Definition at line 4799 of file hexrays.hpp.
◆ ACFL_GLBPROP
#define ACFL_GLBPROP 0x04 |
perform global propagation
Definition at line 4798 of file hexrays.hpp.
◆ ACFL_GUESS
#define ACFL_GUESS 0x10 |
may guess calling conventions
- Examples
- hexrays_sample12.cpp.
Definition at line 4800 of file hexrays.hpp.
◆ ACFL_LOCOPT
#define ACFL_LOCOPT 0x01 |
perform local propagation (requires ACFL_BLKOPT)
Definition at line 4796 of file hexrays.hpp.
◆ ALLMEM
#define ALLMEM ivl_t::allmem |
Definition at line 1915 of file hexrays.hpp.
◆ ANCHOR_BLKCMT
#define ANCHOR_BLKCMT 0x20000000 |
block comment (for ctree items)
Definition at line 6643 of file hexrays.hpp.
◆ ANCHOR_CITEM
#define ANCHOR_CITEM 0x00000000 |
c-tree item
Definition at line 6640 of file hexrays.hpp.
◆ ANCHOR_INDEX
#define ANCHOR_INDEX 0x1FFFFFFF |
Definition at line 6638 of file hexrays.hpp.
◆ ANCHOR_ITP
#define ANCHOR_ITP 0x80000000 |
item type preciser
Definition at line 6642 of file hexrays.hpp.
◆ ANCHOR_LVAR
#define ANCHOR_LVAR 0x40000000 |
declaration of local variable
Definition at line 6641 of file hexrays.hpp.
◆ ANCHOR_MASK
#define ANCHOR_MASK 0xC0000000 |
Definition at line 6639 of file hexrays.hpp.
◆ CFL_FINAL
#define CFL_FINAL 0x0001 |
call type is final, should not be changed
Definition at line 6596 of file hexrays.hpp.
◆ CFL_HELPER
#define CFL_HELPER 0x0002 |
created from a decompiler helper function
Definition at line 6597 of file hexrays.hpp.
◆ CFL_NORET
#define CFL_NORET 0x0004 |
call does not return
Definition at line 6598 of file hexrays.hpp.
◆ CFS_BOUNDS
#define CFS_BOUNDS 0x0001 |
'eamap' and 'boundaries' are ready
Definition at line 6945 of file hexrays.hpp.
◆ CFS_LOCKED
#define CFS_LOCKED 0x0008 |
cfunc is temporarily locked
Definition at line 6948 of file hexrays.hpp.
◆ CFS_LVARS_HIDDEN
#define CFS_LVARS_HIDDEN 0x0004 |
local variable definitions are collapsed
Definition at line 6947 of file hexrays.hpp.
◆ CFS_TEXT
#define CFS_TEXT 0x0002 |
'sv' is ready (and hdrlines)
Definition at line 6946 of file hexrays.hpp.
◆ CHF_FAKE
#define CHF_FAKE 0x08 |
fake chain created by widen_chains()
Definition at line 3313 of file hexrays.hpp.
◆ CHF_INITED
#define CHF_INITED 0x01 |
is chain initialized? (valid only after lvar allocation)
Definition at line 3310 of file hexrays.hpp.
◆ CHF_OVER
#define CHF_OVER 0x04 |
overlapped chain
Definition at line 3312 of file hexrays.hpp.
◆ CHF_PASSTHRU
#define CHF_PASSTHRU 0x10 |
pass-thru chain, must use the input variable to the block
Definition at line 3314 of file hexrays.hpp.
◆ CHF_REPLACED
#define CHF_REPLACED 0x02 |
chain operands have been replaced?
Definition at line 3311 of file hexrays.hpp.
◆ CHF_TERM
#define CHF_TERM 0x20 |
terminating chain; the variable does not survive across the block
Definition at line 3315 of file hexrays.hpp.
◆ CIT_COLLAPSED
#define CIT_COLLAPSED 0x0001 |
display ctree item in collapsed form
- Examples
- hexrays_sample4.cpp.
Definition at line 6940 of file hexrays.hpp.
◆ CPBLK_FAST
#define CPBLK_FAST 0x0000 |
do not update minbstkref and minbargref
Definition at line 4879 of file hexrays.hpp.
◆ CPBLK_MINREF
#define CPBLK_MINREF 0x0001 |
update minbstkref and minbargref
Definition at line 4880 of file hexrays.hpp.
◆ CPBLK_OPTJMP
#define CPBLK_OPTJMP 0x0002 |
del the jump insn at the end of the block if it becomes useless
Definition at line 4882 of file hexrays.hpp.
◆ CV_FAST
#define CV_FAST 0x0000 |
do not maintain parent information
- Examples
- hexrays_sample2.cpp, hexrays_sample3.cpp, and hexrays_sample7.cpp.
Definition at line 5791 of file hexrays.hpp.
◆ CV_INSNS
#define CV_INSNS 0x0010 |
visit only statements, prune all expressions do not use before the final ctree maturity because expressions may contain statements at intermediate stages (see cot_insn).
Otherwise you risk missing statements embedded into expressions.
- Examples
- hexrays_sample3.cpp.
Definition at line 5800 of file hexrays.hpp.
◆ CV_PARENTS
#define CV_PARENTS 0x0002 |
maintain parent information
Definition at line 5793 of file hexrays.hpp.
◆ CV_POST
#define CV_POST 0x0004 |
call the leave...() functions
Definition at line 5794 of file hexrays.hpp.
◆ CV_PRUNE
#define CV_PRUNE 0x0001 |
this bit is set by visit...() to prune the walk
Definition at line 5792 of file hexrays.hpp.
◆ CV_RESTART
#define CV_RESTART 0x0008 |
restart enumeration at the top expr (apply_to_exprs)
Definition at line 5795 of file hexrays.hpp.
◆ CVAR_ARG
#define CVAR_ARG 0x00000100 |
function argument
Definition at line 1186 of file hexrays.hpp.
◆ CVAR_AUTOMAP
#define CVAR_AUTOMAP 0x00200000 |
variable was automatically mapped
Definition at line 1202 of file hexrays.hpp.
◆ CVAR_BYREF
#define CVAR_BYREF 0x00400000 |
the address of the variable was taken
Definition at line 1203 of file hexrays.hpp.
◆ CVAR_DUMMY
#define CVAR_DUMMY 0x00080000 |
dummy argument (added to fill a hole in the argument list)
Definition at line 1200 of file hexrays.hpp.
◆ CVAR_FAKE
#define CVAR_FAKE 0x00000200 |
fake variable (return var or va_list)
Definition at line 1187 of file hexrays.hpp.
◆ CVAR_FLOAT
#define CVAR_FLOAT 0x00000800 |
used in a fpu insn
Definition at line 1189 of file hexrays.hpp.
◆ CVAR_FORCED
#define CVAR_FORCED 0x00010000 |
variable was created by an explicit request otherwise we could reuse an existing var
Definition at line 1195 of file hexrays.hpp.
◆ CVAR_INASM
#define CVAR_INASM 0x00800000 |
variable is used in instructions translated into __asm {...}
Definition at line 1205 of file hexrays.hpp.
◆ CVAR_MAPDST
#define CVAR_MAPDST 0x00002000 |
other variables are mapped to this var
Definition at line 1191 of file hexrays.hpp.
◆ CVAR_MREG
#define CVAR_MREG 0x00000008 |
corresponding mregs were replaced?
Definition at line 1181 of file hexrays.hpp.
◆ CVAR_NAME
#define CVAR_NAME 0x00000004 |
has nice name?
Definition at line 1180 of file hexrays.hpp.
◆ CVAR_NOPTR
#define CVAR_NOPTR 0x00040000 |
variable cannot be a pointer (user choice)
Definition at line 1198 of file hexrays.hpp.
◆ CVAR_NOTARG
#define CVAR_NOTARG 0x00100000 |
variable cannot be an input argument
Definition at line 1201 of file hexrays.hpp.
◆ CVAR_NOWD
#define CVAR_NOWD 0x00000010 |
width is unknown
Definition at line 1182 of file hexrays.hpp.
◆ CVAR_OVER
#define CVAR_OVER 0x00000400 |
overlapping variable
Definition at line 1188 of file hexrays.hpp.
◆ CVAR_PARTIAL
#define CVAR_PARTIAL 0x00004000 |
variable type is partialy defined
Definition at line 1192 of file hexrays.hpp.
◆ CVAR_REGNAME
#define CVAR_REGNAME 0x00020000 |
has a register name (like _RAX): if lvar is used by an m_ext instruction
Definition at line 1197 of file hexrays.hpp.
◆ CVAR_RESULT
#define CVAR_RESULT 0x00000080 |
function result variable
Definition at line 1185 of file hexrays.hpp.
◆ CVAR_SHARED
#define CVAR_SHARED 0x02000000 |
variable is mapped to several chains
Definition at line 1208 of file hexrays.hpp.
◆ CVAR_SPOILED
#define CVAR_SPOILED 0x00001000 |
internal flag, do not use: spoiled var
Definition at line 1190 of file hexrays.hpp.
◆ CVAR_THISARG
#define CVAR_THISARG 0x00008000 |
'this' argument of c++ member functions
Definition at line 1193 of file hexrays.hpp.
◆ CVAR_TYPE
#define CVAR_TYPE 0x00000002 |
the type is defined?
Definition at line 1179 of file hexrays.hpp.
◆ CVAR_UNAME
#define CVAR_UNAME 0x00000020 |
user-defined name
Definition at line 1183 of file hexrays.hpp.
◆ CVAR_UNUSED
#define CVAR_UNUSED 0x01000000 |
user-defined __unused attribute meaningful only if: is_arg_var() && !mba->final_type
Definition at line 1207 of file hexrays.hpp.
◆ CVAR_USED
#define CVAR_USED 0x00000001 |
is used in the code?
Definition at line 1178 of file hexrays.hpp.
◆ CVAR_UTYPE
#define CVAR_UTYPE 0x00000040 |
user-defined type
Definition at line 1184 of file hexrays.hpp.
◆ DECOMP_ALL_BLKS
#define DECOMP_ALL_BLKS 0x0010 |
generate microcode for unreachable blocks
Definition at line 7121 of file hexrays.hpp.
◆ DECOMP_GXREFS_DEFLT
#define DECOMP_GXREFS_DEFLT 0x0000 |
the default behavior: do not update the global xrefs cache upon decompile() call, but when the pseudocode text is generated (e.g., through cfunc_t.get_pseudocode())
Definition at line 7127 of file hexrays.hpp.
◆ DECOMP_GXREFS_FORCE
#define DECOMP_GXREFS_FORCE 0x0080 |
update the global xrefs cache immediately
Definition at line 7129 of file hexrays.hpp.
◆ DECOMP_GXREFS_NOUPD
#define DECOMP_GXREFS_NOUPD 0x0040 |
do not update the global xrefs cache
Definition at line 7128 of file hexrays.hpp.
◆ DECOMP_NO_CACHE
#define DECOMP_NO_CACHE 0x0002 |
do not use decompilation cache (snippets are never cached)
Definition at line 7118 of file hexrays.hpp.
◆ DECOMP_NO_FRAME
#define DECOMP_NO_FRAME 0x0004 |
do not use function frame info (only snippet mode)
Definition at line 7119 of file hexrays.hpp.
◆ DECOMP_NO_HIDE
#define DECOMP_NO_HIDE 0x0020 |
do not close display waitbox. see close_hexrays_waitboxes()
Definition at line 7122 of file hexrays.hpp.
◆ DECOMP_NO_WAIT
#define DECOMP_NO_WAIT 0x0001 |
◆ DECOMP_NO_XREFS
#define DECOMP_NO_XREFS 0x0040 |
Obsolete. Use DECOMP_GXREFS_NOUPD.
Definition at line 7123 of file hexrays.hpp.
◆ DECOMP_VOID_MBA
#define DECOMP_VOID_MBA 0x0100 |
return empty mba object (to be used with gen_microcode)
Definition at line 7130 of file hexrays.hpp.
◆ DECOMP_WARNINGS
#define DECOMP_WARNINGS 0x0008 |
display warnings in the output window
- Examples
- hexrays_sample1.cpp, hexrays_sample12.cpp, hexrays_sample13.cpp, hexrays_sample15.cpp, and hexrays_sample9.cpp.
Definition at line 7120 of file hexrays.hpp.
◆ EQ_CMPDEST
#define EQ_CMPDEST 0x0004 |
compare instruction destinations
Definition at line 3652 of file hexrays.hpp.
◆ EQ_IGNCODE
#define EQ_IGNCODE 0x0002 |
ignore instruction opcodes
Definition at line 3651 of file hexrays.hpp.
◆ EQ_IGNSIZE
#define EQ_IGNSIZE 0x0001 |
ignore source operand sizes
- Examples
- hexrays_sample16.cpp.
Definition at line 3650 of file hexrays.hpp.
◆ EQ_OPTINSN
#define EQ_OPTINSN 0x0008 |
optimize mop_d operands
Definition at line 3653 of file hexrays.hpp.
◆ EXFL_ALL
#define EXFL_ALL 0x01FF |
all currently defined bits
Definition at line 6158 of file hexrays.hpp.
◆ EXFL_ALONE
#define EXFL_ALONE 0x0008 |
standalone helper
Definition at line 6152 of file hexrays.hpp.
◆ EXFL_CPADONE
#define EXFL_CPADONE 0x0001 |
pointer arithmetic correction done
Definition at line 6149 of file hexrays.hpp.
◆ EXFL_CSTR
#define EXFL_CSTR 0x0010 |
string literal
Definition at line 6153 of file hexrays.hpp.
◆ EXFL_FPOP
#define EXFL_FPOP 0x0004 |
floating point operation
Definition at line 6151 of file hexrays.hpp.
◆ EXFL_JUMPOUT
#define EXFL_JUMPOUT 0x0080 |
jump out-of-function
Definition at line 6156 of file hexrays.hpp.
◆ EXFL_LVALUE
#define EXFL_LVALUE 0x0002 |
expression is lvalue even if it doesn't look like it
Definition at line 6150 of file hexrays.hpp.
◆ EXFL_PARTIAL
#define EXFL_PARTIAL 0x0020 |
type of the expression is considered partial
Definition at line 6154 of file hexrays.hpp.
◆ EXFL_UNDEF
#define EXFL_UNDEF 0x0040 |
expression uses undefined value
Definition at line 6155 of file hexrays.hpp.
◆ EXFL_VFTABLE
#define EXFL_VFTABLE 0x0100 |
is ptr to vftable (used for cot_memptr, cot_memref)
Definition at line 6157 of file hexrays.hpp.
◆ FCI_DEAD
#define FCI_DEAD 0x002 |
some return registers were determined dead
Definition at line 3148 of file hexrays.hpp.
◆ FCI_EXPLOCS
#define FCI_EXPLOCS 0x400 |
all arglocs are specified explicitly
Definition at line 3163 of file hexrays.hpp.
◆ FCI_FINAL
#define FCI_FINAL 0x004 |
call type is final, should not be changed
Definition at line 3149 of file hexrays.hpp.
◆ FCI_HASCALL
#define FCI_HASCALL 0x080 |
A function is an synthetic helper combined from several instructions and at least one of them was a call to a real functions.
Definition at line 3160 of file hexrays.hpp.
◆ FCI_HASFMT
#define FCI_HASFMT 0x100 |
A variadic function with recognized printf- or scanf-style format string.
Definition at line 3162 of file hexrays.hpp.
◆ FCI_NORET
#define FCI_NORET 0x008 |
call does not return
Definition at line 3150 of file hexrays.hpp.
◆ FCI_NOSIDE
#define FCI_NOSIDE 0x020 |
call does not have side effects
Definition at line 3152 of file hexrays.hpp.
◆ FCI_PROP
#define FCI_PROP 0x001 |
call has been propagated
Definition at line 3147 of file hexrays.hpp.
◆ FCI_PURE
#define FCI_PURE 0x010 |
pure function
Definition at line 3151 of file hexrays.hpp.
◆ FCI_SPLOK
#define FCI_SPLOK 0x040 |
spoiled/visible_memory lists have been optimized.
for some functions we can reduce them as soon as information about the arguments becomes available. in order not to try optimize them again we use this bit.
Definition at line 3157 of file hexrays.hpp.
◆ FD_BACKWARD
#define FD_BACKWARD 0x0000 |
search direction
Definition at line 4156 of file hexrays.hpp.
◆ FD_DEF
#define FD_DEF 0x0002 |
look for definition
Definition at line 4159 of file hexrays.hpp.
◆ FD_DIRTY
#define FD_DIRTY 0x0004 |
ignore possible implicit definitions by function calls and indirect memory access
Definition at line 4161 of file hexrays.hpp.
◆ FD_FORWARD
#define FD_FORWARD 0x0001 |
search direction
Definition at line 4157 of file hexrays.hpp.
◆ FD_USE
#define FD_USE 0x0000 |
look for use
Definition at line 4158 of file hexrays.hpp.
◆ FUNC_NAME_CONTAINING_RECORD
#define FUNC_NAME_CONTAINING_RECORD "CONTAINING_RECORD" |
Definition at line 3111 of file hexrays.hpp.
◆ FUNC_NAME_EMPTY
#define FUNC_NAME_EMPTY "$empty" |
Definition at line 3109 of file hexrays.hpp.
◆ FUNC_NAME_MEMCPY
#define FUNC_NAME_MEMCPY "memcpy" |
Definition at line 3095 of file hexrays.hpp.
◆ FUNC_NAME_MEMSET
#define FUNC_NAME_MEMSET "memset" |
Definition at line 3097 of file hexrays.hpp.
◆ FUNC_NAME_MEMSET32
#define FUNC_NAME_MEMSET32 "memset32" |
Definition at line 3099 of file hexrays.hpp.
◆ FUNC_NAME_MEMSET64
#define FUNC_NAME_MEMSET64 "memset64" |
Definition at line 3100 of file hexrays.hpp.
◆ FUNC_NAME_PRESENT
#define FUNC_NAME_PRESENT "$present" |
Definition at line 3110 of file hexrays.hpp.
◆ FUNC_NAME_STRCAT
#define FUNC_NAME_STRCAT "strcat" |
Definition at line 3105 of file hexrays.hpp.
◆ FUNC_NAME_STRCPY
#define FUNC_NAME_STRCPY "strcpy" |
Definition at line 3101 of file hexrays.hpp.
◆ FUNC_NAME_STRLEN
#define FUNC_NAME_STRLEN "strlen" |
Definition at line 3103 of file hexrays.hpp.
◆ FUNC_NAME_TAIL
#define FUNC_NAME_TAIL "tail" |
Definition at line 3107 of file hexrays.hpp.
◆ FUNC_NAME_VA_ARG
#define FUNC_NAME_VA_ARG "va_arg" |
Definition at line 3108 of file hexrays.hpp.
◆ FUNC_NAME_WCSCAT
#define FUNC_NAME_WCSCAT "wcscat" |
Definition at line 3106 of file hexrays.hpp.
◆ FUNC_NAME_WCSCPY
#define FUNC_NAME_WCSCPY "wcscpy" |
Definition at line 3102 of file hexrays.hpp.
◆ FUNC_NAME_WCSLEN
#define FUNC_NAME_WCSLEN "wcslen" |
Definition at line 3104 of file hexrays.hpp.
◆ FUNC_NAME_WMEMCPY
#define FUNC_NAME_WMEMCPY "wmemcpy" |
Definition at line 3096 of file hexrays.hpp.
◆ FUNC_NAME_WMEMSET
#define FUNC_NAME_WMEMSET "wmemset" |
Definition at line 3098 of file hexrays.hpp.
◆ GCA_ALLOC
#define GCA_ALLOC 0x04 |
enumerate only allocated chains
Definition at line 3438 of file hexrays.hpp.
◆ GCA_EMPTY
#define GCA_EMPTY 0x01 |
include empty chains
Definition at line 3436 of file hexrays.hpp.
◆ GCA_NALLOC
#define GCA_NALLOC 0x08 |
enumerate only non-allocated chains
Definition at line 3439 of file hexrays.hpp.
◆ GCA_OFIRST
#define GCA_OFIRST 0x10 |
consider only chains of the first block
Definition at line 3440 of file hexrays.hpp.
◆ GCA_OLAST
#define GCA_OLAST 0x20 |
consider only chains of the last block
Definition at line 3441 of file hexrays.hpp.
◆ GCA_SPEC
#define GCA_SPEC 0x02 |
include chains for special registers
Definition at line 3437 of file hexrays.hpp.
◆ GCO_DEF
#define GCO_DEF 0x0004 |
◆ GCO_REG
#define GCO_REG 0x0001 |
is register? otherwise a stack variable
Definition at line 5492 of file hexrays.hpp.
◆ GCO_STK
#define GCO_STK 0x0000 |
a stack variable
Definition at line 5491 of file hexrays.hpp.
◆ GCO_USE
#define GCO_USE 0x0002 |
◆ GLN_ALL
#define GLN_ALL 0x03 |
get both
Definition at line 6715 of file hexrays.hpp.
◆ GLN_CURRENT
#define GLN_CURRENT 0x01 |
get label of the current item
Definition at line 6713 of file hexrays.hpp.
◆ GLN_GOTO_TARGET
#define GLN_GOTO_TARGET 0x02 |
get goto target
Definition at line 6714 of file hexrays.hpp.
◆ hexapi
#define hexapi |
Public functions are marked with this keyword.
Definition at line 235 of file hexrays.hpp.
◆ HEXRAYS_MEMORY_ALLOCATION_FUNCS
#define HEXRAYS_MEMORY_ALLOCATION_FUNCS | ( | ) |
Definition at line 301 of file hexrays.hpp.
◆ HEXRAYS_PLACEMENT_DELETE
#define HEXRAYS_PLACEMENT_DELETE void operator delete(void *, void *) {} |
Definition at line 300 of file hexrays.hpp.
◆ INS_EPILOG
#define INS_EPILOG ((cinsn_t *)1) |
Definition at line 6919 of file hexrays.hpp.
◆ IPROP_ASSERT
#define IPROP_ASSERT 0x0080 |
assertion: usually mov #val, op.
assertions are used to help the optimizer. assertions are ignored when generating ctree
- Examples
- hexrays_sample18.cpp.
Definition at line 3489 of file hexrays.hpp.
◆ IPROP_CLNPOP
#define IPROP_CLNPOP 0x0008 |
the purpose of the instruction is to clean stack (e.g.
"pop ecx" is often used for that)
Definition at line 3483 of file hexrays.hpp.
◆ IPROP_COMBINED
#define IPROP_COMBINED 0x0800 |
insn has been modified because of a partial reference
Definition at line 3497 of file hexrays.hpp.
◆ IPROP_DONT_COMB
#define IPROP_DONT_COMB 0x40000 |
may not combine this instruction with others
Definition at line 3509 of file hexrays.hpp.
◆ IPROP_DONT_PROP
#define IPROP_DONT_PROP 0x20000 |
may not propagate
Definition at line 3508 of file hexrays.hpp.
◆ IPROP_EXTSTX
#define IPROP_EXTSTX 0x1000 |
this is m_ext propagated into m_stx
Definition at line 3498 of file hexrays.hpp.
◆ IPROP_FARCALL
#define IPROP_FARCALL 0x0020 |
call of a far function using push cs/call sequence
Definition at line 3485 of file hexrays.hpp.
◆ IPROP_FPINSN
#define IPROP_FPINSN 0x0010 |
floating point insn
Definition at line 3484 of file hexrays.hpp.
◆ IPROP_IGNLOWSRC
#define IPROP_IGNLOWSRC 0x2000 |
low part of the instruction source operand has been created artificially (this bit is used only for 'and x, 80...')
Definition at line 3501 of file hexrays.hpp.
◆ IPROP_INV_JX
#define IPROP_INV_JX 0x4000 |
inverted conditional jump
Definition at line 3502 of file hexrays.hpp.
◆ IPROP_MBARRIER
#define IPROP_MBARRIER 0x80000 |
this instruction acts as a memory barrier (instructions accessing memory may not be reordered past it)
Definition at line 3511 of file hexrays.hpp.
◆ IPROP_MULTI_MOV
#define IPROP_MULTI_MOV 0x10000 |
the minsn was generated as part of insn that moves multiple registers (example: STM on ARM may transfer multiple registers)
bits that can be set by plugins:
Definition at line 3507 of file hexrays.hpp.
◆ IPROP_OPTIONAL
#define IPROP_OPTIONAL 0x0001 |
optional instruction
Definition at line 3477 of file hexrays.hpp.
◆ IPROP_PERSIST
#define IPROP_PERSIST 0x0002 |
persistent insn; they are not destroyed
Definition at line 3478 of file hexrays.hpp.
◆ IPROP_SPLIT
#define IPROP_SPLIT 0x0700 |
the instruction has been split:
Definition at line 3492 of file hexrays.hpp.
◆ IPROP_SPLIT1
#define IPROP_SPLIT1 0x0100 |
into 1 byte
Definition at line 3493 of file hexrays.hpp.
◆ IPROP_SPLIT2
#define IPROP_SPLIT2 0x0200 |
into 2 bytes
Definition at line 3494 of file hexrays.hpp.
◆ IPROP_SPLIT4
#define IPROP_SPLIT4 0x0300 |
into 4 bytes
Definition at line 3495 of file hexrays.hpp.
◆ IPROP_SPLIT8
#define IPROP_SPLIT8 0x0400 |
into 8 bytes
Definition at line 3496 of file hexrays.hpp.
◆ IPROP_TAILCALL
#define IPROP_TAILCALL 0x0040 |
tail call
Definition at line 3486 of file hexrays.hpp.
◆ IPROP_UNMERGED
#define IPROP_UNMERGED 0x100000 |
'goto' instruction was transformed info 'call'
Definition at line 3512 of file hexrays.hpp.
◆ IPROP_WAS_NORET
#define IPROP_WAS_NORET 0x8000 |
was noret icall
Definition at line 3503 of file hexrays.hpp.
◆ IPROP_WILDMATCH
#define IPROP_WILDMATCH 0x0004 |
match multiple insns
Definition at line 3479 of file hexrays.hpp.
◆ LOCOPT_ALL
#define LOCOPT_ALL 0x0001 |
redo optimization for all blocks.
if this bit is not set, only dirty blocks will be optimized
Definition at line 4773 of file hexrays.hpp.
◆ LOCOPT_REFINE
#define LOCOPT_REFINE 0x0002 |
refine return type, ok to fail
Definition at line 4774 of file hexrays.hpp.
◆ LOCOPT_REFINE2
#define LOCOPT_REFINE2 0x0004 |
refine return type, try harder
Definition at line 4775 of file hexrays.hpp.
◆ LVINF_FORCE
#define LVINF_FORCE 0x0002 |
force allocation of a new variable.
forces the decompiler to create a new variable at ll.defea
Definition at line 1452 of file hexrays.hpp.
◆ LVINF_KEEP
#define LVINF_KEEP 0x0001 |
preserve saved user settings regardless of vars for example, if a var loses all its user-defined attributes or even gets destroyed, keep its lvar_saved_info_t.
this is used for ephemeral variables that get destroyed by macro recognition.
Definition at line 1449 of file hexrays.hpp.
◆ LVINF_NOMAP
#define LVINF_NOMAP 0x0008 |
forbid automatic mapping of the variable
Definition at line 1454 of file hexrays.hpp.
◆ LVINF_NOPTR
#define LVINF_NOPTR 0x0004 |
variable type should not be a pointer
Definition at line 1453 of file hexrays.hpp.
◆ LVINF_UNUSED
#define LVINF_UNUSED 0x0010 |
unused argument, corresponds to CVAR_UNUSED
Definition at line 1455 of file hexrays.hpp.
◆ m_max
#define m_max 0x49 |
Definition at line 624 of file hexrays.hpp.
◆ MAX_FUNC_ARGS
#define MAX_FUNC_ARGS 64 |
Definition at line 3117 of file hexrays.hpp.
◆ MAX_SUPPORTED_STACK_SIZE
#define MAX_SUPPORTED_STACK_SIZE 0x100000 |
Definition at line 295 of file hexrays.hpp.
◆ MAXRANGE
#define MAXRANGE bitrange_t(0, USHRT_MAX) |
Definition at line 3792 of file hexrays.hpp.
◆ MBA2_ALL_FLAGS
#define MBA2_ALL_FLAGS 0x0000FFFF |
Definition at line 4537 of file hexrays.hpp.
◆ MBA2_ARGIDX_OK
#define MBA2_ARGIDX_OK 0x00000040 |
may verify input argument list?
Definition at line 4519 of file hexrays.hpp.
◆ MBA2_ARGIDX_SORTED
#define MBA2_ARGIDX_SORTED 0x00000400 |
args finally sorted according to ABI (e.g.
reverse stkarg order in Borland)
Definition at line 4524 of file hexrays.hpp.
◆ MBA2_CODE16_BIT
#define MBA2_CODE16_BIT 0x00000800 |
the code16 bit removed
Definition at line 4525 of file hexrays.hpp.
◆ MBA2_DONT_VERIFY
#define MBA2_DONT_VERIFY 0x80000000 |
Do not verify microcode.
This flag is recomended to be set only when debugging decompiler plugins
Definition at line 4533 of file hexrays.hpp.
◆ MBA2_HAS_OUTLINES
#define MBA2_HAS_OUTLINES 0x00002000 |
calls to outlined code have been inlined
Definition at line 4527 of file hexrays.hpp.
◆ MBA2_INITIAL_FLAGS
#define MBA2_INITIAL_FLAGS (MBA2_LVARNAMES_OK|MBA2_LVARS_RENAMED) |
Definition at line 4535 of file hexrays.hpp.
◆ MBA2_IS_CTR
#define MBA2_IS_CTR 0x00000010 |
is constructor?
Definition at line 4517 of file hexrays.hpp.
◆ MBA2_IS_DTR
#define MBA2_IS_DTR 0x00000020 |
is destructor?
Definition at line 4518 of file hexrays.hpp.
◆ MBA2_LVARNAMES_OK
#define MBA2_LVARNAMES_OK 0x00000001 |
may verify lvar_names?
Definition at line 4513 of file hexrays.hpp.
◆ MBA2_LVARS_RENAMED
#define MBA2_LVARS_RENAMED 0x00000002 |
accept empty names now?
Definition at line 4514 of file hexrays.hpp.
◆ MBA2_NO_DUP_CALLS
#define MBA2_NO_DUP_CALLS 0x00000080 |
forbid multiple calls with the same ea
Definition at line 4520 of file hexrays.hpp.
◆ MBA2_NO_DUP_LVARS
#define MBA2_NO_DUP_LVARS 0x00000100 |
forbid multiple lvars with the same ea
Definition at line 4521 of file hexrays.hpp.
◆ MBA2_NO_FRAME
#define MBA2_NO_FRAME 0x00004000 |
do not use function frame info (only snippet mode)
Definition at line 4528 of file hexrays.hpp.
◆ MBA2_OVER_CHAINS
#define MBA2_OVER_CHAINS 0x00000004 |
has overlapped chains?
Definition at line 4515 of file hexrays.hpp.
◆ MBA2_PROP_COMPLEX
#define MBA2_PROP_COMPLEX 0x00008000 |
allow propagation of more complex variable definitions
Definition at line 4529 of file hexrays.hpp.
◆ MBA2_STACK_RETVAL
#define MBA2_STACK_RETVAL 0x00001000 |
the return value is on the stack
Definition at line 4526 of file hexrays.hpp.
◆ MBA2_UNDEF_RETVAR
#define MBA2_UNDEF_RETVAR 0x00000200 |
return value is undefined
Definition at line 4522 of file hexrays.hpp.
◆ MBA2_VALRNG_DONE
#define MBA2_VALRNG_DONE 0x00000008 |
calculated valranges?
Definition at line 4516 of file hexrays.hpp.
◆ MBA_ASRPROP
#define MBA_ASRPROP 0x00002000 |
assertion have been propagated
Definition at line 4491 of file hexrays.hpp.
◆ MBA_ASRTOK
#define MBA_ASRTOK 0x00000800 |
assertions have been generated
Definition at line 4489 of file hexrays.hpp.
◆ MBA_CALLS
#define MBA_CALLS 0x00001000 |
callinfo has been built
Definition at line 4490 of file hexrays.hpp.
◆ MBA_CHVARS
#define MBA_CHVARS 0x00200000 |
can verify chain varnums
Definition at line 4498 of file hexrays.hpp.
◆ MBA_CMBBLK
#define MBA_CMBBLK 0x00000400 |
request to combine blocks
Definition at line 4488 of file hexrays.hpp.
◆ MBA_CMNSTK
#define MBA_CMNSTK 0x00000100 |
stkvars+stkargs should be considered as one area
Definition at line 4484 of file hexrays.hpp.
◆ MBA_COLGDL
#define MBA_COLGDL 0x00800000 |
display graph after each reduction
Definition at line 4502 of file hexrays.hpp.
◆ MBA_DELPAIRS
#define MBA_DELPAIRS 0x00100000 |
pairs have been deleted once
Definition at line 4497 of file hexrays.hpp.
◆ MBA_GLBOPT
#define MBA_GLBOPT 0x00010000 |
microcode has been optimized globally
Definition at line 4494 of file hexrays.hpp.
◆ MBA_INITIAL_FLAGS
#define MBA_INITIAL_FLAGS |
Definition at line 4510 of file hexrays.hpp.
◆ MBA_INSGDL
#define MBA_INSGDL 0x01000000 |
display instruction in graphs
Definition at line 4503 of file hexrays.hpp.
◆ MBA_LOADED
#define MBA_LOADED 0x00000008 |
loaded gdl, no instructions (debugging)
Definition at line 4479 of file hexrays.hpp.
◆ MBA_LVARS0
#define MBA_LVARS0 0x00040000 |
lvar pre-allocation has been performed
Definition at line 4495 of file hexrays.hpp.
◆ MBA_LVARS1
#define MBA_LVARS1 0x00080000 |
lvar real allocation has been performed
Definition at line 4496 of file hexrays.hpp.
◆ MBA_NICE
#define MBA_NICE 0x02000000 |
apply transformations to c code
Definition at line 4504 of file hexrays.hpp.
◆ MBA_NOFUNC
#define MBA_NOFUNC 0x00000002 |
function is not present, addresses might be wrong
Definition at line 4477 of file hexrays.hpp.
◆ MBA_NUMADDR
#define MBA_NUMADDR 0x20000000 |
display definition addresses for numbers
Definition at line 4507 of file hexrays.hpp.
◆ MBA_PASSREGS
#define MBA_PASSREGS 0x00000040 |
Definition at line 4482 of file hexrays.hpp.
◆ MBA_PATTERN
#define MBA_PATTERN 0x00000004 |
microcode pattern, callinfo is present
Definition at line 4478 of file hexrays.hpp.
◆ MBA_PRCDEFS
#define MBA_PRCDEFS 0x00000001 |
use precise defeas for chain-allocated lvars
Definition at line 4476 of file hexrays.hpp.
◆ MBA_PREOPT
#define MBA_PREOPT 0x00000200 |
preoptimization stage complete
Definition at line 4487 of file hexrays.hpp.
◆ MBA_REFINE
#define MBA_REFINE 0x04000000 |
may refine return value size
Definition at line 4505 of file hexrays.hpp.
◆ MBA_RETFP
#define MBA_RETFP 0x00000010 |
function returns floating point value
Definition at line 4480 of file hexrays.hpp.
◆ MBA_RETREF
#define MBA_RETREF 0x00008000 |
return type has been refined
Definition at line 4493 of file hexrays.hpp.
◆ MBA_SAVRST
#define MBA_SAVRST 0x00004000 |
save-restore analysis has been performed
Definition at line 4492 of file hexrays.hpp.
◆ MBA_SHORT
#define MBA_SHORT 0x00400000 |
use short display
Definition at line 4501 of file hexrays.hpp.
◆ MBA_SPLINFO
#define MBA_SPLINFO 0x00000020 |
(final_type ? idb_spoiled : spoiled_regs) is valid
Definition at line 4481 of file hexrays.hpp.
◆ MBA_THUNK
#define MBA_THUNK 0x00000080 |
thunk function
Definition at line 4483 of file hexrays.hpp.
◆ MBA_VALNUM
#define MBA_VALNUM 0x40000000 |
display value numbers
Definition at line 4508 of file hexrays.hpp.
◆ MBA_WINGR32
#define MBA_WINGR32 0x10000000 |
use wingraph32
Definition at line 4506 of file hexrays.hpp.
◆ MBL_BACKPROP
#define MBL_BACKPROP 0x1000 |
performed backprop_cc
Definition at line 3825 of file hexrays.hpp.
◆ MBL_CALL
#define MBL_CALL 0x0800 |
call information has been built
Definition at line 3824 of file hexrays.hpp.
◆ MBL_COMB
#define MBL_COMB 0x0040 |
needs "combine" pass
Definition at line 3819 of file hexrays.hpp.
◆ MBL_DEAD
#define MBL_DEAD 0x0100 |
needs "eliminate deads" pass
Definition at line 3821 of file hexrays.hpp.
◆ MBL_DMT64
#define MBL_DMT64 0x0020 |
needs "demote 64bits"
Definition at line 3818 of file hexrays.hpp.
◆ MBL_DSLOT
#define MBL_DSLOT 0x4000 |
block for delay slot
Definition at line 3827 of file hexrays.hpp.
◆ MBL_FAKE
#define MBL_FAKE 0x0002 |
fake block
Definition at line 3814 of file hexrays.hpp.
◆ MBL_GOTO
#define MBL_GOTO 0x0004 |
this block is a goto target
Definition at line 3815 of file hexrays.hpp.
◆ MBL_INCONST
#define MBL_INCONST 0x0400 |
inconsistent lists: we are building them
Definition at line 3823 of file hexrays.hpp.
◆ MBL_KEEP
#define MBL_KEEP 0x10000 |
do not remove even if unreachable
Definition at line 3829 of file hexrays.hpp.
◆ MBL_LIST
#define MBL_LIST 0x0200 |
use/def lists are ready (not dirty)
Definition at line 3822 of file hexrays.hpp.
◆ MBL_NONFAKE
#define MBL_NONFAKE 0x0000 |
regular block
Definition at line 3813 of file hexrays.hpp.
◆ MBL_NORET
#define MBL_NORET 0x2000 |
dead end block: doesn't return execution control
Definition at line 3826 of file hexrays.hpp.
◆ MBL_PRIV
#define MBL_PRIV 0x0001 |
private block - no instructions except the specified are accepted (used in patterns)
Definition at line 3812 of file hexrays.hpp.
◆ MBL_PROP
#define MBL_PROP 0x0080 |
needs 'propagation' pass
Definition at line 3820 of file hexrays.hpp.
◆ MBL_PUSH
#define MBL_PUSH 0x0010 |
needs "convert push/pop instructions"
Definition at line 3817 of file hexrays.hpp.
◆ MBL_TCAL
#define MBL_TCAL 0x0008 |
aritifical call block for tail calls
Definition at line 3816 of file hexrays.hpp.
◆ MBL_VALRANGES
#define MBL_VALRANGES 0x8000 |
should optimize using value ranges
Definition at line 3828 of file hexrays.hpp.
◆ MLI_CLR_FLAGS
#define MLI_CLR_FLAGS 0x10 |
clear LVINF_... bits
Definition at line 1610 of file hexrays.hpp.
◆ MLI_CMT
#define MLI_CMT 0x04 |
apply lvar comment
Definition at line 1608 of file hexrays.hpp.
◆ MLI_NAME
#define MLI_NAME 0x01 |
apply lvar name
Definition at line 1606 of file hexrays.hpp.
◆ MLI_SET_FLAGS
#define MLI_SET_FLAGS 0x08 |
set LVINF_... bits
Definition at line 1609 of file hexrays.hpp.
◆ MLI_TYPE
#define MLI_TYPE 0x02 |
apply lvar type
Definition at line 1607 of file hexrays.hpp.
◆ NALT_VD
#define NALT_VD 2 |
this index is not used by ida
Definition at line 4709 of file hexrays.hpp.
◆ NF_BINVDONE
#define NF_BINVDONE 0x04 |
temporary internal bit: inverting bits is done
Definition at line 798 of file hexrays.hpp.
◆ NF_BITNOT
#define NF_BITNOT 0x10 |
The user asked to invert bits of the constant.
Definition at line 800 of file hexrays.hpp.
◆ NF_FIXED
#define NF_FIXED 0x01 |
number format has been defined by the user
Definition at line 796 of file hexrays.hpp.
◆ NF_NEGATE
#define NF_NEGATE 0x08 |
The user asked to negate the constant.
- Examples
- hexrays_sample4.cpp.
Definition at line 799 of file hexrays.hpp.
◆ NF_NEGDONE
#define NF_NEGDONE 0x02 |
temporary internal bit: negation has been performed
Definition at line 797 of file hexrays.hpp.
◆ NF_VALID
#define NF_VALID 0x20 |
internal bit: stroff or enum is valid for enums: this bit is set immediately for stroffs: this bit is set at the end of decompilation
- Examples
- hexrays_sample2.cpp.
Definition at line 803 of file hexrays.hpp.
◆ NORET_FORBID_ANALYSIS
#define NORET_FORBID_ANALYSIS 0x02 |
Definition at line 3668 of file hexrays.hpp.
◆ NORET_IGNORE_WAS_NORET_ICALL
#define NORET_IGNORE_WAS_NORET_ICALL 0x01 |
Definition at line 3667 of file hexrays.hpp.
◆ OPF_NEW_WINDOW
#define OPF_NEW_WINDOW 0x01 |
open new window
Definition at line 5380 of file hexrays.hpp.
◆ OPF_NO_WAIT
#define OPF_NO_WAIT 0x08 |
do not display waitbox if decompilation happens
Definition at line 5383 of file hexrays.hpp.
◆ OPF_REUSE
#define OPF_REUSE 0x00 |
reuse existing window
Definition at line 5379 of file hexrays.hpp.
◆ OPF_REUSE_ACTIVE
#define OPF_REUSE_ACTIVE 0x02 |
reuse existing window, only if the currently active widget is a pseudocode view
Definition at line 5382 of file hexrays.hpp.
◆ OPF_WINDOW_MGMT_MASK
#define OPF_WINDOW_MGMT_MASK 0x07 |
Definition at line 5386 of file hexrays.hpp.
◆ OPROP_CCFLAGS
#define OPROP_CCFLAGS 0x08 |
mop_n: a pc-relative value mop_a: an address obtained from a relocation else: value of a condition code register (like mr_cc)
Definition at line 2450 of file hexrays.hpp.
◆ OPROP_FLOAT
#define OPROP_FLOAT 0x04 |
possibly floating value
Definition at line 2447 of file hexrays.hpp.
◆ OPROP_IMPDONE
#define OPROP_IMPDONE 0x01 |
imported operand (a pointer) has been dereferenced
Definition at line 2445 of file hexrays.hpp.
◆ OPROP_LOWADDR
#define OPROP_LOWADDR 0x20 |
a low address offset
Definition at line 2452 of file hexrays.hpp.
◆ OPROP_UDEFVAL
#define OPROP_UDEFVAL 0x10 |
uses undefined value
Definition at line 2451 of file hexrays.hpp.
◆ OPROP_UDT
#define OPROP_UDT 0x02 |
a struct or union
Definition at line 2446 of file hexrays.hpp.
◆ OPTI_ADDREXPRS
#define OPTI_ADDREXPRS 0x0001 |
optimize all address expressions (&x+N; &x-&y)
Definition at line 3608 of file hexrays.hpp.
◆ OPTI_COMBINSNS
#define OPTI_COMBINSNS 0x0004 |
may combine insns (only for optimize_insn)
Definition at line 3610 of file hexrays.hpp.
◆ OPTI_MINSTKREF
#define OPTI_MINSTKREF 0x0002 |
may update minstkref
Definition at line 3609 of file hexrays.hpp.
◆ OPTI_NO_LDXOPT
#define OPTI_NO_LDXOPT 0x0008 |
the function is called after the propagation attempt, we do not optimize low/high(ldx) in this case
Definition at line 3613 of file hexrays.hpp.
◆ SHINS_LDXEA
#define SHINS_LDXEA 0x08 |
display address of ldx expressions (not used)
Definition at line 2412 of file hexrays.hpp.
◆ SHINS_NUMADDR
#define SHINS_NUMADDR 0x01 |
display definition addresses for numbers
Definition at line 2409 of file hexrays.hpp.
◆ SHINS_SHORT
#define SHINS_SHORT 0x04 |
do not display use-def chains and other attrs
Definition at line 2411 of file hexrays.hpp.
◆ SHINS_VALNUM
#define SHINS_VALNUM 0x02 |
display value numbers
Definition at line 2410 of file hexrays.hpp.
◆ SIZEOF_BLOCK_CHAINS
#define SIZEOF_BLOCK_CHAINS 56 |
Definition at line 3364 of file hexrays.hpp.
◆ SVW_FLOAT
#define SVW_FLOAT 0x01 |
Definition at line 1380 of file hexrays.hpp.
◆ SVW_INT
#define SVW_INT 0x00 |
Definition at line 1379 of file hexrays.hpp.
◆ SVW_SOFT
#define SVW_SOFT 0x02 |
Definition at line 1381 of file hexrays.hpp.
◆ ULV_PRECISE_DEFEA
#define ULV_PRECISE_DEFEA 0x0001 |
Use precise defea's for lvar locations.
Definition at line 1516 of file hexrays.hpp.
◆ VDRUN_APPEND
#define VDRUN_APPEND 0x00000001 |
Create a new file or append to existing file.
Definition at line 5415 of file hexrays.hpp.
◆ VDRUN_CMDLINE
#define VDRUN_CMDLINE 0x00000020 |
Called from ida's command line.
Definition at line 5420 of file hexrays.hpp.
◆ VDRUN_LUMINA
#define VDRUN_LUMINA 0x00000080 |
Use lumina server.
Definition at line 5422 of file hexrays.hpp.
◆ VDRUN_MAYSTOP
#define VDRUN_MAYSTOP 0x00000010 |
The user can cancel decompilation.
Definition at line 5419 of file hexrays.hpp.
◆ VDRUN_NEWFILE
#define VDRUN_NEWFILE 0x00000000 |
Create a new file or overwrite existing file.
Definition at line 5414 of file hexrays.hpp.
◆ VDRUN_ONLYNEW
#define VDRUN_ONLYNEW 0x00000002 |
Fail if output file already exists.
Definition at line 5416 of file hexrays.hpp.
◆ VDRUN_SENDIDB
#define VDRUN_SENDIDB 0x00000008 |
Send problematic databases to hex-rays.com.
Definition at line 5418 of file hexrays.hpp.
◆ VDRUN_SILENT
#define VDRUN_SILENT 0x00000004 |
Silent decompilation.
Definition at line 5417 of file hexrays.hpp.
◆ VDRUN_STATS
#define VDRUN_STATS 0x00000040 |
Print statistics into vd_stats.txt.
Definition at line 5421 of file hexrays.hpp.
◆ VDUI_VALID
#define VDUI_VALID 0x0002 |
is valid?
Definition at line 7577 of file hexrays.hpp.
◆ VDUI_VISIBLE
#define VDUI_VISIBLE 0x0001 |
is visible?
Definition at line 7576 of file hexrays.hpp.
◆ VLR_ALL
#define VLR_ALL 0x01 |
Definition at line 341 of file hexrays.hpp.
◆ VLR_BITS
#define VLR_BITS 0x05 |
Definition at line 345 of file hexrays.hpp.
◆ VLR_IVLS
#define VLR_IVLS 0x02 |
Definition at line 342 of file hexrays.hpp.
◆ VLR_NONE
#define VLR_NONE 0x00 |
Definition at line 340 of file hexrays.hpp.
◆ VLR_RANGE
#define VLR_RANGE 0x03 |
Definition at line 343 of file hexrays.hpp.
◆ VLR_SECT
#define VLR_SECT 0x06 |
Definition at line 346 of file hexrays.hpp.
◆ VLR_SRANGE
#define VLR_SRANGE 0x04 |
Definition at line 344 of file hexrays.hpp.
◆ VLR_TYPE
#define VLR_TYPE 0x0F |
Definition at line 339 of file hexrays.hpp.
◆ VLR_UNION
#define VLR_UNION 0x07 |
Definition at line 348 of file hexrays.hpp.
◆ VLR_UNK
#define VLR_UNK 0x08 |
Definition at line 351 of file hexrays.hpp.
◆ VR_AT_END
#define VR_AT_END 0x0001 |
get value ranges after the instruction or at the block end, just after the last instruction (if M is nullptr)
Definition at line 4208 of file hexrays.hpp.
◆ VR_AT_START
#define VR_AT_START 0x0000 |
get value ranges before the instruction or at the block start (if M is nullptr)
- Examples
- hexrays_sample15.cpp.
Definition at line 4205 of file hexrays.hpp.
◆ VR_EXACT
#define VR_EXACT 0x0002 |
find exact match.
if not set, the returned valrng size will be >= vivl.size
- Examples
- hexrays_sample15.cpp.
Definition at line 4210 of file hexrays.hpp.
Typedef Documentation
◆ array_of_bitsets
typedef qvector<bitset_t> array_of_bitsets |
Definition at line 1830 of file hexrays.hpp.
◆ array_of_ivlsets
typedef qvector<ivlset_t> array_of_ivlsets |
Definition at line 2002 of file hexrays.hpp.
◆ block_chains_vec_t
typedef qvector<block_chains_t> block_chains_vec_t |
Graph chains.
This class represents all ud and du chains of the decompiled function
Definition at line 3423 of file hexrays.hpp.
◆ boundaries_t
typedef std::map<cinsn_t *, rangeset_t> boundaries_t |
Definition at line 6918 of file hexrays.hpp.
◆ cfuncptr_t
typedef qrefcnt_t<cfunc_t> cfuncptr_t |
Definition at line 291 of file hexrays.hpp.
◆ cfuncptrs_t
typedef qvector<cfuncptr_t> cfuncptrs_t |
Definition at line 7113 of file hexrays.hpp.
◆ cinsn_list_t
typedef qlist<cinsn_t> cinsn_list_t |
Definition at line 6565 of file hexrays.hpp.
◆ cinsnptrvec_t
typedef qvector<cinsn_t *> cinsnptrvec_t |
Vector of pointers to statements.
Definition at line 6465 of file hexrays.hpp.
◆ cmt_type_t
typedef int cmt_type_t |
Comment types.
Definition at line 7558 of file hexrays.hpp.
◆ ctree_items_t
typedef qvector<citem_t *> ctree_items_t |
Vector of parents.
Definition at line 5777 of file hexrays.hpp.
◆ eamap_t
typedef std::map<ea_t, cinsnptrvec_t> eamap_t |
Definition at line 6916 of file hexrays.hpp.
◆ easet_t
typedef std::set<ea_t> easet_t |
Definition at line 283 of file hexrays.hpp.
◆ hexdsp_t
typedef void * hexdsp_t(int code,...) |
Hex-Rays decompiler dispatcher.
All interaction with the decompiler is carried out by the intermediary of this dispatcher.
Definition at line 7296 of file hexrays.hpp.
◆ hexrays_cb_t
typedef ssize_t hexrays_cb_t(void *ud, hexrays_event_t event, va_list va) |
Handler of decompiler events.
- Parameters
-
ud user data. the value specified at the handler installation time is passed here. event decompiler event code va additional arguments
- Returns
- as a rule the callback must return 0 unless specified otherwise in the event description.
Definition at line 7486 of file hexrays.hpp.
◆ hexwarns_t
typedef qvector<hexwarn_t> hexwarns_t |
Definition at line 4326 of file hexrays.hpp.
◆ history_t
typedef qstack<history_item_t> history_t |
Navigation history.
Definition at line 7555 of file hexrays.hpp.
◆ iterator_word
typedef size_t iterator_word |
Definition at line 8541 of file hexrays.hpp.
◆ lvar_mapping_t
typedef std::map<lvar_locator_t, lvar_locator_t> lvar_mapping_t |
Local variable mapping (is used to merge variables)
Definition at line 1495 of file hexrays.hpp.
◆ lvar_saved_infos_t
typedef qvector<lvar_saved_info_t> lvar_saved_infos_t |
Definition at line 1492 of file hexrays.hpp.
◆ maymust_t
typedef int maymust_t |
Definition at line 451 of file hexrays.hpp.
◆ mbitmap_t
typedef size_t mbitmap_t |
Definition at line 1753 of file hexrays.hpp.
◆ mbl_array_t
using mbl_array_t = mba_t |
Definition at line 5023 of file hexrays.hpp.
◆ mcallargs_t
typedef qvector<mcallarg_t> mcallargs_t |
Definition at line 3043 of file hexrays.hpp.
◆ minsn_ptr_set_t
typedef std::set<minsn_t *> minsn_ptr_set_t |
Definition at line 284 of file hexrays.hpp.
◆ minsnptrs_t
typedef qvector<minsn_t*> minsnptrs_t |
Definition at line 286 of file hexrays.hpp.
◆ mlistvec_t
typedef qvector<mlist_t> mlistvec_t |
Definition at line 2060 of file hexrays.hpp.
◆ mopptrs_t
typedef qvector<mop_t*> mopptrs_t |
Definition at line 287 of file hexrays.hpp.
◆ mopt_t
typedef uint8 mopt_t |
Instruction operand types.
Definition at line 2249 of file hexrays.hpp.
◆ mopvec_t
typedef qvector<mop_t> mopvec_t |
Definition at line 288 of file hexrays.hpp.
◆ mreg_t
typedef int mreg_t |
Micro register.
Definition at line 271 of file hexrays.hpp.
◆ mregvec_t
typedef qvector<mreg_t> mregvec_t |
Definition at line 290 of file hexrays.hpp.
◆ parents_t
typedef ctree_items_t parents_t |
Definition at line 5778 of file hexrays.hpp.
◆ strings_t
typedef std::set<qstring> strings_t |
Definition at line 285 of file hexrays.hpp.
◆ svlr_t
typedef int64 svlr_t |
Definition at line 313 of file hexrays.hpp.
◆ udcall_map_t
typedef std::map<ea_t, udcall_t> udcall_map_t |
Definition at line 1666 of file hexrays.hpp.
◆ ui_stroff_ops_t
typedef qvector<ui_stroff_op_t> ui_stroff_ops_t |
Definition at line 7890 of file hexrays.hpp.
◆ uint64vec_t
typedef qvector<uint64> uint64vec_t |
Definition at line 289 of file hexrays.hpp.
◆ user_cmts_t
typedef std::map<treeloc_t, citem_cmt_t> user_cmts_t |
Definition at line 6020 of file hexrays.hpp.
◆ user_iflags_t
typedef std::map<citem_locator_t, int32> user_iflags_t |
Definition at line 6037 of file hexrays.hpp.
◆ user_labels_t
typedef std::map<int, qstring> user_labels_t |
Definition at line 6733 of file hexrays.hpp.
◆ user_numforms_t
typedef std::map<operand_locator_t, number_format_t> user_numforms_t |
Definition at line 852 of file hexrays.hpp.
◆ user_unions_t
typedef std::map<ea_t, intvec_t> user_unions_t |
Definition at line 6043 of file hexrays.hpp.
◆ uval_ivl_ivlset_t
typedef ivlset_tpl<ivl_t, uval_t> uval_ivl_ivlset_t |
Set of address intervals.
Bit arrays are efficient only for small sets. Potentially huge sets, like memory ranges, require another representation. ivlset_t is used for a list of memory locations in our decompiler.
Definition at line 1976 of file hexrays.hpp.
◆ uval_ivl_t
typedef ivl_tpl<uval_t> uval_ivl_t |
Definition at line 1849 of file hexrays.hpp.
◆ uvlr_t
typedef uint64 uvlr_t |
Definition at line 312 of file hexrays.hpp.
◆ voff_set_t
typedef std::set<voff_t> voff_set_t |
Definition at line 269 of file hexrays.hpp.
Enumeration Type Documentation
◆ anonymous enum
anonymous enum |
Definition at line 314 of file hexrays.hpp.
◆ allow_unused_labels_t
Unused label disposition.
Enumerator | |
---|---|
FORBID_UNUSED_LABELS | Unused labels cause interr. |
ALLOW_UNUSED_LABELS | Unused labels are permitted. |
Definition at line 6727 of file hexrays.hpp.
◆ cmpop_t
enum cmpop_t |
Definition at line 319 of file hexrays.hpp.
◆ cmt_retrieval_type_t
enum cmt_retrieval_type_t |
Comment retrieval type.
Ctree remembers what comments have already been retrieved. This is done because our mechanism of item_precisers is still not perfect and in theory some listing lines cannot be told apart. To avoid comment duplication, we remember if a comment has already been used or not.
Enumerator | |
---|---|
RETRIEVE_ONCE | Retrieve comment if it has not been used yet. |
RETRIEVE_ALWAYS | Retrieve comment even if it has been used. |
Definition at line 6004 of file hexrays.hpp.
◆ ctree_maturity_t
enum ctree_maturity_t |
Ctree maturity level.
The level will increase as we switch from one phase of ctree generation to the next one
Definition at line 5930 of file hexrays.hpp.
◆ ctype_t
enum ctype_t |
Ctree item code.
At the beginning of this list there are expression codes (cot_...), followed by statement codes (cit_...).
Definition at line 5531 of file hexrays.hpp.
◆ cursor_item_type_t
enum cursor_item_type_t |
Type of the cursor item.
Definition at line 6654 of file hexrays.hpp.
◆ funcrole_t
enum funcrole_t |
Function roles.
They are used to calculate use/def lists and to recognize functions without using string comparisons.
Definition at line 3048 of file hexrays.hpp.
◆ gctype_t
enum gctype_t |
Kind of use-def and def-use chains.
Definition at line 5047 of file hexrays.hpp.
◆ hexcall_t
enum hexcall_t |
API call numbers.
Definition at line 7932 of file hexrays.hpp.
◆ input_device_t
enum input_device_t |
Type of the input device.
How the user command has been invoked
Enumerator | |
---|---|
USE_KEYBOARD | Keyboard. |
USE_MOUSE | Mouse. |
Definition at line 7511 of file hexrays.hpp.
◆ item_preciser_t
enum item_preciser_t |
Comment item preciser.
Item preciser is used to assign comments to ctree items A ctree item may have several comments attached to it. For example, an if-statement may have the following comments:
if ( ... ) // cmt1 { // cmt2 } // cmt3 else // cmt4 { -- usually the else block has a separate ea }
The first 4 comments will have the same ea. In order to denote the exact line for the comment, we store the item_preciser along with ea.
Definition at line 5956 of file hexrays.hpp.
◆ mba_maturity_t
enum mba_maturity_t |
Microcode maturity levels.
Definition at line 4330 of file hexrays.hpp.
◆ mblock_type_t
enum mblock_type_t |
Basic block types.
Definition at line 3780 of file hexrays.hpp.
◆ mcode_t
enum mcode_t |
Definition at line 549 of file hexrays.hpp.
◆ memreg_index_t
enum memreg_index_t |
< memory region types
Definition at line 4345 of file hexrays.hpp.
◆ merror_t
enum merror_t |
Definition at line 490 of file hexrays.hpp.
◆ side_effect_t
enum side_effect_t |
How to handle side effect of change_size() Sometimes we need to create a temporary operand and change its size in order to check some hypothesis.
If we revert our changes, we do not want that the database (global variables, stack frame, etc) changes in any manner.
Definition at line 2420 of file hexrays.hpp.
◆ type_source_t
enum type_source_t |
Type source (where the type information comes from)
Definition at line 1047 of file hexrays.hpp.
◆ use_curly_t
enum use_curly_t |
Should curly braces be printed?
Enumerator | |
---|---|
CALC_CURLY_BRACES | print curly braces if necessary |
NO_CURLY_BRACES | don't print curly braces |
USE_CURLY_BRACES | print curly braces without any checks |
Definition at line 6384 of file hexrays.hpp.
◆ warnid_t
enum warnid_t |
Warning ids.
Definition at line 4243 of file hexrays.hpp.
Function Documentation
◆ accepts_small_udts()
bool accepts_small_udts | ( | ctype_t | op | ) |
Is the operator allowed on small structure or union?
Definition at line 5722 of file hexrays.hpp.
References cit_return, cot_asg, cot_comma, cot_eq, cot_ne, and cot_tern.
◆ accepts_udts()
bool accepts_udts | ( | ctype_t | op | ) |
Definition at line 5646 of file hexrays.hpp.
◆ arglocs_overlap()
Do two arglocs overlap?
Definition at line 9959 of file hexrays.hpp.
Referenced by lvar_t::has_common(), and lvar_t::has_common_bit().
◆ asgop()
Convert plain operator into assignment operator. For example, cot_add returns cot_asgadd.
Definition at line 11544 of file hexrays.hpp.
◆ asgop_revert()
Convert assignment operator into plain operator.
For example, cot_asgadd returns cot_add
- Returns
- cot_empty is the input operator is not an assignment operator.
Definition at line 11550 of file hexrays.hpp.
◆ block_chains_begin()
block_chains_iterator_t block_chains_begin | ( | const block_chains_t * | set | ) |
Get iterator pointing to the beginning of block_chains_t.
Definition at line 9577 of file hexrays.hpp.
◆ block_chains_clear()
void block_chains_clear | ( | block_chains_t * | set | ) |
Clear block_chains_t.
Definition at line 9618 of file hexrays.hpp.
◆ block_chains_end()
block_chains_iterator_t block_chains_end | ( | const block_chains_t * | set | ) |
Get iterator pointing to the end of block_chains_t.
Definition at line 9586 of file hexrays.hpp.
◆ block_chains_erase()
void block_chains_erase | ( | block_chains_t * | set, |
block_chains_iterator_t | p | ||
) |
Erase current element from block_chains_t.
Definition at line 9611 of file hexrays.hpp.
◆ block_chains_find()
block_chains_iterator_t block_chains_find | ( | const block_chains_t * | set, |
const chain_t & | val | ||
) |
Find the specified key in set block_chains_t.
Definition at line 9559 of file hexrays.hpp.
◆ block_chains_free()
void block_chains_free | ( | block_chains_t * | set | ) |
Delete block_chains_t instance.
Definition at line 9632 of file hexrays.hpp.
◆ block_chains_get()
chain_t & block_chains_get | ( | block_chains_iterator_t | p | ) |
Get reference to the current set value.
Definition at line 9552 of file hexrays.hpp.
◆ block_chains_insert()
block_chains_iterator_t block_chains_insert | ( | block_chains_t * | set, |
const chain_t & | val | ||
) |
Insert new (chain_t) into set block_chains_t.
Definition at line 9568 of file hexrays.hpp.
◆ block_chains_new()
block_chains_t * block_chains_new | ( | ) |
Create a new block_chains_t instance.
Definition at line 9639 of file hexrays.hpp.
◆ block_chains_next()
block_chains_iterator_t block_chains_next | ( | block_chains_iterator_t | p | ) |
Move to the next element.
Definition at line 9595 of file hexrays.hpp.
◆ block_chains_prev()
block_chains_iterator_t block_chains_prev | ( | block_chains_iterator_t | p | ) |
Move to the previous element.
Definition at line 9603 of file hexrays.hpp.
◆ block_chains_size()
size_t block_chains_size | ( | block_chains_t * | set | ) |
Get size of block_chains_t.
Definition at line 9625 of file hexrays.hpp.
◆ boundaries_begin()
boundaries_iterator_t boundaries_begin | ( | const boundaries_t * | map | ) |
Get iterator pointing to the beginning of boundaries_t.
Definition at line 9475 of file hexrays.hpp.
◆ boundaries_clear()
void boundaries_clear | ( | boundaries_t * | map | ) |
Clear boundaries_t.
Definition at line 9516 of file hexrays.hpp.
◆ boundaries_end()
boundaries_iterator_t boundaries_end | ( | const boundaries_t * | map | ) |
Get iterator pointing to the end of boundaries_t.
Definition at line 9484 of file hexrays.hpp.
◆ boundaries_erase()
void boundaries_erase | ( | boundaries_t * | map, |
boundaries_iterator_t | p | ||
) |
Erase current element from boundaries_t.
Definition at line 9509 of file hexrays.hpp.
◆ boundaries_find()
boundaries_iterator_t boundaries_find | ( | const boundaries_t * | map, |
const cinsn_t *& | key | ||
) |
Find the specified key in boundaries_t.
Definition at line 9457 of file hexrays.hpp.
◆ boundaries_first()
cinsn_t *const & boundaries_first | ( | boundaries_iterator_t | p | ) |
Get reference to the current map key.
Definition at line 9443 of file hexrays.hpp.
◆ boundaries_free()
void boundaries_free | ( | boundaries_t * | map | ) |
Delete boundaries_t instance.
Definition at line 9530 of file hexrays.hpp.
◆ boundaries_insert()
boundaries_iterator_t boundaries_insert | ( | boundaries_t * | map, |
const cinsn_t *& | key, | ||
const rangeset_t & | val | ||
) |
Insert new (cinsn_t *, rangeset_t) pair into boundaries_t.
Definition at line 9466 of file hexrays.hpp.
◆ boundaries_new()
boundaries_t * boundaries_new | ( | ) |
Create a new boundaries_t instance.
Definition at line 9537 of file hexrays.hpp.
◆ boundaries_next()
boundaries_iterator_t boundaries_next | ( | boundaries_iterator_t | p | ) |
Move to the next element.
Definition at line 9493 of file hexrays.hpp.
◆ boundaries_prev()
boundaries_iterator_t boundaries_prev | ( | boundaries_iterator_t | p | ) |
Move to the previous element.
Definition at line 9501 of file hexrays.hpp.
◆ boundaries_second()
rangeset_t & boundaries_second | ( | boundaries_iterator_t | p | ) |
Get reference to the current map value.
Definition at line 9450 of file hexrays.hpp.
◆ boundaries_size()
size_t boundaries_size | ( | boundaries_t * | map | ) |
Get size of boundaries_t.
Definition at line 9523 of file hexrays.hpp.
◆ call_helper()
cexpr_t * call_helper | ( | const tinfo_t & | rettype, |
carglist_t * | args, | ||
const char * | format, | ||
... | |||
) |
Definition at line 6787 of file hexrays.hpp.
◆ change_hexrays_config()
bool change_hexrays_config | ( | const char * | directive | ) |
Parse DIRECTIVE and update the current configuration variables.
For the syntax see hexrays.cfg
Definition at line 11452 of file hexrays.hpp.
◆ checkout_hexrays_license()
bool checkout_hexrays_license | ( | bool | silent | ) |
Check out a floating decompiler license.
This function will display a dialog box if the license is not available. For non-floating licenses this function is effectively no-op. It is not necessary to call this function before decompiling. If the license was not checked out, the decompiler will automatically do it. This function can be used to check out a license in advance and ensure that a license is available.
- Parameters
-
silent silently fail if the license cannot be checked out.
- Returns
- false if failed
Definition at line 11464 of file hexrays.hpp.
◆ clear_cached_cfuncs()
void clear_cached_cfuncs | ( | void | ) |
Flush all cached decompilation results.
Definition at line 12272 of file hexrays.hpp.
◆ close_hexrays_waitbox()
void close_hexrays_waitbox | ( | void | ) |
Close the waitbox displayed by the decompiler.
Useful if DECOMP_NO_HIDE was used during decompilation.
Definition at line 12242 of file hexrays.hpp.
◆ close_pseudocode()
bool close_pseudocode | ( | TWidget * | f | ) |
Close pseudocode window.
- Parameters
-
f pointer to window
- Returns
- false if failed
Definition at line 11476 of file hexrays.hpp.
◆ convert_to_user_call()
try to generate user-defined call for an instruction
- Returns
- Microcode error codes code: MERR_OK - user-defined call generated else - error (MERR_INSN == inacceptable udc.tif)
Definition at line 10079 of file hexrays.hpp.
◆ create_cfunc()
cfuncptr_t create_cfunc | ( | mba_t * | mba | ) |
Create a new cfunc_t object.
- Parameters
-
mba microcode object. After creating the cfunc object it takes the ownership of MBA.
Definition at line 12260 of file hexrays.hpp.
◆ create_empty_mba()
mba_t * create_empty_mba | ( | const mba_ranges_t & | mbr, |
hexrays_failure_t * | hf = nullptr |
||
) |
Create an empty microcode object.
Definition at line 7203 of file hexrays.hpp.
References DECOMP_VOID_MBA, and gen_microcode().
◆ create_field_name()
qstring create_field_name | ( | const tinfo_t & | type, |
uval_t | offset = BADADDR |
||
) |
Definition at line 12290 of file hexrays.hpp.
◆ create_helper()
cexpr_t * create_helper | ( | bool | standalone, |
const tinfo_t & | type, | ||
const char * | format, | ||
... | |||
) |
Definition at line 6765 of file hexrays.hpp.
◆ create_typedef() [1/2]
tinfo_t create_typedef | ( | const char * | name | ) |
Create a reference to a named type.
- Parameters
-
name type name
- Returns
- type which refers to the specified name. For example, if name is "DWORD", the type info which refers to "DWORD" is created.
Definition at line 9915 of file hexrays.hpp.
◆ create_typedef() [2/2]
tinfo_t create_typedef | ( | int | n | ) |
Create a reference to an ordinal type.
- Parameters
-
n ordinal number of the type
- Returns
- type which refers to the specified ordinal. For example, if n is 1, the type info which refers to ordinal type 1 is created.
Definition at line 1039 of file hexrays.hpp.
◆ decompile()
cfuncptr_t decompile | ( | const mba_ranges_t & | mbr, |
hexrays_failure_t * | hf = nullptr , |
||
int | decomp_flags = 0 |
||
) |
Decompile a snippet or a function.
- Parameters
-
mbr what to decompile hf extended error information (if failed) decomp_flags bitwise combination of decompile() flags... bits
- Returns
- pointer to the decompilation result (a reference counted pointer). nullptr if failed.
- Examples
- hexrays_sample1.cpp, and hexrays_sample14.cpp.
Definition at line 12248 of file hexrays.hpp.
Referenced by decompile_func(), and decompile_snippet().
◆ decompile_func()
cfuncptr_t decompile_func | ( | func_t * | pfn, |
hexrays_failure_t * | hf = nullptr , |
||
int | decomp_flags = 0 |
||
) |
Decompile a function.
Multiple decompilations of the same function return the same object.
- Parameters
-
pfn pointer to function to decompile hf extended error information (if failed) decomp_flags bitwise combination of decompile() flags... bits
- Returns
- pointer to the decompilation result (a reference counted pointer). nullptr if failed.
Definition at line 7160 of file hexrays.hpp.
References decompile().
◆ decompile_many()
bool decompile_many | ( | const char * | outfile, |
const eavec_t * | funcaddrs, | ||
int | flags | ||
) |
Batch decompilation.
Decompile all or the specified functions
- Returns
- true if no internal error occurred and the user has not cancelled decompilation
- Parameters
-
outfile name of the output file funcaddrs list of functions to decompile. If nullptr or empty, then decompile all nonlib functions flags Batch decompilation bits
Definition at line 11488 of file hexrays.hpp.
◆ decompile_snippet()
cfuncptr_t decompile_snippet | ( | const rangevec_t & | ranges, |
hexrays_failure_t * | hf = nullptr , |
||
int | decomp_flags = 0 |
||
) |
Decompile a snippet.
- Parameters
-
ranges snippet ranges. ranges[0].start_ea is the entry point hf extended error information (if failed) decomp_flags bitwise combination of decompile() flags... bits
- Returns
- pointer to the decompilation result (a reference counted pointer). nullptr if failed.
Definition at line 7177 of file hexrays.hpp.
References decompile().
◆ dereference()
Dereference a pointer.
This function dereferences a pointer expression. It performs the following conversion: "ptr" => "*ptr" It can handle discrepancies in the pointer type and the access size.
- Parameters
-
e expression to deference ptrsize access size is_flt dereferencing for floating point access?
- Returns
- dereferenced expression
Definition at line 11976 of file hexrays.hpp.
◆ dstr()
const char * dstr | ( | const tinfo_t * | tif | ) |
Print the specified type info.
This function can be used from a debugger by typing "tif->dstr()"
- Examples
- hexrays_sample18.cpp.
Definition at line 9833 of file hexrays.hpp.
◆ dummy_ptrtype()
tinfo_t dummy_ptrtype | ( | int | ptrsize, |
bool | isfp | ||
) |
Generate a dummy pointer type.
- Parameters
-
ptrsize size of pointed object isfp is floating point object?
Definition at line 9893 of file hexrays.hpp.
◆ eamap_begin()
eamap_iterator_t eamap_begin | ( | const eamap_t * | map | ) |
Get iterator pointing to the beginning of eamap_t.
Definition at line 9366 of file hexrays.hpp.
◆ eamap_clear()
void eamap_clear | ( | eamap_t * | map | ) |
Clear eamap_t.
Definition at line 9407 of file hexrays.hpp.
◆ eamap_end()
eamap_iterator_t eamap_end | ( | const eamap_t * | map | ) |
Get iterator pointing to the end of eamap_t.
Definition at line 9375 of file hexrays.hpp.
◆ eamap_erase()
void eamap_erase | ( | eamap_t * | map, |
eamap_iterator_t | p | ||
) |
Erase current element from eamap_t.
Definition at line 9400 of file hexrays.hpp.
◆ eamap_find()
eamap_iterator_t eamap_find | ( | const eamap_t * | map, |
const ea_t & | key | ||
) |
Find the specified key in eamap_t.
Definition at line 9348 of file hexrays.hpp.
◆ eamap_first()
ea_t const & eamap_first | ( | eamap_iterator_t | p | ) |
Get reference to the current map key.
Definition at line 9334 of file hexrays.hpp.
◆ eamap_free()
void eamap_free | ( | eamap_t * | map | ) |
Delete eamap_t instance.
Definition at line 9421 of file hexrays.hpp.
◆ eamap_insert()
eamap_iterator_t eamap_insert | ( | eamap_t * | map, |
const ea_t & | key, | ||
const cinsnptrvec_t & | val | ||
) |
Insert new (ea_t, cinsnptrvec_t) pair into eamap_t.
Definition at line 9357 of file hexrays.hpp.
◆ eamap_new()
eamap_t * eamap_new | ( | ) |
Create a new eamap_t instance.
Definition at line 9428 of file hexrays.hpp.
◆ eamap_next()
eamap_iterator_t eamap_next | ( | eamap_iterator_t | p | ) |
Move to the next element.
Definition at line 9384 of file hexrays.hpp.
◆ eamap_prev()
eamap_iterator_t eamap_prev | ( | eamap_iterator_t | p | ) |
Move to the previous element.
Definition at line 9392 of file hexrays.hpp.
◆ eamap_second()
cinsnptrvec_t & eamap_second | ( | eamap_iterator_t | p | ) |
Get reference to the current map value.
Definition at line 9341 of file hexrays.hpp.
◆ eamap_size()
size_t eamap_size | ( | eamap_t * | map | ) |
Get size of eamap_t.
Definition at line 9414 of file hexrays.hpp.
◆ ENUM_SIZE()
enum hexrays_event_t ENUM_SIZE | ( | int | ) |
Decompiler events.
Use install_hexrays_callback() to install a handler for decompiler events. When the possible return value is not specified, your callback must return zero.
< Flowchart has been generated.
- Parameters
-
fc (qflow_chart_t *)
< SP change points have been calculated.
- Parameters
-
mba (mba_t *) stkpnts (stkpnts_t *) return Microcode error codes code
< Prolog analysis has been finished.
- Parameters
-
mba (mba_t *) fc (qflow_chart_t *) reachable_blocks (bitset_t *) decomp_flags (int) return Microcode error codes code
< Microcode has been generated.
- Parameters
-
mba (mba_t *) return Microcode error codes code
< Microcode has been preoptimized.
- Parameters
-
mba (mba_t *) return Microcode error codes code
< Basic block level optimization has been finished.
- Parameters
-
mba (mba_t *) return Microcode error codes code
< Local variables: preallocation step begins.
- Parameters
-
mba (mba_t *) This event may occur several times. Should return: 1 if modified microcode Negative values are Microcode error codes error codes
< Global optimization has been finished. If microcode is modified, MERR_LOOP must be returned. It will cause a complete restart of the optimization.
- Parameters
-
mba (mba_t *) return Microcode error codes code
< Structural analysis has been finished.
- Parameters
-
ct (control_graph_t *)
< Ctree maturity level is being changed.
- Parameters
-
cfunc (cfunc_t *) new_maturity (ctree_maturity_t)
< Internal error has occurred.
- Parameters
-
errcode (int )
< Trying to combine instructions of basic block.
- Parameters
-
blk (mblock_t *) insn (minsn_t *) Should return: 1 if combined the current instruction with a preceding one -1 if the instruction should not be combined 0 else
< Printing ctree and generating text.
- Parameters
-
cfunc (cfunc_t *) vp (vc_printer_t *) Returns: 1 if text has been generated by the plugin It is forbidden to modify ctree at this event.
< Function text has been generated. Plugins may modify the text in cfunc_t::sv. The text uses regular color codes (see lines.hpp) COLOR_ADDR is used to store pointers to ctree items.
- Parameters
-
cfunc (cfunc_t *)
< The optimizer is about to resolve stack addresses.
- Parameters
-
mba (mba_t *)
< Analyzing a call instruction.
- Parameters
-
blk (mblock_t *) blk->tail is the call. type (tinfo_t *) buffer for the output type. callinfo (mcallinfo_t **) prepared callinfo. The plugin should either specify the function type, either allocate and return a new mcallinfo_t object.
< New pseudocode view has been opened.
- Parameters
-
vu (vdui_t *)
< Existing pseudocode view has been reloaded with a new function. Its text has not been refreshed yet, only cfunc and mba pointers are ready.
- Parameters
-
vu (vdui_t *)
< Existing pseudocode text has been refreshed.
< Adding/removing pseudocode lines is forbidden in this event.
- Parameters
-
vu (vdui_t *) See also hxe_text_ready, which happens earlier
< Pseudocode view is being closed.
- Parameters
-
vu (vdui_t *)
< Keyboard has been hit.
- Parameters
-
vu (vdui_t *) key_code (int) VK_... shift_state (int) Should return: 1 if the event has been handled
< Mouse right click. Use hxe_populating_popup instead, in case you want to add items in the popup menu.
- Parameters
-
vu (vdui_t *)
< Mouse double click.
- Parameters
-
vu (vdui_t *) shift_state (int) Should return: 1 if the event has been handled
< Current cursor position has been changed. (for example, by left-clicking or using keyboard)
- Parameters
-
vu (vdui_t *)
< Create a hint for the current item.
- See also
- ui_get_custom_viewer_hint
- Parameters
-
vu (vdui_t *) hint (qstring *) important_lines (int *) Possible return values:
- Return values
-
0 continue collecting hints with other subscribers 1 stop collecting hints
< Decompiled text is ready.
- Parameters
-
vu (vdui_t *) This event can be used to modify the output text (sv). Obsolete. Please use hxe_func_printed instead.
< Populating popup menu. We can add menu items now.
< Local variable got renamed.
- Parameters
-
vu (vdui_t *) v (lvar_t *) name (const char *) is_user_name (bool) Please note that it is possible to read/write user settings for lvars directly from the idb.
< Local variable type got changed.
- Parameters
-
vu (vdui_t *) v (lvar_t *) tinfo (const tinfo_t *) Please note that it is possible to read/write user settings for lvars directly from the idb.
< Local variable comment got changed.
- Parameters
-
vu (vdui_t *) v (lvar_t *) cmt (const char *) Please note that it is possible to read/write user settings for lvars directly from the idb.
< Local variable mapping got changed.
<
- Parameters
-
vu (vdui_t *) from (lvar_t *) to (lvar_t *) Please note that it is possible to read/write user settings for lvars directly from the idb.
< Comment got changed.
Definition at line 7303 of file hexrays.hpp.
◆ gen_microcode()
mba_t * gen_microcode | ( | const mba_ranges_t & | mbr, |
hexrays_failure_t * | hf = nullptr , |
||
const mlist_t * | retlist = nullptr , |
||
int | decomp_flags = 0 , |
||
mba_maturity_t | reqmat = MMAT_GLBOPT3 |
||
) |
Generate microcode of an arbitrary code snippet.
- Parameters
-
mbr snippet ranges hf extended error information (if failed) retlist list of registers the snippet returns decomp_flags bitwise combination of decompile() flags... bits reqmat required microcode maturity
- Returns
- pointer to the microcode, nullptr if failed.
Definition at line 12254 of file hexrays.hpp.
Referenced by create_empty_mba().
◆ get_ctype_name()
const char * get_ctype_name | ( | ctype_t | op | ) |
Definition at line 12284 of file hexrays.hpp.
◆ get_current_operand()
bool get_current_operand | ( | gco_info_t * | out | ) |
Get the instruction operand under the cursor.
This function determines the operand that is under the cursor in the active disassembly listing. If the operand refers to a register or stack variable, it returns true.
- Parameters
-
out[out] output buffer
- Examples
- hexrays_sample12.cpp, and hexrays_sample15.cpp.
Definition at line 11514 of file hexrays.hpp.
◆ get_float_type()
tinfo_t get_float_type | ( | int | width | ) |
Get a type of a floating point value with the specified width.
- Returns
- type info object
- Parameters
-
width width of the desired type
Definition at line 9869 of file hexrays.hpp.
◆ get_hexrays_version()
const char * get_hexrays_version | ( | void | ) |
Get decompiler version.
The returned string is of the form <major>.<minor>.<revision>.<build-date>
- Returns
- pointer to version string. For example: "2.0.0.140605"
- Examples
- hexrays_sample1.cpp, hexrays_sample10.cpp, hexrays_sample11.cpp, hexrays_sample12.cpp, hexrays_sample13.cpp, hexrays_sample14.cpp, hexrays_sample15.cpp, hexrays_sample16.cpp, hexrays_sample17.cpp, hexrays_sample18.cpp, hexrays_sample2.cpp, hexrays_sample3.cpp, hexrays_sample4.cpp, hexrays_sample5.cpp, hexrays_sample6.cpp, hexrays_sample7.cpp, and hexrays_sample9.cpp.
Definition at line 11458 of file hexrays.hpp.
◆ get_int_type_by_width_and_sign()
tinfo_t get_int_type_by_width_and_sign | ( | int | srcwidth, |
type_sign_t | sign | ||
) |
Create a type info by width and sign.
Returns a simple type (examples: int, short) with the given width and sign.
- Parameters
-
srcwidth size of the type in bytes sign sign of the type
Definition at line 9877 of file hexrays.hpp.
◆ get_member_type()
bool get_member_type | ( | const member_t * | mptr, |
tinfo_t * | type | ||
) |
Get type of a structure field.
This function performs validity checks of the field type. Wrong types are rejected.
- Parameters
-
mptr structure field type pointer to the variable where the type is returned. This parameter can be nullptr.
- Returns
- false if failed
Definition at line 9901 of file hexrays.hpp.
◆ get_merror_desc()
Get textual description of an error code.
- Parameters
-
out the output buffer for the error description code Microcode error codes mba the microcode array
- Returns
- the error address
- Examples
- hexrays_sample12.cpp.
Definition at line 9747 of file hexrays.hpp.
◆ get_mreg_name()
int get_mreg_name | ( | qstring * | out, |
mreg_t | reg, | ||
int | width, | ||
void * | ud = nullptr |
||
) |
Get the microregister name.
- Parameters
-
out output buffer, may be nullptr reg microregister number width size of microregister in bytes. may be bigger than the real register size. ud reserved, must be nullptr
- Returns
- width of the printed register. this value may be less than the WIDTH argument.
Definition at line 10418 of file hexrays.hpp.
◆ get_op_signness()
type_sign_t get_op_signness | ( | ctype_t | op | ) |
Get operator sign. Meaningful for sign-dependent operators, like cot_sdiv.
Definition at line 11538 of file hexrays.hpp.
◆ get_signed_mcode()
THREAD_SAFE mcode_t get_signed_mcode | ( | mcode_t | code | ) |
Definition at line 9779 of file hexrays.hpp.
◆ get_temp_regs()
const mlist_t & get_temp_regs | ( | void | ) |
Get list of temporary registers.
Tempregs are temporary registers that are used during code generation. They do not map to regular processor registers. They are used only to store temporary values during execution of one instruction. Tempregs may not be used to pass a value from one block to another. In other words, at the end of a block all tempregs must be dead.
Definition at line 10394 of file hexrays.hpp.
◆ get_type()
bool get_type | ( | uval_t | id, |
tinfo_t * | tif, | ||
type_source_t | guess | ||
) |
Get a global type.
Global types are types of addressable objects and struct/union/enum types
- Parameters
-
id address or id of the object tif buffer for the answer guess what kind of types to consider
- Returns
- success
Definition at line 9923 of file hexrays.hpp.
◆ get_unk_type()
tinfo_t get_unk_type | ( | int | size | ) |
Create a partial type info by width.
Returns a partially defined type (examples: _DWORD, _BYTE) with the given width.
- Parameters
-
size size of the type in bytes
Definition at line 9885 of file hexrays.hpp.
◆ get_unsigned_mcode()
THREAD_SAFE mcode_t get_unsigned_mcode | ( | mcode_t | code | ) |
Definition at line 9785 of file hexrays.hpp.
◆ get_widget_vdui()
Get the vdui_t instance associated to the TWidget.
- Parameters
-
f pointer to window
- Returns
- a vdui_t *, or nullptr
- Examples
- hexrays_sample17.cpp, hexrays_sample3.cpp, and hexrays_sample5.cpp.
Definition at line 11482 of file hexrays.hpp.
◆ getb_reginsn() [1/2]
Skip assertions backward.
Definition at line 11000 of file hexrays.hpp.
◆ getb_reginsn() [2/2]
Definition at line 3776 of file hexrays.hpp.
◆ getf_reginsn() [1/2]
Skip assertions forward.
- Examples
- hexrays_sample11.cpp.
Definition at line 10994 of file hexrays.hpp.
◆ getf_reginsn() [2/2]
Definition at line 3775 of file hexrays.hpp.
◆ has_cached_cfunc()
bool has_cached_cfunc | ( | ea_t | ea | ) |
Do we have a cached decompilation result for 'ea'?
Definition at line 12278 of file hexrays.hpp.
◆ has_mcode_seloff()
THREAD_SAFE bool has_mcode_seloff | ( | mcode_t | op | ) |
Definition at line 693 of file hexrays.hpp.
◆ hexrays_alloc()
void * hexrays_alloc | ( | size_t | size | ) |
Definition at line 9645 of file hexrays.hpp.
◆ hexrays_free()
void hexrays_free | ( | void * | ptr | ) |
Definition at line 9651 of file hexrays.hpp.
◆ init_hexrays_plugin()
bool init_hexrays_plugin | ( | int | flags = 0 | ) |
Check that your plugin is compatible with hex-rays decompiler.
This function must be called before calling any other decompiler function.
- Parameters
-
flags reserved, must be 0
- Returns
- true if the decompiler exists and is compatible with your plugin
- Examples
- hexrays_sample1.cpp, hexrays_sample10.cpp, hexrays_sample11.cpp, hexrays_sample12.cpp, hexrays_sample13.cpp, hexrays_sample14.cpp, hexrays_sample15.cpp, hexrays_sample16.cpp, hexrays_sample17.cpp, hexrays_sample18.cpp, hexrays_sample2.cpp, hexrays_sample3.cpp, hexrays_sample4.cpp, hexrays_sample5.cpp, hexrays_sample6.cpp, hexrays_sample7.cpp, and hexrays_sample9.cpp.
Definition at line 8548 of file hexrays.hpp.
◆ install_hexrays_callback()
bool install_hexrays_callback | ( | hexrays_cb_t * | callback, |
void * | ud | ||
) |
Install handler for decompiler events.
- Parameters
-
callback handler to install ud user data. this pointer will be passed to your handler by the decompiler.
- Returns
- false if failed
- Examples
- hexrays_sample18.cpp, hexrays_sample2.cpp, hexrays_sample3.cpp, hexrays_sample5.cpp, hexrays_sample6.cpp, and hexrays_sample7.cpp.
Definition at line 12298 of file hexrays.hpp.