HexRays SDK header file. More...
Go to the source code of this file.
Classes | |
| struct | operand_locator_t |
| Operand locator. More... | |
| struct | number_format_t |
| Number represenation. 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... | |
| struct | typestring |
| Type string. More... | |
| struct | meminfo_t |
| struct | strtype_info_t |
| struct | lvar_locator_t |
| Local variable locator. Local variables are located using: definition ea, location. More... | |
| class | lvar_t |
| Definition of a local variable (register or stack). More... | |
| struct | lvars_t |
| Set of local variables. More... | |
| struct | lvar_saved_info_t |
| Saved user settings for local variables. More... | |
| struct | user_lvar_visitor_t |
| Saved user settings iterator for local variables. More... | |
| struct | fnumber_t |
| Floating point constant. More... | |
| struct | hexwarn_t |
| 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 | operator_info_t |
| Information about C operator. 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 element locator. More... | |
| struct | citem_t |
| Basic ctree element. More... | |
| struct | cexpr_t |
| Ctree element: 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 element: 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_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 pseudocode window. More... | |
| struct | user_numforms_iterator_t |
| Iterator class for user_numforms_t. More... | |
| struct | lvar_mapping_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... | |
Defines | |
| #define | CHECKED_BUILD |
| #define | hexapi |
| Public functions are marked with this keyword. | |
| #define | DECLARE_COMPARISON_OPERATORS(type) |
| Macro to declare standard inline comparison operators. | |
| #define | DECLARE_COMPARISONS(type) |
| Macro to declare comparisons for our classes All comparison operators call the compare() function which returns -1/0/1. | |
| #define | NF_FIXED 0x01 |
| number format has been defined by the user | |
| #define | NF_NEGDONE 0x02 |
| temporary internal bit: negation has been performed | |
| #define | NF_NEGATE 0x08 |
| The user asked to negate the constant. | |
| #define | CVAR_USED 0x0001 |
| is used in the code? | |
| #define | CVAR_TYPE 0x0002 |
| the type is defined? | |
| #define | CVAR_NAME 0x0004 |
| has nice name? | |
| #define | CVAR_MREG 0x0008 |
| corresponding mregs were replaced? | |
| #define | CVAR_NOWD 0x0010 |
| width is unknown | |
| #define | CVAR_UNAME 0x0020 |
| user-defined name | |
| #define | CVAR_UTYPE 0x0040 |
| user-defined type | |
| #define | CVAR_RESULT 0x0080 |
| function result variable | |
| #define | CVAR_ARG 0x0100 |
| function argument | |
| #define | CVAR_FAKE 0x0200 |
| fake return variable | |
| #define | CVAR_OVER 0x0400 |
| overlapping variable | |
| #define | CVAR_FLOAT 0x0800 |
| used in a fpu insn | |
| #define | CVAR_SPOILED 0x1000 |
| internal flag, do not use: spoiled var | |
| #define | CVAR_MAPDST 0x2000 |
| other variables are mapped to this var | |
| #define | ULV_PRECISE_DEFEA 0x0001 |
| Use precise defea's for lvar locations. | |
| #define | VDRUN_NEWFILE 0x0000 |
| Create a new file or overwrite existing file. | |
| #define | VDRUN_APPEND 0x0001 |
| Create a new file or append to existing file. | |
| #define | VDRUN_ONLYNEW 0x0002 |
| Fail if output file already exists. | |
| #define | VDRUN_SILENT 0x0004 |
| Silent decompilation. | |
| #define | VDRUN_SENDIDB 0x0008 |
| Send problematic databases to hex-rays.com. | |
| #define | VDRUN_MAYSTOP 0x0010 |
| the user can cancel decompilation | |
| #define | VDRUN_CMDLINE 0x0020 |
| called from ida's command line | |
| #define | VDRUN_STATS 0x0040 |
| print statistics into vd_stats.txt | |
| #define | MERR_OK 0 |
| ok | |
| #define | MERR_BLOCK 1 |
| no error, switch to new block | |
| #define | MERR_INTERR (-1) |
| internal error | |
| #define | MERR_INSN (-2) |
| can not convert to microcode | |
| #define | MERR_MEM (-3) |
| not enough memory | |
| #define | MERR_BADBLK (-4) |
| bad block found | |
| #define | MERR_BADSP (-5) |
| positive sp value has been found | |
| #define | MERR_PROLOG (-6) |
| prolog analysis failed | |
| #define | MERR_SWITCH (-7) |
| wrong switch idiom | |
| #define | MERR_EXCEPTION (-8) |
| exception analysis failed | |
| #define | MERR_HUGESTACK (-9) |
| stack frame is too big | |
| #define | MERR_LVARS (-10) |
| local variable allocation failed | |
| #define | MERR_BITNESS (-11) |
| 16bit programs are not supported (yet) | |
| #define | MERR_BADCALL (-12) |
| could not determine call arguments | |
| #define | MERR_BADFRAME (-13) |
| function frame is wrong | |
| #define | MERR_UNKTYPE (-14) |
| undefined type s | |
| #define | MERR_BADIDB (-15) |
| inconsistent database information | |
| #define | MERR_SIZEOF (-16) |
| wrong basic type sizes in compiler settings | |
| #define | MERR_REDO (-17) |
| redecompilation has been requested | |
| #define | MERR_CANCELED (-18) |
| decompilation has been cancelled | |
| #define | MERR_RECDEPTH (-19) |
| max recursion depth reached during lvar allocation | |
| #define | MERR_OVERLAP (-20) |
| variables would overlap: s | |
| #define | MERR_PARTINIT (-21) |
| partially initialized variable s | |
| #define | MERR_COMPLEX (-22) |
| too complex function | |
| #define | MERR_LICENSE (-23) |
| no license available | |
| #define | MERR_MAX_ERR 23 |
| #define | MERR_LOOP (-24) |
| internal code: redo last loop (never reported) | |
| #define | CV_FAST 0x0000 |
| do not maintain parent information | |
| #define | CV_PRUNE 0x0001 |
| this bit is set by visit...() to prune the walk | |
| #define | CV_PARENTS 0x0002 |
| maintain parent information | |
| #define | CV_POST 0x0004 |
| call the leave...() functions | |
| #define | CV_RESTART 0x0008 |
| restart enumeration at the top expr (apply_to_exprs) | |
| #define | CV_INSNS 0x0010 |
| visit only statements, prune all expressions | |
| #define | EXFL_CPADONE 0x0001 |
| pointer arithmetic correction done | |
| #define | EXFL_LVALUE 0x0002 |
| expression is lvalue even if it doesn't look like it | |
| #define | EXFL_FPOP 0x0004 |
| floating point operation | |
| #define | EXFL_ALONE 0x0008 |
| standalone helper | |
| #define | EXFL_ALL 0x000F |
| all currently defined bits | |
| #define | CIT_COLLAPSED 0x0001 |
| display element in collapsed form | |
| #define | VDUI_VISIBLE 0x0001 |
| is visible? | |
| #define | VDUI_VALID 0x0002 |
| is valid? | |
| #define | VDUI_LOCKED 0x0004 |
| is locked? | |
| #define | number_locator_t operand_locator_t |
Typedefs | |
| typedef int | mreg_t |
| Micro register. | |
| typedef qvector< uchar > | byteseq_t |
| Byte sequence. | |
| typedef qvector< qstring > | qstrvec_t |
| Vector of strings. | |
|
typedef std::map < operand_locator_t, number_format_t > | user_numforms_t |
|
typedef std::map < lvar_locator_t, lvar_locator_t > | lvar_mapping_t |
| Local variable mapping (is used to merge variables). | |
| typedef qvector< hexwarn_t > | hexwarns_t |
| typedef qvector< citem_t * > | parents_t |
| Vector of parents. | |
|
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. | |
| typedef std::map< int, qstring > | user_labels_t |
| typedef void * | hexdsp_t (int code,...) |
| Hex-Rays decompiler dispatcher. | |
| typedef int | hexrays_cb_t (void *ud, hexrays_event_t event, va_list va) |
| Handler of decompiler events. | |
| typedef qstack< history_item_t > | history_t |
| Navigation history. | |
| typedef int | cmt_type_t |
| Comment types. | |
| typedef int32 | iterator_word |
Enumerations | |
| 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_MAX } |
| 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_last = cot_helper, cit_empty = 69, cit_block = 70, cit_expr = 71, cit_if = 72, cit_for = 73, cit_while = 74, cit_do = 75, cit_switch = 76, cit_break = 77, cit_continue = 78, cit_return = 79, cit_goto = 80, cit_asm = 81, cit_end } |
Ctree element type. 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_SIGN = 0x40000000, ITP_CASE = 0x80000000 } |
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 | hexrays_event_t { hxe_flowchart, hxe_prolog, hxe_preoptimized, hxe_locopt, hxe_prealloc, hxe_glbopt, hxe_structural, hxe_maturity, hxe_interr, hxe_combine, hxe_print_func, hxe_open_pseudocode = 100, hxe_switch_pseudocode, hxe_refresh_pseudocode, hxe_close_pseudocode, hxe_keyboard, hxe_right_click, hxe_double_click, hxe_curpos, hxe_create_hint, hxe_text_ready } |
Decompiler events. More... | |
| enum | input_device_t { USE_KEYBOARD = 0, USE_MOUSE = 1 } |
Type of the input device. More... | |
| enum | hexcall_t { 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_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_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_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_operand_locator_t_compare, hx_vd_printer_t_print, hx_qstring_printer_t_print, hx_remove_typedef, hx_is_type_correct, hx_is_type_integral, hx_is_type_small_struni, hx_partial_type_num, hx_get_float_bit, hx_typestring_print, hx_typestring_change_sign, hx_typestring_get_cc, hx_typestring_get_nth_arg, hx_get_int_type_by_width_and_sign, hx_get_unk_type, hx_get_member_type, hx_make_array, hx_make_pointer, hx_create_typedef, hx_remove_pointer, hx_cnv_array_to_ptr, hx_strtype_info_t_build_base_type, hx_strtype_info_t_build_udt_type, hx_arglocs_overlap, hx_lvar_locator_t_get_regnum, hx_lvar_locator_t_compare, hx_lvar_t_accepts_type, hx_lvar_t_set_lvar_type, hx_lvar_t_set_width, 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_fnumber_t_print, hx_get_hexrays_version, hx_open_pseudocode, hx_close_pseudocode, hx_decompile, hx_decompile_many, hx_micro_err_format, hx_hexrays_failure_t_desc, hx_send_database, hx_negated_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_label, hx_citem_t_find_parent_of, 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_nbits, 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_restore_user_labels, hx_restore_user_cmts, hx_restore_user_numforms, hx_restore_user_iflags, 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_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_line_item, hx_cfunc_t_get_warnings, hx_cfunc_t_gather_derefs, hx_cfunc_t_cleanup, hx_get_ctype_name, hx_install_hexrays_callback, hx_remove_hexrays_callback, hx_vdui_t_refresh_view, hx_vdui_t_refresh_ctext, hx_vdui_t_switch_to, hx_vdui_t_get_number, 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_lvar_type, hx_vdui_t_set_lvar_type, hx_vdui_t_edit_lvar_cmt, hx_vdui_t_set_lvar_cmt, 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_push_current_location, hx_vdui_t_pop_current_location, 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_collapse_item, hx_vdui_t_split_item, hx_vdui_t_set_vargloc_end, 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_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_strtype_info_t_create_from, hx_save_user_unions, hx_restore_user_unions, hx_cfunc_t_get_user_union_selection, hx_cfunc_t_set_user_union_selection, hx_vdui_t_ui_edit_lvar_cmt, hx_vdui_t_ui_map_lvar, hx_vdui_t_ui_unmap_lvar, hx_vdui_t_map_lvar, hx_dummy_ptrtype, hx_create_field_name, hx_dummy_plist_for, hx_make_dt } |
API call numbers. | |
Functions | |
| const type_t * | remove_typedef (const type_t *type, const p_list **fields=NULL) |
| Resolve a typedef. | |
| bool | is_type_correct (const type_t *ptr) |
| Verify a type string. | |
| bool | is_type_integral (const type_t *type) |
| Is integral type? | |
| bool | is_type_small_struni (const type_t *ptr) |
| Is a small structure or union? | |
| bool | is_ptr_or_array (type_t t) |
| Is a pointer or array type? | |
| bool | is_paf (type_t t) |
| Is a pointer, array, or function type? | |
| const type_t * | skip_ptr_or_array_header (const type_t *t) |
| Skip pointer or array type header. | |
| int | partial_type_num (const type_t *type) |
| Calculate number of partial subtypes. | |
| type_t | get_float_bit (int width) |
| Get a type byte for a floating point value. | |
| typestring | get_int_type_by_width_and_sign (int srcwidth, type_sign_t sign) |
| Create a type string by width and sign. | |
| typestring | get_unk_type (int size) |
| Create a partial type string by width. | |
| typestring | dummy_ptrtype (int ptrsize, bool isfp) |
| Generate a dummy pointer type. | |
| bool | get_member_type (const member_t *mptr, typestring *type, qtype *fields=NULL) |
| Get type of a structure field. | |
| typestring | make_array (const type_t *type, int nelems) |
| Create an array type. | |
| typestring | make_pointer (const typestring &type) |
| Create a pointer type. | |
| typestring | create_typedef (const char *name) |
| Create a reference to a named type. | |
| typestring | remove_pointer (const typestring &type) |
| Get pointed object type. | |
| bool | cnv_array_to_ptr (typestring &type) |
| Convert array type into pointer type. | |
| mreg_t | get_lvarloc_reg1 (argloc_t location) |
| If there is only one register, use all argloc bits. | |
| mreg_t | get_lvarloc_reg2 (argloc_t location) |
| bool | arglocs_overlap (argloc_t loc1, size_t w1, argloc_t loc2, size_t w2) |
| Do two arglocs overlap? | |
| int | restore_user_lvar_settings (ea_t func_ea, user_lvar_visitor_t &ulv) |
| Restore user defined local variable settings in the database. | |
| void | save_user_lvar_settings (ea_t func_ea, user_lvar_visitor_t &ulv) |
| Save user defined local variable settings into the database. | |
| const char * | get_hexrays_version (void) |
| Get decompiler version. | |
| vdui_t * | open_pseudocode (ea_t ea, int new_window) |
| Open pseudocode window. | |
| bool | close_pseudocode (TForm *f) |
| Close pseudocode window. | |
| cfunc_t * | decompile (func_t *pfn, hexrays_failure_t *hf) |
| Decompile a function. | |
| bool | decompile_many (const char *outfile, eavec_t *funcaddrs, int vdrun_flags) |
| Batch decompilation. | |
| const char * | micro_err_format (int code) |
| Get textual description of an error code. | |
| void | send_database (const hexrays_failure_t &err, bool silent) |
| Send the database to Hex-Rays. | |
| template<class T > | |
| int | compare (const T &a, const T &b) |
| Template to compare any 2 values of the same type. Returns -1/0/1. | |
| template<class T > | |
| int | compare (const qvector< T > &a, const qvector< T > &b) |
| template<class T > | |
| int | compare (const qlist< T > &a, const qlist< T > &b) |
| template<class T , class U > | |
| int | compare (const std::pair< T, U > &a, const std::pair< T, U > &b) |
| template<class T > | |
| int | compare_containers (const T &l, const T &r) |
| Template to compare any 2 containers of the same type. Returns -1/0/1. | |
| ctype_t | negated_relation (ctype_t op) |
| Negate a comparison operator. For example, cot_sge becomes cot_slt. | |
| type_sign_t | get_op_signness (ctype_t op) |
| Get operator sign. Meaningful for sign-dependent operators, like cot_sdiv. | |
| ctype_t | asgop (ctype_t cop) |
| Convert plain operator into assignment operator. For example, cot_add returns cot_asgadd. | |
| ctype_t | asgop_revert (ctype_t cop) |
| Convert assignment operator into plain operator. | |
| bool | op_uses_x (ctype_t op) |
| Does operator use the 'x' field of cexpr_t? | |
| bool | op_uses_y (ctype_t op) |
| Does operator use the 'y' field of cexpr_t? | |
| bool | op_uses_z (ctype_t op) |
| Does operator use the 'z' field of cexpr_t? | |
| bool | is_binary (ctype_t op) |
| Is binary operator? | |
| bool | is_unary (ctype_t op) |
| Is unary operator? | |
| bool | is_relational (ctype_t op) |
| Is comparison operator? | |
| bool | is_assignment (ctype_t op) |
| Is assignment operator? | |
| bool | accepts_udts (ctype_t op) |
| bool | is_prepost (ctype_t op) |
| Is pre/post increment/decrement operator? | |
| bool | is_commutative (ctype_t op) |
| Is commutative operator? | |
| bool | is_additive (ctype_t op) |
| Is additive operator? | |
| bool | is_multiplicative (ctype_t op) |
| Is multiplicative operator? | |
| bool | is_bitop (ctype_t op) |
| Is bit relatede operator? | |
| bool | is_logical (ctype_t op) |
| Is logical operator? | |
| bool | is_loop (ctype_t op) |
| Is loop statement code? | |
| bool | is_break_consumer (ctype_t op) |
| Does a break statement influence the specified statement code? | |
| bool | is_lvalue (ctype_t op) |
| Is Lvalue operator? | |
| bool | is_allowed_on_small_struni (ctype_t op) |
| Is the operator allowed on small struni (structure/union)? | |
| cexpr_t * | lnot (cexpr_t *e) |
| Logically negate the specified expression. | |
| cinsn_t * | new_block (void) |
| Create a new block-statement. | |
| cexpr_t * | vcreate_helper (bool standalone, const typestring &type, const char *format, va_list va) |
| cexpr_t * | create_helper (bool standalone, const typestring &type, const char *format,...) |
| cexpr_t * | vcall_helper (const typestring &rettype, carglist_t *args, const char *format, va_list va) |
| cexpr_t * | call_helper (const typestring &rettype, carglist_t *args, const char *format,...) |
| cexpr_t * | make_num (uint64 n, int opnum=0, type_sign_t sign=no_sign) |
| Create a number expression. | |
| cexpr_t * | make_ref (cexpr_t *e) |
| Create a reference. | |
| cexpr_t * | dereference (cexpr_t *e, int ptrsize, bool is_float=false) |
| Dereference a pointer. | |
| void | save_user_labels (ea_t func_ea, const user_labels_t *user_labels) |
| Save user defined labels into the database. | |
| void | save_user_cmts (ea_t func_ea, const user_cmts_t *user_cmts) |
| Save user defined comments into the database. | |
| void | save_user_numforms (ea_t func_ea, const user_numforms_t *numforms) |
| Save user defined number formats into the database. | |
| void | save_user_iflags (ea_t func_ea, const user_iflags_t *iflags) |
| Save user defined citem iflags into the database. | |
| void | save_user_unions (ea_t func_ea, const user_unions_t *unions) |
| Save user defined union field selections into the database. | |
| user_labels_t * | restore_user_labels (ea_t func_ea) |
| Restore user defined labels from the database. | |
| user_cmts_t * | restore_user_cmts (ea_t func_ea) |
| Restore user defined comments from the database. | |
| user_numforms_t * | restore_user_numforms (ea_t func_ea) |
| Restore user defined number formats from the database. | |
| user_iflags_t * | restore_user_iflags (ea_t func_ea) |
| Restore user defined citem iflags from the database. | |
| user_unions_t * | restore_user_unions (ea_t func_ea) |
| Restore user defined union field selections from the database. | |
| const char * | get_ctype_name (ctype_t op) |
| qstring | create_field_name (const typestring &type, uval_t offset=BADADDR) |
| typestring | dummy_plist_for (const type_t *ptr) |
| typestring | make_dt (int n) |
| bool | install_hexrays_callback (hexrays_cb_t *callback, void *ud) |
| Install handler for decompiler events. | |
| int | remove_hexrays_callback (hexrays_cb_t *callback, void *ud) |
| Uninstall handler for decompiler events. | |
| bool | init_hexrays_plugin (int flags=0) |
| Initialize your plugin for hex-rays decompiler. | |
| void | term_hexrays_plugin (void) |
| Terminate your plugin for hex-rays decompiler. | |
| user_numforms_iterator_t | user_numforms_begin (const user_numforms_t *map) |
| Get iterator pointing to the beginning of user_numforms_t. | |
| user_numforms_iterator_t | user_numforms_end (const user_numforms_t *map) |
| Get iterator pointing to the end of user_numforms_t. | |
| user_numforms_iterator_t | user_numforms_next (user_numforms_iterator_t p) |
| Move to the next element. | |
| user_numforms_iterator_t | user_numforms_prev (user_numforms_iterator_t p) |
| Move to the previous element. | |
| const operand_locator_t & | user_numforms_first (user_numforms_iterator_t p) |
| Get reference to the current map key. | |
| number_format_t & | user_numforms_second (user_numforms_iterator_t p) |
| Get reference to the current map value. | |
| 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. | |
| 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. | |
| void | user_numforms_erase (user_numforms_t *map, user_numforms_iterator_t p) |
| Erase current element from user_numforms_t. | |
| void | user_numforms_clear (user_numforms_t *map) |
| Clear user_numforms_t. | |
| size_t | user_numforms_size (user_numforms_t *map) |
| Get size of user_numforms_t. | |
| void | user_numforms_free (user_numforms_t *map) |
| Delete user_numforms_t instance. | |
| lvar_mapping_iterator_t | lvar_mapping_begin (const lvar_mapping_t *map) |
| Get iterator pointing to the beginning of lvar_mapping_t. | |
| lvar_mapping_iterator_t | lvar_mapping_end (const lvar_mapping_t *map) |
| Get iterator pointing to the end of lvar_mapping_t. | |
| lvar_mapping_iterator_t | lvar_mapping_next (lvar_mapping_iterator_t p) |
| Move to the next element. | |
| lvar_mapping_iterator_t | lvar_mapping_prev (lvar_mapping_iterator_t p) |
| Move to the previous element. | |
| const lvar_locator_t & | lvar_mapping_first (lvar_mapping_iterator_t p) |
| Get reference to the current map key. | |
| lvar_locator_t & | lvar_mapping_second (lvar_mapping_iterator_t p) |
| Get reference to the current map value. | |
| 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. | |
| 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. | |
| void | lvar_mapping_erase (lvar_mapping_t *map, lvar_mapping_iterator_t p) |
| Erase current element from lvar_mapping_t. | |
| void | lvar_mapping_clear (lvar_mapping_t *map) |
| Clear lvar_mapping_t. | |
| size_t | lvar_mapping_size (lvar_mapping_t *map) |
| Get size of lvar_mapping_t. | |
| void | lvar_mapping_free (lvar_mapping_t *map) |
| Delete lvar_mapping_t instance. | |
| user_cmts_iterator_t | user_cmts_begin (const user_cmts_t *map) |
| Get iterator pointing to the beginning of user_cmts_t. | |
| user_cmts_iterator_t | user_cmts_end (const user_cmts_t *map) |
| Get iterator pointing to the end of user_cmts_t. | |
| user_cmts_iterator_t | user_cmts_next (user_cmts_iterator_t p) |
| Move to the next element. | |
| user_cmts_iterator_t | user_cmts_prev (user_cmts_iterator_t p) |
| Move to the previous element. | |
| const treeloc_t & | user_cmts_first (user_cmts_iterator_t p) |
| Get reference to the current map key. | |
| citem_cmt_t & | user_cmts_second (user_cmts_iterator_t p) |
| Get reference to the current map value. | |
| user_cmts_iterator_t | user_cmts_find (const user_cmts_t *map, const treeloc_t &key) |
| Find the specified key in user_cmts_t. | |
| 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. | |
| void | user_cmts_erase (user_cmts_t *map, user_cmts_iterator_t p) |
| Erase current element from user_cmts_t. | |
| void | user_cmts_clear (user_cmts_t *map) |
| Clear user_cmts_t. | |
| size_t | user_cmts_size (user_cmts_t *map) |
| Get size of user_cmts_t. | |
| void | user_cmts_free (user_cmts_t *map) |
| Delete user_cmts_t instance. | |
| user_iflags_iterator_t | user_iflags_begin (const user_iflags_t *map) |
| Get iterator pointing to the beginning of user_iflags_t. | |
| user_iflags_iterator_t | user_iflags_end (const user_iflags_t *map) |
| Get iterator pointing to the end of user_iflags_t. | |
| user_iflags_iterator_t | user_iflags_next (user_iflags_iterator_t p) |
| Move to the next element. | |
| user_iflags_iterator_t | user_iflags_prev (user_iflags_iterator_t p) |
| Move to the previous element. | |
| const citem_locator_t & | user_iflags_first (user_iflags_iterator_t p) |
| Get reference to the current map key. | |
| int32 & | user_iflags_second (user_iflags_iterator_t p) |
| Get reference to the current map value. | |
| 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. | |
| 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. | |
| void | user_iflags_erase (user_iflags_t *map, user_iflags_iterator_t p) |
| Erase current element from user_iflags_t. | |
| void | user_iflags_clear (user_iflags_t *map) |
| Clear user_iflags_t. | |
| size_t | user_iflags_size (user_iflags_t *map) |
| Get size of user_iflags_t. | |
| void | user_iflags_free (user_iflags_t *map) |
| Delete user_iflags_t instance. | |
| user_unions_iterator_t | user_unions_begin (const user_unions_t *map) |
| Get iterator pointing to the beginning of user_unions_t. | |
| user_unions_iterator_t | user_unions_end (const user_unions_t *map) |
| Get iterator pointing to the end of user_unions_t. | |
| user_unions_iterator_t | user_unions_next (user_unions_iterator_t p) |
| Move to the next element. | |
| user_unions_iterator_t | user_unions_prev (user_unions_iterator_t p) |
| Move to the previous element. | |
| const ea_t & | user_unions_first (user_unions_iterator_t p) |
| Get reference to the current map key. | |
| intvec_t & | user_unions_second (user_unions_iterator_t p) |
| Get reference to the current map value. | |
| user_unions_iterator_t | user_unions_find (const user_unions_t *map, const ea_t &key) |
| Find the specified key in user_unions_t. | |
| 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. | |
| void | user_unions_erase (user_unions_t *map, user_unions_iterator_t p) |
| Erase current element from user_unions_t. | |
| void | user_unions_clear (user_unions_t *map) |
| Clear user_unions_t. | |
| size_t | user_unions_size (user_unions_t *map) |
| Get size of user_unions_t. | |
| void | user_unions_free (user_unions_t *map) |
| Delete user_unions_t instance. | |
| user_labels_iterator_t | user_labels_begin (const user_labels_t *map) |
| Get iterator pointing to the beginning of user_labels_t. | |
| user_labels_iterator_t | user_labels_end (const user_labels_t *map) |
| Get iterator pointing to the end of user_labels_t. | |
| user_labels_iterator_t | user_labels_next (user_labels_iterator_t p) |
| Move to the next element. | |
| user_labels_iterator_t | user_labels_prev (user_labels_iterator_t p) |
| Move to the previous element. | |
| const int & | user_labels_first (user_labels_iterator_t p) |
| Get reference to the current map key. | |
| qstring & | user_labels_second (user_labels_iterator_t p) |
| Get reference to the current map value. | |
| user_labels_iterator_t | user_labels_find (const user_labels_t *map, const int &key) |
| Find the specified key in user_labels_t. | |
| 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. | |
| void | user_labels_erase (user_labels_t *map, user_labels_iterator_t p) |
| Erase current element from user_labels_t. | |
| void | user_labels_clear (user_labels_t *map) |
| Clear user_labels_t. | |
| size_t | user_labels_size (user_labels_t *map) |
| Get size of user_labels_t. | |
| void | user_labels_free (user_labels_t *map) |
| Delete user_labels_t instance. | |
Variables | |
| const uchar | FX_NONE = 0 |
| not applicable | |
| const uchar | FX_INFIX = 1 |
| infix: a + b | |
| const uchar | FX_PREFIX = 2 |
| prefix: *a | |
| const uchar | FX_POSTFIX = 3 |
| postfix: a++ | |
| const uchar | FX_TERNARY = 4 |
| ternary: a ? b : c | |
| const uchar | COI_RL = 0x00 |
| right to left | |
| const uchar | COI_LR = 0x01 |
| left to right | |
| const uchar | COI_INT = 0x02 |
| requires integer operands | |
| const uchar | COI_FP = 0x04 |
| requires floating point operands | |
| const uchar | COI_SH = 0x08 |
| is shift operation? | |
| const uchar | COI_SGN = 0x10 |
| sign sensitive? | |
| const uchar | COI_SBN = 0x20 |
| is simple binary? | |
| const int | HEXRAYS_API_MAGIC1 = 0xC001C0DE |
| const int | HEXRAYS_API_MAGIC2 = 0xBE37BABE |
| const cmt_type_t | CMT_NONE = 0x0000 |
| No comment is possible. | |
| const cmt_type_t | CMT_TAIL = 0x0001 |
| Indented comment. | |
| const cmt_type_t | CMT_BLOCK1 = 0x0002 |
| Anterioir block comment. | |
| const cmt_type_t | CMT_BLOCK2 = 0x0004 |
| Posterior block comment. | |
| const cmt_type_t | CMT_LVAR = 0x0008 |
| Local variable comment. | |
| const cmt_type_t | CMT_FUNC = 0x0010 |
| Function comment. | |
| const cmt_type_t | CMT_ALL = 0x001F |
| All comments. | |
| hexdsp_t * | hexdsp |
| Pointer to Hex-Rays decompiler dispatcher. | |
HexRays SDK header file.
The decompiler SDK consists of a single header file.
The header file defines data structures and inline functions. All interaction with the decompiler is made through a single function pointer: hexdsp. This pointer is initialized at the beginning and is used to call the decompiler for all actions.
Currently the SDK is not settled down and we can not guarantee compatibility with the older versions. Hopefully this problem will be solved in the near future.
Definition in file hexrays.hpp.
| #define DECLARE_COMPARISON_OPERATORS | ( | type | ) |
bool operator==(const type &r) const { return compare(r) == 0; } \ bool operator!=(const type &r) const { return compare(r) != 0; } \ bool operator< (const type &r) const { return compare(r) < 0; } \ bool operator> (const type &r) const { return compare(r) > 0; } \ bool operator<=(const type &r) const { return compare(r) <= 0; } \ bool operator>=(const type &r) const { return compare(r) >= 0; }
Macro to declare standard inline comparison operators.
Definition at line 55 of file hexrays.hpp.
| #define DECLARE_COMPARISONS | ( | type | ) |
DECLARE_COMPARISON_OPERATORS(type) \ friend int compare(const type &a, const type &b) { return a.compare(b); } \ int compare(const type &r) const
Macro to declare comparisons for our classes All comparison operators call the compare() function which returns -1/0/1.
Definition at line 65 of file hexrays.hpp.
| 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 2534 of file hexrays.hpp.
| typedef int hexrays_cb_t(void *ud, hexrays_event_t event, va_list va) |
Handler of decompiler events.
| ud | user data. the value specified at the handler installation time is passed here. | |
| event | decompiler event code | |
| va | additional arguments |
Definition at line 2652 of file hexrays.hpp.
Unused label disposition.
| FORBID_UNUSED_LABELS |
Unused labels cause interr. |
| ALLOW_UNUSED_LABELS |
Unused labels are permitted. |
Definition at line 2161 of file hexrays.hpp.
| 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 can not be told apart. To avoid comment duplication, we remember if a comment has already been used or not.
| RETRIEVE_ONCE |
Retrieve comment if it has not been used yet. |
| RETRIEVE_ALWAYS |
Retrieve comment even if it has been used. |
Definition at line 1537 of file hexrays.hpp.
| 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 1464 of file hexrays.hpp.
| enum ctype_t |
Ctree element type.
At the beginning of this list there are expression elements (cot_...), followed by statement elements (cit_...).
Definition at line 1049 of file hexrays.hpp.
| enum cursor_item_type_t |
Type of the cursor item.
Definition at line 2098 of file hexrays.hpp.
| enum hexrays_event_t |
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.
| hxe_flowchart |
Flowchart has been generated. qflow_chart_t *fc |
| hxe_prolog |
Prolog analysis has been finished. mbl_array_t *mba |
| hxe_preoptimized |
Microcode has been preoptimized. mbl_array_t *mba |
| hxe_locopt |
Basic block level optimization has been finished. mbl_array_t *mba |
| hxe_prealloc |
Local variables: preallocation step begins.
|
| hxe_glbopt |
Global optimization has been finished. mbl_array_t *mba |
| hxe_structural |
Structural analysis has been finished. control_graph_t *ct |
| hxe_maturity |
Ctree maturity level is being changed. cfunc_t *cfunc |
| hxe_interr |
Internal error has occurred. int errcode |
| hxe_combine |
Trying to combine instructions of basic block. mblock_t *blk |
| hxe_print_func |
Printing ctree and generating text. cfunc_t *cfunc |
| hxe_open_pseudocode |
New pseudocode view has been opened. vdui_t *vu |
| hxe_switch_pseudocode |
Existing pseudocode view has been reloaded with a new function. Its text has not been refreshed yet, only cfunc and mba pointers are ready. |
| hxe_refresh_pseudocode |
Existing pseudocode text has been refreshed. vdui_t *vu |
| hxe_close_pseudocode |
Pseudocode view is being closed. vdui_t *vu |
| hxe_keyboard |
Keyboard has been hit. vdui_t *vu |
| hxe_right_click |
Mouse right click. We can add menu items now. vdui_t *vu |
| hxe_double_click |
Mouse double click. vdui_t *vu |
| hxe_curpos |
Current cursor position has been changed. (for example, by left-clicking or using keyboard) |
| hxe_create_hint |
Create a hint for the current item. vdui_t *vu |
| hxe_text_ready |
Decompiled text is ready. vdui_t *vu |
Definition at line 2542 of file hexrays.hpp.
| 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 1490 of file hexrays.hpp.
| enum use_curly_t |
Should curly braces be printed?
| 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 1851 of file hexrays.hpp.
Convert assignment operator into plain operator.
For example, cot_asgadd returns cot_add
Definition at line 4250 of file hexrays.hpp.
References hexdsp.
| bool close_pseudocode | ( | TForm * | f | ) |
Close pseudocode window.
| f | pointer to window |
Definition at line 4194 of file hexrays.hpp.
References hexdsp.
| cfunc_t * decompile | ( | func_t * | pfn, | |
| hexrays_failure_t * | hf | |||
| ) |
Decompile a function.
| pfn | pointer to function to decompile | |
| hf | extended error information (if failed) |
Definition at line 4200 of file hexrays.hpp.
References hexdsp.
| bool decompile_many | ( | const char * | outfile, | |
| eavec_t * | funcaddrs, | |||
| int | vdrun_flags | |||
| ) |
Batch decompilation.
Decompile all or the specified functions
| outfile | name of the output file | |
| funcaddrs | list of functions to decompile. If NULL or empty, then decompile all nonlib functions | |
| vdrun_flags | Batch decompilation bits |
Definition at line 4206 of file hexrays.hpp.
References hexdsp.
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.
| e | expression to deference | |
| ptrsize | access size |
Definition at line 4624 of file hexrays.hpp.
References hexdsp.
| const char * get_hexrays_version | ( | void | ) |
Get decompiler version.
Definition at line 4182 of file hexrays.hpp.
References hexdsp.
| bool init_hexrays_plugin | ( | int | flags = 0 |
) |
Initialize your plugin for hex-rays decompiler.
This function must be called before calling any other decompiler function. It initializes the pointer to the dispatcher.
| flags | reserved, must be 0 |
Definition at line 3311 of file hexrays.hpp.
References hexdsp.
| bool install_hexrays_callback | ( | hexrays_cb_t * | callback, | |
| void * | ud | |||
| ) |
Install handler for decompiler events.
| callback | handler to install | |
| ud | user data. this pointer will be passed to your handler by the decompiler. |
Definition at line 4840 of file hexrays.hpp.
References hexdsp.
Logically negate the specified expression.
The specified expression will be logically negated. For example, "x == y" is converted into "x != y" by this function.
| e | expression to negate. After the call, e must not be used anymore because it can be changed by the function. The function return value must be used to refer to the expression. |
Definition at line 4588 of file hexrays.hpp.
References hexdsp.
| cexpr_t * make_num | ( | uint64 | n, | |
| int | opnum = 0, |
|||
| type_sign_t | sign = no_sign | |||
| ) |
Create a number expression.
| n | value | |
| sign | number sign |
Definition at line 4612 of file hexrays.hpp.
References hexdsp.
Create a reference.
This function performs the following conversion: "obj" => "&obj". It can handle casts, annihilate "&*", and process other special cases.
Definition at line 4618 of file hexrays.hpp.
References hexdsp.
| const char * micro_err_format | ( | int | code | ) |
Get textual description of an error code.
| code | Microcode error codes |
Definition at line 4212 of file hexrays.hpp.
References hexdsp.
| vdui_t * open_pseudocode | ( | ea_t | ea, | |
| int | new_window | |||
| ) |
Open pseudocode window.
The specified function is decompiled and the pseudocode window is opened.
| ea | function to decompile | |
| new_window | 0:reuse existing window; 1:open new window; -1: reuse existing window if the current view is pseudocode |
Definition at line 4188 of file hexrays.hpp.
References hexdsp.
| int remove_hexrays_callback | ( | hexrays_cb_t * | callback, | |
| void * | ud | |||
| ) |
Uninstall handler for decompiler events.
| callback | handler to uninstall | |
| ud | user data. if NULL, all handler corresponding to callback is uninstalled. if not NULL, only the callback instance with the specified ud value is uninstalled. |
Definition at line 4846 of file hexrays.hpp.
References hexdsp.
| user_cmts_t * restore_user_cmts | ( | ea_t | func_ea | ) |
Restore user defined comments from the database.
| func_ea | the entry address of the function |
Definition at line 4666 of file hexrays.hpp.
References hexdsp.
| user_iflags_t * restore_user_iflags | ( | ea_t | func_ea | ) |
Restore user defined citem iflags from the database.
| func_ea | the entry address of the function |
Definition at line 4678 of file hexrays.hpp.
References hexdsp.
| user_labels_t * restore_user_labels | ( | ea_t | func_ea | ) |
Restore user defined labels from the database.
| func_ea | the entry address of the function |
Definition at line 4660 of file hexrays.hpp.
References hexdsp.
| int restore_user_lvar_settings | ( | ea_t | func_ea, | |
| user_lvar_visitor_t & | ulv | |||
| ) |
Restore user defined local variable settings in the database.
| func_ea | entry address of the function | |
| ulv | helper visitor class for lvar settings |
Definition at line 4164 of file hexrays.hpp.
References hexdsp.
| user_numforms_t * restore_user_numforms | ( | ea_t | func_ea | ) |
Restore user defined number formats from the database.
| func_ea | the entry address of the function |
Definition at line 4672 of file hexrays.hpp.
References hexdsp.
| user_unions_t * restore_user_unions | ( | ea_t | func_ea | ) |
Restore user defined union field selections from the database.
| func_ea | the entry address of the function |
Definition at line 4684 of file hexrays.hpp.
References hexdsp.
| void save_user_cmts | ( | ea_t | func_ea, | |
| const user_cmts_t * | user_cmts | |||
| ) |
Save user defined comments into the database.
| func_ea | the entry address of the function | |
| user_cmts | collection of user defined comments |
Definition at line 4636 of file hexrays.hpp.
References hexdsp.
Referenced by cfunc_t::save_user_cmts().
| void save_user_iflags | ( | ea_t | func_ea, | |
| const user_iflags_t * | iflags | |||
| ) |
Save user defined citem iflags into the database.
| func_ea | the entry address of the function | |
| iflags | collection of user defined citem iflags |
Definition at line 4648 of file hexrays.hpp.
References hexdsp.
Referenced by cfunc_t::save_user_iflags().
| void save_user_labels | ( | ea_t | func_ea, | |
| const user_labels_t * | user_labels | |||
| ) |
Save user defined labels into the database.
| func_ea | the entry address of the function | |
| user_labels | collection of user defined labels |
Definition at line 4630 of file hexrays.hpp.
References hexdsp.
Referenced by cfunc_t::save_user_labels().
| void save_user_lvar_settings | ( | ea_t | func_ea, | |
| user_lvar_visitor_t & | ulv | |||
| ) |
Save user defined local variable settings into the database.
| func_ea | entry address of the function | |
| uvl | user lvar setting enumerator. get_user_lvar_qty() and get_next_user_lvar() will be used to enumerate user settings. |
Definition at line 4170 of file hexrays.hpp.
References hexdsp.
| void save_user_numforms | ( | ea_t | func_ea, | |
| const user_numforms_t * | numforms | |||
| ) |
Save user defined number formats into the database.
| func_ea | the entry address of the function | |
| numforms | collection of user defined comments |
Definition at line 4642 of file hexrays.hpp.
References hexdsp.
Referenced by cfunc_t::save_user_numforms().
| void save_user_unions | ( | ea_t | func_ea, | |
| const user_unions_t * | unions | |||
| ) |
Save user defined union field selections into the database.
| func_ea | the entry address of the function | |
| unions | collection of union field selections |
Definition at line 4654 of file hexrays.hpp.
References hexdsp.
Referenced by cfunc_t::save_user_unions().
| void send_database | ( | const hexrays_failure_t & | err, | |
| bool | silent | |||
| ) |
Send the database to Hex-Rays.
This function sends the current database to the hex-rays server. The database is sent in the compressed form over an encrypted (SSL) connection.
| err | failure description object. Empty hexrays_failure_t object can be used if error information is not available. | |
| silent | if false, a dialog box will be displayed before sending the database. |
Definition at line 4226 of file hexrays.hpp.
References hexdsp.
| void term_hexrays_plugin | ( | void | ) |
Terminate your plugin for hex-rays decompiler.
Currently this function is empty but please do include it in your plugins.
Definition at line 3319 of file hexrays.hpp.
Pointer to Hex-Rays decompiler dispatcher.
This variable must be instantiated by the plugin. It is initialized by init_hexrays_plugin().
Referenced by lvar_t::accepts_type(), ctree_visitor_t::apply_to(), ctree_visitor_t::apply_to_exprs(), arglocs_overlap(), asgop(), asgop_revert(), cnumber_t::assign(), cfunc_t::build_c_tree(), vdui_t::calc_cmt_type(), cfunc_parentee_t::calc_rvalue_type(), cexpr_t::calc_type(), cinsn_t::cleanup(), cexpr_t::cleanup(), vdui_t::clear(), close_pseudocode(), cnv_array_to_ptr(), vdui_t::collapse_item(), cinsn_t::collect_free_breaks(), cinsn_t::collect_free_continues(), cinsn_t::contains_insn(), citem_t::contains_label(), cexpr_t::contains_operator(), cinsn_t::create_if(), create_typedef(), vdui_t::ctree_to_disasm(), decompile(), decompile_many(), vdui_t::del_orphan_cmts(), cfunc_t::del_orphan_cmts(), dereference(), dummy_ptrtype(), vdui_t::edit_cmt(), vdui_t::edit_func_cmt(), cexpr_t::equal_effect(), lvars_t::find(), cfunc_t::find_label(), lvars_t::find_lvar(), citem_t::find_parent_of(), lvars_t::find_stkvar(), vdui_t::get_current_item(), ctree_item_t::get_ea(), get_float_bit(), cfunc_t::get_func_type(), get_hexrays_version(), get_int_type_by_width_and_sign(), ctree_item_t::get_label_num(), cfunc_t::get_line_item(), ctree_item_t::get_lvar(), cfunc_t::get_lvars(), get_member_type(), ctree_item_t::get_memptr(), cexpr_t::get_nbits(), vdui_t::get_number(), get_op_signness(), lvar_locator_t::get_regnum(), get_unk_type(), cfunc_t::get_user_cmt(), cfunc_t::get_user_iflags(), cfunc_t::get_user_union_selection(), cfunc_t::get_warnings(), cfunc_t::has_orphan_cmts(), cexpr_t::has_side_effects(), init_hexrays_plugin(), install_hexrays_callback(), vdui_t::invert_sign(), cexpr_t::is_child_of(), cinsn_t::is_ordinary_flow(), is_type_correct(), is_type_integral(), is_type_small_struni(), vdui_t::jump_enter(), lnot(), lvar_mapping_begin(), lvar_mapping_clear(), lvar_mapping_end(), lvar_mapping_erase(), lvar_mapping_find(), lvar_mapping_first(), lvar_mapping_free(), lvar_mapping_insert(), lvar_mapping_next(), lvar_mapping_prev(), lvar_mapping_second(), lvar_mapping_size(), make_array(), make_num(), make_pointer(), make_ref(), vdui_t::map_lvar(), micro_err_format(), negated_relation(), new_block(), cinsn_t::new_insn(), open_pseudocode(), partial_type_num(), vdui_t::pop_current_location(), cinsn_t::print(), cnumber_t::print(), cinsn_t::print1(), cexpr_t::print1(), cfunc_t::print_dcl(), cfunc_t::print_func(), vdui_t::push_current_location(), cexpr_t::put_number(), ctree_parentee_t::recalc_parent_types(), vdui_t::refresh_cpos(), vdui_t::refresh_ctext(), vdui_t::refresh_view(), remove_hexrays_callback(), remove_pointer(), remove_typedef(), cfunc_t::remove_unused_labels(), vdui_t::rename_global(), vdui_t::rename_label(), vdui_t::rename_lvar(), vdui_t::rename_strmem(), cinsn_t::replace_by(), cexpr_t::replace_by(), cexpr_t::requires_lvalue(), restore_user_cmts(), restore_user_iflags(), restore_user_labels(), restore_user_lvar_settings(), restore_user_numforms(), restore_user_unions(), save_user_cmts(), save_user_iflags(), save_user_labels(), save_user_lvar_settings(), save_user_numforms(), save_user_unions(), send_database(), vdui_t::set_global_type(), vdui_t::set_lvar_cmt(), vdui_t::set_lvar_type(), lvar_t::set_lvar_type(), vdui_t::set_num_enum(), vdui_t::set_num_radix(), vdui_t::set_num_stroff(), vdui_t::set_strmem_type(), cfunc_t::set_user_cmt(), cfunc_t::set_user_iflags(), cfunc_t::set_user_union_selection(), vdui_t::set_vargloc_end(), lvar_t::set_width(), vdui_t::split_item(), vdui_t::switch_to(), vdui_t::ui_edit_lvar_cmt(), vdui_t::ui_map_lvar(), vdui_t::ui_rename_lvar(), vdui_t::ui_set_lvar_type(), vdui_t::ui_unmap_lvar(), user_cmts_begin(), user_cmts_clear(), user_cmts_end(), user_cmts_erase(), user_cmts_find(), user_cmts_first(), user_cmts_free(), user_cmts_insert(), user_cmts_next(), user_cmts_prev(), user_cmts_second(), user_cmts_size(), user_iflags_begin(), user_iflags_clear(), user_iflags_end(), user_iflags_erase(), user_iflags_find(), user_iflags_first(), user_iflags_free(), user_iflags_insert(), user_iflags_next(), user_iflags_prev(), user_iflags_second(), user_iflags_size(), user_labels_begin(), user_labels_clear(), user_labels_end(), user_labels_erase(), user_labels_find(), user_labels_first(), user_labels_free(), user_labels_insert(), user_labels_next(), user_labels_prev(), user_labels_second(), user_labels_size(), user_numforms_begin(), user_numforms_clear(), user_numforms_end(), user_numforms_erase(), user_numforms_find(), user_numforms_first(), user_numforms_free(), user_numforms_insert(), user_numforms_next(), user_numforms_prev(), user_numforms_second(), user_numforms_size(), user_unions_begin(), user_unions_clear(), user_unions_end(), user_unions_erase(), user_unions_find(), user_unions_first(), user_unions_free(), user_unions_insert(), user_unions_next(), user_unions_prev(), user_unions_second(), user_unions_size(), cnumber_t::value(), and cfunc_t::verify().