|
| __init__ (self) |
| init(self, _flags=0, _hkcb_flags=0x0001) -> IDP_Hooks
|
|
| get_idpdesc (self) |
| This function must be present and should return the list of short processor names similar to the one in ph.psnames.
|
|
| get_uFlag (self) |
| Use this utility function to retrieve the 'uFlag' global variable.
|
|
| get_auxpref (self, insn) |
| This function returns insn.auxpref value.
|
|
| ev_newprc (self, *args) |
| ev_newprc(self, pnum, keep_cfg) -> int Before changing processor type.
|
|
| ev_newfile (self, *args) |
| ev_newfile(self, fname) -> int A new file has been loaded.
|
|
| ev_oldfile (self, *args) |
| ev_oldfile(self, fname) -> int An old file has been loaded.
|
|
| ev_newbinary (self, *args) |
| ev_newbinary(self, filename, fileoff, basepara, binoff, nbytes) -> int IDA is about to load a binary file.
|
|
| ev_endbinary (self, *args) |
| ev_endbinary(self, ok) -> int IDA has loaded a binary file.
|
|
| ev_set_idp_options (self, keyword, value_type, value, idb_loaded) |
| ev_set_idp_options(self, keyword, value_type, value, idb_loaded) -> int Set IDP-specific configuration option Also see set_options_t in config.hpp
|
|
| ev_set_proc_options (self, *args) |
| ev_set_proc_options(self, options, confidence) -> int Called if the user specified an option string in the command line: -p<processor
name>:<options>.
|
|
| ev_ana_insn (self, *args) |
| ev_ana_insn(self, out) -> bool Analyze one instruction and fill 'out' structure.
|
|
| ev_emu_insn (self, *args) |
| ev_emu_insn(self, insn) -> bool Emulate instruction, create cross-references, plan to analyze subsequent instructions, modify flags etc.
|
|
| ev_out_header (self, *args) |
| ev_out_header(self, outctx) -> int Function to produce start of disassembled text
|
|
| ev_out_footer (self, *args) |
| ev_out_footer(self, outctx) -> int Function to produce end of disassembled text
|
|
| ev_out_segstart (self, ctx, s) |
| ev_out_segstart(self, outctx, seg) -> int Function to produce start of segment
|
|
| ev_out_segend (self, ctx, s) |
| ev_out_segend(self, outctx, seg) -> int Function to produce end of segment
|
|
| ev_out_assumes (self, *args) |
| ev_out_assumes(self, outctx) -> int Function to produce assume directives when segment register value changes.
|
|
| ev_out_insn (self, *args) |
| ev_out_insn(self, outctx) -> bool Generate text representation of an instruction in 'ctx.insn' outctx_t provides functions to output the generated text.
|
|
| ev_out_mnem (self, *args) |
| ev_out_mnem(self, outctx) -> int Generate instruction mnemonics.
|
|
| ev_out_operand (self, *args) |
| ev_out_operand(self, outctx, op) -> bool Generate text representation of an instruction operand outctx_t provides functions to output the generated text.
|
|
| ev_out_data (self, *args) |
| ev_out_data(self, outctx, analyze_only) -> int Generate text representation of data items This function may change the database and create cross-references if analyze_only is set
|
|
| ev_out_label (self, *args) |
| ev_out_label(self, outctx, colored_name) -> int The kernel is going to generate an instruction label line or a function header.
|
|
| ev_out_special_item (self, *args) |
| ev_out_special_item(self, outctx, segtype) -> int Generate text representation of an item in a special segment i.e.
|
|
| ev_gen_regvar_def (self, ctx, v) |
| ev_gen_regvar_def(self, outctx, v) -> int Generate register variable definition line.
|
|
| ev_gen_src_file_lnnum (self, *args) |
| ev_gen_src_file_lnnum(self, outctx, file, lnnum) -> int
|
|
| ev_creating_segm (self, s) |
| ev_creating_segm(self, seg) -> int A new segment is about to be created.
|
|
| ev_moving_segm (self, s, to_ea, flags) |
| ev_moving_segm(self, seg, to, flags) -> int May the kernel move the segment?
|
|
| ev_coagulate (self, *args) |
| ev_coagulate(self, start_ea) -> int Try to define some unexplored bytes.
|
|
| ev_undefine (self, *args) |
| ev_undefine(self, ea) -> int An item in the database (insn or data) is being deleted.
|
|
| ev_treat_hindering_item (self, *args) |
| ev_treat_hindering_item(self, hindering_item_ea, new_item_flags, new_item_ea, new_item_length) -> int An item hinders creation of another item.
|
|
| ev_rename (self, *args) |
| ev_rename(self, ea, new_name) -> int The kernel is going to rename a byte.
|
|
| ev_is_far_jump (self, *args) |
| ev_is_far_jump(self, icode) -> int is indirect far jump or call instruction? meaningful only if the processor has 'near' and 'far' reference types
|
|
| ev_is_sane_insn (self, *args) |
| ev_is_sane_insn(self, insn, no_crefs) -> int Is the instruction sane for the current file type?.
|
|
| ev_is_call_insn (self, *args) |
| ev_is_call_insn(self, insn) -> int Is the instruction a "call"?
|
|
| ev_is_ret_insn (self, *args) |
| ev_is_ret_insn(self, insn, strict) -> int Is the instruction a "return"?
|
|
| ev_may_be_func (self, *args) |
| ev_may_be_func(self, insn, state) -> int Can a function start here?
|
|
| ev_is_basic_block_end (self, *args) |
| ev_is_basic_block_end(self, insn, call_insn_stops_block) -> int Is the current instruction end of a basic block?.
|
|
| ev_is_indirect_jump (self, *args) |
| ev_is_indirect_jump(self, insn) -> int Determine if instruction is an indirect jump.
|
|
| ev_is_insn_table_jump (self, *args) |
| ev_is_insn_table_jump(self) -> int Reserved.
|
|
| ev_is_switch (self, *args) |
| ev_is_switch(self, si, insn) -> int Find 'switch' idiom or override processor module's decision.
|
|
| ev_create_switch_xrefs (self, *args) |
| ev_create_switch_xrefs(self, jumpea, si) -> int Create xrefs for a custom jump table.
|
|
| ev_is_align_insn (self, *args) |
| ev_is_align_insn(self, ea) -> int Is the instruction created only for alignment purposes?.
|
|
| ev_is_alloca_probe (self, *args) |
| ev_is_alloca_probe(self, ea) -> int Does the function at 'ea' behave as __alloca_probe?
|
|
| ev_is_sp_based (self, mode, insn, op) |
| ev_is_sp_based(self, mode, insn, op) -> int Check whether the operand is relative to stack pointer or frame pointer This event is used to determine how to output a stack variable If not implemented, then all operands are sp based by default.
|
|
| ev_can_have_type (self, *args) |
| ev_can_have_type(self, op) -> int Can the operand have a type as offset, segment, decimal, etc? (for example, a register AX can't have a type, meaning that the user can't change its representation.
|
|
| ev_cmp_operands (self, *args) |
| ev_cmp_operands(self, op1, op2) -> int Compare instruction operands
|
|
| ev_get_operand_string (self, buf, insn, opnum) |
| ev_get_operand_string(self, insn, opnum) -> PyObject * Request text string for operand (cli, java, ...).
|
|
| ev_str2reg (self, *args) |
| ev_str2reg(self, regname) -> int Convert a register name to a register number.
|
|
| ev_get_autocmt (self, *args) |
| ev_get_autocmt(self, insn) -> PyObject *
|
|
| ev_func_bounds (self, _possible_return_code, pfn, max_func_end_ea) |
| ev_func_bounds(self, possible_return_code, pfn, max_func_end_ea) -> int find_func_bounds() finished its work.
|
|
| ev_verify_sp (self, pfn) |
| ev_verify_sp(self, pfn) -> int All function instructions have been analyzed.
|
|
| ev_verify_noreturn (self, pfn) |
| ev_verify_noreturn(self, pfn) -> int The kernel wants to set 'noreturn' flags for a function.
|
|
| ev_create_func_frame (self, pfn) |
| ev_create_func_frame(self, pfn) -> int Create a function frame for a newly created function Set up frame size, its attributes etc
|
|
| ev_get_frame_retsize (self, frsize, pfn) |
| ev_get_frame_retsize(self, frsize, pfn) -> int Get size of function return address in bytes If this event is not implemented, the kernel will assume
|
|
| ev_coagulate_dref (self, from_ea, to_ea, may_define, _code_ea) |
| ev_coagulate_dref(self, _from, to, may_define, code_ea) -> int Data reference is being analyzed.
|
|
| ev_may_show_sreg (self, *args) |
| ev_may_show_sreg(self, current_ea) -> int The kernel wants to display the segment registers in the messages window.
|
|
| ev_auto_queue_empty (self, *args) |
| ev_auto_queue_empty(self, type) -> int One analysis queue is empty.
|
|
| ev_validate_flirt_func (self, *args) |
| ev_validate_flirt_func(self, start_ea, funcname) -> int Flirt has recognized a library function.
|
|
| ev_assemble (self, *args) |
| ev_assemble(self, ea, cs, ip, use32, line) -> PyObject * Assemble an instruction.
|
|
| ev_gen_map_file (self, nlines, fp) |
| ev_gen_map_file(self, nlines, fp) -> int Generate map file.
|
|
| ev_calc_step_over (self, target, ip) |
| ev_calc_step_over(self, target, ip) -> int Calculate the address of the instruction which will be executed after "step
over".
|
|
| closebase (self, *args) |
|
| savebase (self, *args) |
|
| auto_empty (self, *args) |
|
| auto_empty_finally (self, *args) |
|
| determined_main (self, *args) |
|
| idasgn_loaded (self, *args) |
|
| kernel_config_loaded (self, *args) |
|
| compiler_changed (self, *args) |
|
| segm_moved (self, from_ea, to_ea, size, changed_netmap) |
|
| func_added (self, pfn) |
|
| set_func_start (self, *args) |
|
| set_func_end (self, *args) |
|
| deleting_func (self, pfn) |
|
| sgr_changed (self, *args) |
|
| make_code (self, *args) |
|
| make_data (self, *args) |
|
| renamed (self, *args) |
|
"bool" | hook (self, *args) |
| hook(self) -> bool
|
|
"bool" | unhook (self, *args) |
| unhook(self) -> bool
|
|
"int" | ev_init (self, *args) |
| ev_init(self, idp_modname) -> int The IDP module is just loaded.
|
|
"int" | ev_term (self, *args) |
| ev_term(self) -> int The IDP module is being unloaded.
|
|
"int" | ev_newasm (self, *args) |
| ev_newasm(self, asmnum) -> int Before setting a new assembler.
|
|
"int" | ev_gen_stkvar_def (self, *args) |
| ev_gen_stkvar_def(self, outctx, mptr, v) -> int Generate stack variable definition line Default line is varname = type ptr value, where 'type' is one of byte,word,dword,qword,tbyte
|
|
"int" | ev_is_cond_insn (self, *args) |
| ev_is_cond_insn(self, insn) -> int Is conditional instruction?
|
|
"int" | ev_calc_switch_cases (self, *args) |
| ev_calc_switch_cases(self, casevec, targets, insn_ea, si) -> int Calculate case values and targets for a custom jump table.
|
|
"PyObject *" | ev_delay_slot_insn (self, *args) |
| ev_delay_slot_insn(self, ea, bexec, fexec) -> PyObject * Get delay slot instruction
|
|
"int" | ev_adjust_refinfo (self, *args) |
| ev_adjust_refinfo(self, ri, ea, n, fd) -> int Called from apply_fixup before converting operand to reference.
|
|
"PyObject *" | ev_get_reg_name (self, *args) |
| ev_get_reg_name(self, reg, width, reghi) -> PyObject * Generate text representation of a register.
|
|
"int" | ev_get_bg_color (self, *args) |
| ev_get_bg_color(self, color, ea) -> int Get item background color.
|
|
"int" | ev_is_jump_func (self, *args) |
| ev_is_jump_func(self, pfn, jump_target, func_pointer) -> int Is the function a trivial "jump" function?.
|
|
"int" | ev_get_stkvar_scale_factor (self, *args) |
| ev_get_stkvar_scale_factor(self) -> int Should stack variable references be multiplied by a coefficient before being used in the stack frame?.
|
|
"PyObject *" | ev_demangle_name (self, *args) |
| ev_demangle_name(self, name, disable_mask, demreq) -> PyObject * Demangle a C++ (or another language) name into a user-readable string.
|
|
"int" | ev_add_cref (self, *args) |
| ev_add_cref(self, _from, to, type) -> int A code reference is being created.
|
|
"int" | ev_add_dref (self, *args) |
| ev_add_dref(self, _from, to, type) -> int A data reference is being created.
|
|
"int" | ev_del_cref (self, *args) |
| ev_del_cref(self, _from, to, expand) -> int A code reference is being deleted.
|
|
"int" | ev_del_dref (self, *args) |
| ev_del_dref(self, _from, to) -> int A data reference is being deleted.
|
|
"int" | ev_adjust_libfunc_ea (self, *args) |
| ev_adjust_libfunc_ea(self, sig, libfun, ea) -> int Called when a signature module has been matched against bytes in the database.
|
|
"int" | ev_extract_address (self, *args) |
| ev_extract_address(self, out_ea, screen_ea, string, position) -> int Extract address from a string.
|
|
"int" | ev_realcvt (self, *args) |
| ev_realcvt(self, m, e, swt) -> int Floating point -> IEEE conversion
|
|
"int" | ev_gen_asm_or_lst (self, *args) |
| ev_gen_asm_or_lst(self, starting, fp, is_asm, flags, outline) -> int
|
|
"int" | ev_create_flat_group (self, *args) |
| ev_create_flat_group(self, image_base, bitness, dataseg_sel) -> int Create special segment representing the flat group.
|
|
"int" | ev_getreg (self, *args) |
| ev_getreg(self, regval, regnum) -> int IBM PC only internal request, should never be used for other purpose Get register value by internal index
|
|
"int" | ev_analyze_prolog (self, *args) |
| ev_analyze_prolog(self, ea) -> int Analyzes function prolog, epilog, and updates purge, and function attributes
|
|
"int" | ev_calc_spdelta (self, *args) |
| ev_calc_spdelta(self, spdelta, insn) -> int Calculate amount of change to sp for the given insn.
|
|
"int" | ev_calcrel (self, *args) |
| ev_calcrel(self) -> int Reserved.
|
|
"PyObject *" | ev_find_reg_value (self, *args) |
| ev_find_reg_value(self, pinsn, reg) -> PyObject * Find register value via a register tracker.
|
|
"PyObject *" | ev_find_op_value (self, *args) |
| ev_find_op_value(self, pinsn, opn) -> PyObject * Find operand value via a register tracker.
|
|
"int" | ev_replaying_undo (self, *args) |
| ev_replaying_undo(self, action_name, vec, is_undo) -> int Replaying an undo/redo buffer
|
|
"int" | ev_ending_undo (self, *args) |
| ev_ending_undo(self, action_name, is_undo) -> int Ended undoing/redoing an action
|
|
"int" | ev_set_code16_mode (self, *args) |
| ev_set_code16_mode(self, ea, code16) -> int Some processors have ISA 16-bit mode e.g.
|
|
"int" | ev_get_code16_mode (self, *args) |
| ev_get_code16_mode(self, ea) -> int Get ISA 16-bit mode
|
|
"int" | ev_get_procmod (self, *args) |
| ev_get_procmod(self) -> int Get pointer to the processor module object.
|
|
"int" | ev_asm_installed (self, *args) |
| ev_asm_installed(self, asmnum) -> int After setting a new assembler
|
|
"int" | ev_get_reg_accesses (self, *args) |
| ev_get_reg_accesses(self, accvec, insn, flags) -> int Get info about the registers that are used/changed by an instruction.
|
|
"int" | ev_is_control_flow_guard (self, *args) |
| ev_is_control_flow_guard(self, p_reg, insn) -> int Detect if an instruction is a "thunk call" to a flow guard function (equivalent to call reg/return/nop)
|
|
"int" | ev_create_merge_handlers (self, *args) |
| ev_create_merge_handlers(self, md) -> int Create merge handlers, if needed
|
|
"int" | ev_privrange_changed (self, *args) |
| ev_privrange_changed(self, old_privrange, delta) -> int Privrange interval has been moved to a new location.
|
|
"int" | ev_cvt64_supval (self, *args) |
| ev_cvt64_supval(self, node, tag, idx, data) -> int perform 32-64 conversion for a netnode array element
|
|
"int" | ev_cvt64_hashval (self, *args) |
| ev_cvt64_hashval(self, node, tag, name, data) -> int perform 32-64 conversion for a hash value
|
|
"int" | ev_next_exec_insn (self, *args) |
| ev_next_exec_insn(self, target, ea, tid, getreg, regvalues) -> int Get next address to be executed This function must return the next address to be executed.
|
|
"int" | ev_calc_next_eas (self, *args) |
| ev_calc_next_eas(self, res, insn, over) -> int Calculate list of addresses the instruction in 'insn' may pass control to.
|
|
"int" | ev_get_macro_insn_head (self, *args) |
| ev_get_macro_insn_head(self, head, ip) -> int Calculate the start of a macro instruction.
|
|
"int" | ev_get_dbr_opnum (self, *args) |
| ev_get_dbr_opnum(self, opnum, insn) -> int Get the number of the operand to be displayed in the debugger reference view (text mode).
|
|
"int" | ev_insn_reads_tbit (self, *args) |
| ev_insn_reads_tbit(self, insn, getreg, regvalues) -> int Check if insn will read the TF bit.
|
|
"int" | ev_clean_tbit (self, *args) |
| ev_clean_tbit(self, ea, getreg, regvalues) -> int Clear the TF bit after an insn like pushf stored it in memory.
|
|
"int" | ev_get_reg_info (self, *args) |
| ev_get_reg_info(self, main_regname, bitrange, regname) -> int Get register information by its name.
|
|
"int" | ev_update_call_stack (self, *args) |
| ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int Calculate the call stack trace for the given thread.
|
|
"int" | ev_setup_til (self, *args) |
| ev_setup_til(self) -> int Setup default type libraries.
|
|
"int" | ev_get_abi_info (self, *args) |
| ev_get_abi_info(self, abi_names, abi_opts, comp) -> int Get all possible ABI names and optional extensions for given compiler abiname/option is a string entirely consisting of letters, digits and underscore
|
|
"int" | ev_max_ptr_size (self, *args) |
| ev_max_ptr_size(self) -> int Get maximal size of a pointer in bytes.
|
|
"int" | ev_get_default_enum_size (self, *args) |
| ev_get_default_enum_size(self) -> int Get default enum size.
|
|
"int" | ev_get_cc_regs (self, *args) |
| ev_get_cc_regs(self, regs, cc) -> int Get register allocation convention for given calling convention
|
|
"int" | ev_get_simd_types (self, *args) |
| ev_get_simd_types(self, out, simd_attrs, argloc, create_tifs) -> int Get SIMD-related types according to given attributes ant/or argument location
|
|
"int" | ev_calc_cdecl_purged_bytes (self, *args) |
| ev_calc_cdecl_purged_bytes(self, ea) -> int Calculate number of purged bytes after call.
|
|
"int" | ev_calc_purged_bytes (self, *args) |
| ev_calc_purged_bytes(self, p_purged_bytes, fti) -> int Calculate number of purged bytes by the given function type.
|
|
"int" | ev_calc_retloc (self, *args) |
| ev_calc_retloc(self, retloc, rettype, cc) -> int Calculate return value location.
|
|
"int" | ev_calc_arglocs (self, *args) |
| ev_calc_arglocs(self, fti) -> int Calculate function argument locations.
|
|
"int" | ev_calc_varglocs (self, *args) |
| ev_calc_varglocs(self, ftd, aux_regs, aux_stkargs, nfixed) -> int Calculate locations of the arguments that correspond to '...'.
|
|
"int" | ev_adjust_argloc (self, *args) |
| ev_adjust_argloc(self, argloc, optional_type, size) -> int Adjust argloc according to its type/size and platform endianess
|
|
"int" | ev_lower_func_type (self, *args) |
| ev_lower_func_type(self, argnums, fti) -> int Get function arguments which should be converted to pointers when lowering function prototype.
|
|
"int" | ev_equal_reglocs (self, *args) |
| ev_equal_reglocs(self, a1, a2) -> int Are 2 register arglocs the same?.
|
|
"int" | ev_use_stkarg_type (self, *args) |
| ev_use_stkarg_type(self, ea, arg) -> int Use information about a stack argument.
|
|
"PyObject *" | ev_use_regarg_type (self, *args) |
| ev_use_regarg_type(self, ea, rargs) -> PyObject * Use information about register argument.
|
|
"int" | ev_use_arg_types (self, *args) |
| ev_use_arg_types(self, ea, fti, rargs) -> int Use information about callee arguments.
|
|
"int" | ev_arg_addrs_ready (self, *args) |
| ev_arg_addrs_ready(self, caller, n, tif, addrs) -> int Argument address info is ready.
|
|
"PyObject *" | ev_decorate_name (self, *args) |
| ev_decorate_name(self, name, mangle, cc, optional_type) -> PyObject * Decorate/undecorate a C symbol name.
|
|
"int" | ev_arch_changed (self, *args) |
| ev_arch_changed(self) -> int The loader is done parsing arch-related information, which the processor module might want to use to finish its initialization.
|
|
"int" | ev_get_stkarg_area_info (self, *args) |
| ev_get_stkarg_area_info(self, out, cc) -> int Get some metrics of the stack argument area.
|
|
"int" | ev_last_cb_before_loader (self, *args) |
| ev_last_cb_before_loader(self) -> int
|
|
"int" | ev_loader (self, *args) |
| ev_loader(self) -> int This code and higher ones are reserved for the loaders.
|
|
| __disown__ (self) |
|