diff --git a/HOWTO.md b/HOWTO.md index a47812d..6aee545 100644 --- a/HOWTO.md +++ b/HOWTO.md @@ -7,9 +7,9 @@ to the C++ SDK which will then be reflected in IDAPython, an *immensely* useful rule-of-thumb is to perform a diff of the autogenerated SWiG wrappers. Typically: -`cp -R obj/x64_linux_gcc_32/wrappers/ /tmp/wrappers-before` +`cp -R obj/x64_linux_gcc_32/3/wrappers/ /tmp/wrappers-before` -`git diff /tmp/wrappers-before/ obj/x64_linux_gcc_32/wrappers/` +`git diff /tmp/wrappers-before/ obj/x64_linux_gcc_32/3/wrappers/` It is always useful to make sure that SWiG did the right thing -- *especially* when modifying typemaps, but not only. @@ -28,17 +28,19 @@ We use the "zzz" placeholder for a module name in this "how-to". 2. add zzz to the `MODULES_NAMES` var in makefile -3. add a line to python/idc.py if you want to autoload this module +3. add zzz to `SDK_FILES` var in etc/sdk/sdk_files.mak + +4. add a line to python/idc.py if you want to autoload this module ``` import ida_zzz ``` -4. build +5. build -5. update the content of api_contents.txt +6. update the content of api_contents.txt (from obj/.../api_contents.txt.new) -6. rebuild +7. rebuild -7. update the content of pydoc_injections.txt +8. update the content of pydoc_injections.txt (from obj/.../pydoc_injections.txt) diff --git a/Scripts/CallStackWalk.py b/Scripts/CallStackWalk.py index 529ed9a..0ae30ac 100644 --- a/Scripts/CallStackWalk.py +++ b/Scripts/CallStackWalk.py @@ -4,7 +4,7 @@ A script that tries to determine the call stack Run the application with the debugger, suspend the debugger, select a thread and finally run the script. -Copyright (c) 1990-2020 Hex-Rays +Copyright (c) 1990-2021 Hex-Rays ALL RIGHTS RESERVED. """ import ida_ua diff --git a/Scripts/DrvsDispatch.py b/Scripts/DrvsDispatch.py index 7b72c51..30be318 100644 --- a/Scripts/DrvsDispatch.py +++ b/Scripts/DrvsDispatch.py @@ -2,7 +2,7 @@ A script to demonstrate how to send commands to the debugger and then parse and use the output in IDA -Copyright (c) 1990-2020 Hex-Rays +Copyright (c) 1990-2021 Hex-Rays ALL RIGHTS RESERVED. """ diff --git a/Scripts/ExchainDump.py b/Scripts/ExchainDump.py index cf63ca6..85fccb0 100644 --- a/Scripts/ExchainDump.py +++ b/Scripts/ExchainDump.py @@ -2,7 +2,7 @@ This script shows how to send debugger commands and use the result in IDA -Copyright (c) 1990-2020 Hex-Rays +Copyright (c) 1990-2021 Hex-Rays ALL RIGHTS RESERVED. """ diff --git a/Scripts/FindInstructions.py b/Scripts/FindInstructions.py index 8f78588..bdd6a31 100644 --- a/Scripts/FindInstructions.py +++ b/Scripts/FindInstructions.py @@ -13,7 +13,7 @@ The general syntax is: * To specify in which context the instructions should be assembled, pass asm_where=ea: find("jmp dword ptr [esp]", asm_where=here()) -Copyright (c) 1990-2020 Hex-Rays +Copyright (c) 1990-2021 Hex-Rays ALL RIGHTS RESERVED. """ from __future__ import print_function diff --git a/Scripts/SEHGraph.py b/Scripts/SEHGraph.py index 71d636f..f31363f 100644 --- a/Scripts/SEHGraph.py +++ b/Scripts/SEHGraph.py @@ -4,7 +4,7 @@ A script that graphs all the exception handlers in a given process It will be easy to see what thread uses what handler and what handlers are commonly used between threads -Copyright (c) 1990-2020 Hex-Rays +Copyright (c) 1990-2021 Hex-Rays ALL RIGHTS RESERVED. """ from __future__ import print_function diff --git a/Scripts/VaDump.py b/Scripts/VaDump.py index c8ad129..aab3436 100644 --- a/Scripts/VaDump.py +++ b/Scripts/VaDump.py @@ -2,7 +2,7 @@ This script shows how to send debugger commands and use the result in IDA -Copyright (c) 1990-2020 Hex-Rays +Copyright (c) 1990-2021 Hex-Rays ALL RIGHTS RESERVED. """ diff --git a/Scripts/VirusTotal.py b/Scripts/VirusTotal.py index 1bc8c5f..b7c6425 100644 --- a/Scripts/VirusTotal.py +++ b/Scripts/VirusTotal.py @@ -2,7 +2,7 @@ from __future__ import print_function # ----------------------------------------------------------------------- # VirusTotal IDA Plugin # By Elias Bachaalany -# (c) Hex-Rays 2011-2020 +# (c) Hex-Rays 2011-2021 # # Special thanks: # - VirusTotal team diff --git a/api_contents2.txt b/api_contents2.txt index 27046d9..2e6adb6 100644 --- a/api_contents2.txt +++ b/api_contents2.txt @@ -22,6 +22,7 @@ 'DBG_Hooks_dbg_trace', 'DBG_Hooks_hook', 'DBG_Hooks_unhook', + 'Hexrays_Hooks_build_callinfo', 'Hexrays_Hooks_close_pseudocode', 'Hexrays_Hooks_cmt_changed', 'Hexrays_Hooks_combine', @@ -95,6 +96,7 @@ 'IDB_Hooks_dirtree_rank', 'IDB_Hooks_dirtree_rmdir', 'IDB_Hooks_dirtree_rminode', + 'IDB_Hooks_dirtree_segm_moved', 'IDB_Hooks_enum_bf_changed', 'IDB_Hooks_enum_cmt_changed', 'IDB_Hooks_enum_created', @@ -188,6 +190,7 @@ 'IDP_Hooks_ev_coagulate_dref', 'IDP_Hooks_ev_create_flat_group', 'IDP_Hooks_ev_create_func_frame', + 'IDP_Hooks_ev_create_merge_handlers', 'IDP_Hooks_ev_create_switch_xrefs', 'IDP_Hooks_ev_creating_segm', 'IDP_Hooks_ev_decorate_name', @@ -233,6 +236,7 @@ 'IDP_Hooks_ev_is_basic_block_end', 'IDP_Hooks_ev_is_call_insn', 'IDP_Hooks_ev_is_cond_insn', + 'IDP_Hooks_ev_is_control_flow_guard', 'IDP_Hooks_ev_is_far_jump', 'IDP_Hooks_ev_is_indirect_jump', 'IDP_Hooks_ev_is_insn_table_jump', @@ -277,6 +281,7 @@ 'IDP_Hooks_ev_term', 'IDP_Hooks_ev_treat_hindering_item', 'IDP_Hooks_ev_undefine', + 'IDP_Hooks_ev_update_call_stack', 'IDP_Hooks_ev_use_arg_types', 'IDP_Hooks_ev_use_regarg_type', 'IDP_Hooks_ev_use_stkarg_type', @@ -300,6 +305,7 @@ 'UI_Hooks_database_closed', 'UI_Hooks_database_inited', 'UI_Hooks_debugger_menu_change', + 'UI_Hooks_desktop_applied', 'UI_Hooks_destroying_plugmod', 'UI_Hooks_destroying_procmod', 'UI_Hooks_finish_populating_widget_popup', @@ -364,8 +370,35 @@ '_ll_make_num', '_ll_make_ref', '_ll_new_block', + 'abstract_graph_t_callback_ud_get', + 'abstract_graph_t_callback_ud_set', + 'abstract_graph_t_circle_center_get', + 'abstract_graph_t_circle_center_set', + 'abstract_graph_t_circle_radius_get', + 'abstract_graph_t_circle_radius_set', + 'abstract_graph_t_create_circle_layout', + 'abstract_graph_t_create_tree_layout', + 'abstract_graph_t_current_layout_get', + 'abstract_graph_t_current_layout_set', + 'abstract_graph_t_get_edge', + 'abstract_graph_t_grcall', + 'abstract_graph_t_grcall__varargs__', + 'abstract_graph_t_nrect', + 'abstract_graph_t_rect_edges_made_get', + 'abstract_graph_t_rect_edges_made_set', + 'abstract_graph_t_set_callback', + 'abstract_graph_t_title_get', + 'abstract_graph_t_title_set', 'accepts_small_udts', 'accepts_udts', + 'action_ctx_base_cur_sel_t__from_get', + 'action_ctx_base_cur_sel_t__from_set', + 'action_ctx_base_cur_sel_t_reset', + 'action_ctx_base_cur_sel_t_to_get', + 'action_ctx_base_cur_sel_t_to_set', + 'action_ctx_base_source_t_chooser_get', + 'action_ctx_base_source_t_chooser_set', + 'action_ctx_base_source_t_reset', 'action_ctx_base_t__get_form', 'action_ctx_base_t__get_form_title', 'action_ctx_base_t__get_form_type', @@ -387,6 +420,8 @@ 'action_ctx_base_t_cur_func_set', 'action_ctx_base_t_cur_seg_get', 'action_ctx_base_t_cur_seg_set', + 'action_ctx_base_t_cur_sel_get', + 'action_ctx_base_t_cur_sel_set', 'action_ctx_base_t_cur_strmem_get', 'action_ctx_base_t_cur_strmem_set', 'action_ctx_base_t_cur_struc_get', @@ -403,6 +438,8 @@ 'action_ctx_base_t_regname_get', 'action_ctx_base_t_regname_set', 'action_ctx_base_t_reset', + 'action_ctx_base_t_source_get', + 'action_ctx_base_t_source_set', 'action_ctx_base_t_widget_get', 'action_ctx_base_t_widget_set', 'action_ctx_base_t_widget_title_get', @@ -542,6 +579,7 @@ 'argloc_t_get_rrel__SWIG_1', 'argloc_t_has_reg', 'argloc_t_has_stkoff', + 'argloc_t_in_stack', 'argloc_t_is_badloc', 'argloc_t_is_custom', 'argloc_t_is_ea', @@ -904,6 +942,8 @@ 'begin_type_updating', 'bin_flag', 'bin_search', + 'bin_search__SWIG_0', + 'bin_search__SWIG_1', 'bit_bound_t_nbits_get', 'bit_bound_t_nbits_set', 'bit_bound_t_sbits_get', @@ -1052,6 +1092,7 @@ 'bookmarks_t_find_index', 'bookmarks_t_get', 'bookmarks_t_get_desc', + 'bookmarks_t_get_dirtree_id', 'bookmarks_t_mark', 'bookmarks_t_size', 'boolvec_t___eq__', @@ -1269,46 +1310,46 @@ 'call_stack_info_t_funcea_set', 'call_stack_info_t_funcok_get', 'call_stack_info_t_funcok_set', - 'call_stack_t___eq__', - 'call_stack_t___getitem__', - 'call_stack_t___len__', - 'call_stack_t___ne__', - 'call_stack_t___setitem__', - 'call_stack_t__del', - 'call_stack_t_add_unique', - 'call_stack_t_at', - 'call_stack_t_begin', - 'call_stack_t_begin__SWIG_0', - 'call_stack_t_begin__SWIG_1', - 'call_stack_t_capacity', - 'call_stack_t_clear', - 'call_stack_t_empty', - 'call_stack_t_end', - 'call_stack_t_end__SWIG_0', - 'call_stack_t_end__SWIG_1', - 'call_stack_t_erase', - 'call_stack_t_erase__SWIG_0', - 'call_stack_t_erase__SWIG_1', - 'call_stack_t_extract', - 'call_stack_t_find', - 'call_stack_t_find__SWIG_0', - 'call_stack_t_find__SWIG_1', - 'call_stack_t_grow', - 'call_stack_t_has', - 'call_stack_t_inject', - 'call_stack_t_insert', - 'call_stack_t_pop_back', - 'call_stack_t_push_back', - 'call_stack_t_push_back__SWIG_0', - 'call_stack_t_push_back__SWIG_1', - 'call_stack_t_qclear', - 'call_stack_t_reserve', - 'call_stack_t_resize', - 'call_stack_t_resize__SWIG_0', - 'call_stack_t_resize__SWIG_1', - 'call_stack_t_size', - 'call_stack_t_swap', - 'call_stack_t_truncate', + 'call_stack_info_vec_t___eq__', + 'call_stack_info_vec_t___getitem__', + 'call_stack_info_vec_t___len__', + 'call_stack_info_vec_t___ne__', + 'call_stack_info_vec_t___setitem__', + 'call_stack_info_vec_t__del', + 'call_stack_info_vec_t_add_unique', + 'call_stack_info_vec_t_at', + 'call_stack_info_vec_t_begin', + 'call_stack_info_vec_t_begin__SWIG_0', + 'call_stack_info_vec_t_begin__SWIG_1', + 'call_stack_info_vec_t_capacity', + 'call_stack_info_vec_t_clear', + 'call_stack_info_vec_t_empty', + 'call_stack_info_vec_t_end', + 'call_stack_info_vec_t_end__SWIG_0', + 'call_stack_info_vec_t_end__SWIG_1', + 'call_stack_info_vec_t_erase', + 'call_stack_info_vec_t_erase__SWIG_0', + 'call_stack_info_vec_t_erase__SWIG_1', + 'call_stack_info_vec_t_extract', + 'call_stack_info_vec_t_find', + 'call_stack_info_vec_t_find__SWIG_0', + 'call_stack_info_vec_t_find__SWIG_1', + 'call_stack_info_vec_t_grow', + 'call_stack_info_vec_t_has', + 'call_stack_info_vec_t_inject', + 'call_stack_info_vec_t_insert', + 'call_stack_info_vec_t_pop_back', + 'call_stack_info_vec_t_push_back', + 'call_stack_info_vec_t_push_back__SWIG_0', + 'call_stack_info_vec_t_push_back__SWIG_1', + 'call_stack_info_vec_t_qclear', + 'call_stack_info_vec_t_reserve', + 'call_stack_info_vec_t_resize', + 'call_stack_info_vec_t_resize__SWIG_0', + 'call_stack_info_vec_t_resize__SWIG_1', + 'call_stack_info_vec_t_size', + 'call_stack_info_vec_t_swap', + 'call_stack_info_vec_t_truncate', 'callregs_t_by_slots', 'callregs_t_fpregs_get', 'callregs_t_fpregs_set', @@ -1329,6 +1370,8 @@ 'can_exc_continue', 'cancel_exec_request', 'cancel_thread_exec_requests', + 'cancellable_graph_t_cancelled_get', + 'cancellable_graph_t_cancelled_set', 'carg_t___eq__', 'carg_t___ge__', 'carg_t___gt__', @@ -1832,6 +1875,43 @@ 'choose_til', 'choose_trace_file', 'choose_xref', + 'chooser_base_t_ask_item_attrs', + 'chooser_base_t_can_del', + 'chooser_base_t_can_edit', + 'chooser_base_t_can_filter', + 'chooser_base_t_can_ins', + 'chooser_base_t_can_refresh', + 'chooser_base_t_can_sort', + 'chooser_base_t_columns_get', + 'chooser_base_t_deflt_col_get', + 'chooser_base_t_get_builtin_number', + 'chooser_base_t_get_count', + 'chooser_base_t_get_ea', + 'chooser_base_t_get_quick_filter_initial_mode', + 'chooser_base_t_get_row', + 'chooser_base_t_has_diff_capability', + 'chooser_base_t_has_dirtree', + 'chooser_base_t_header_get', + 'chooser_base_t_height_get', + 'chooser_base_t_icon_get', + 'chooser_base_t_is_force_default', + 'chooser_base_t_is_modal', + 'chooser_base_t_is_multi', + 'chooser_base_t_is_noidb', + 'chooser_base_t_is_quick_filter_visible_initially', + 'chooser_base_t_is_same', + 'chooser_base_t_is_status_bar_hidden', + 'chooser_base_t_popup_allowed', + 'chooser_base_t_popup_names_get', + 'chooser_base_t_should_rename_trigger_edit', + 'chooser_base_t_should_restore_geometry', + 'chooser_base_t_title_get', + 'chooser_base_t_width_get', + 'chooser_base_t_widths_get', + 'chooser_base_t_x0_get', + 'chooser_base_t_x1_get', + 'chooser_base_t_y0_get', + 'chooser_base_t_y1_get', 'chooser_item_attrs_t_color_get', 'chooser_item_attrs_t_color_set', 'chooser_item_attrs_t_flags_get', @@ -2047,6 +2127,7 @@ 'codegen_t_ii_set', 'codegen_t_insn_get', 'codegen_t_insn_set', + 'codegen_t_load_effective_address', 'codegen_t_load_operand', 'codegen_t_mb_get', 'codegen_t_mb_set', @@ -2054,12 +2135,65 @@ 'codegen_t_mba_set', 'codegen_t_microgen_completed', 'codegen_t_prepare_gen_micro', + 'codegen_t_store_operand', 'collect_stack_trace', 'compact_til', 'compare_tinfo', 'compile_idc_file', 'compile_idc_snippet', 'compile_idc_text', + 'compiled_binpat_t___eq__', + 'compiled_binpat_t___ne__', + 'compiled_binpat_t_all_bytes_defined', + 'compiled_binpat_t_bytes_get', + 'compiled_binpat_t_bytes_set', + 'compiled_binpat_t_encidx_get', + 'compiled_binpat_t_encidx_set', + 'compiled_binpat_t_mask_get', + 'compiled_binpat_t_mask_set', + 'compiled_binpat_t_qclear', + 'compiled_binpat_t_strlits_get', + 'compiled_binpat_t_strlits_set', + 'compiled_binpat_vec_t___eq__', + 'compiled_binpat_vec_t___getitem__', + 'compiled_binpat_vec_t___len__', + 'compiled_binpat_vec_t___ne__', + 'compiled_binpat_vec_t___setitem__', + 'compiled_binpat_vec_t__del', + 'compiled_binpat_vec_t_add_unique', + 'compiled_binpat_vec_t_at', + 'compiled_binpat_vec_t_begin', + 'compiled_binpat_vec_t_begin__SWIG_0', + 'compiled_binpat_vec_t_begin__SWIG_1', + 'compiled_binpat_vec_t_capacity', + 'compiled_binpat_vec_t_clear', + 'compiled_binpat_vec_t_empty', + 'compiled_binpat_vec_t_end', + 'compiled_binpat_vec_t_end__SWIG_0', + 'compiled_binpat_vec_t_end__SWIG_1', + 'compiled_binpat_vec_t_erase', + 'compiled_binpat_vec_t_erase__SWIG_0', + 'compiled_binpat_vec_t_erase__SWIG_1', + 'compiled_binpat_vec_t_extract', + 'compiled_binpat_vec_t_find', + 'compiled_binpat_vec_t_find__SWIG_0', + 'compiled_binpat_vec_t_find__SWIG_1', + 'compiled_binpat_vec_t_grow', + 'compiled_binpat_vec_t_has', + 'compiled_binpat_vec_t_inject', + 'compiled_binpat_vec_t_insert', + 'compiled_binpat_vec_t_pop_back', + 'compiled_binpat_vec_t_push_back', + 'compiled_binpat_vec_t_push_back__SWIG_0', + 'compiled_binpat_vec_t_push_back__SWIG_1', + 'compiled_binpat_vec_t_qclear', + 'compiled_binpat_vec_t_reserve', + 'compiled_binpat_vec_t_resize', + 'compiled_binpat_vec_t_resize__SWIG_0', + 'compiled_binpat_vec_t_resize__SWIG_1', + 'compiled_binpat_vec_t_size', + 'compiled_binpat_vec_t_swap', + 'compiled_binpat_vec_t_truncate', 'compiler_info_t_cm_get', 'compiler_info_t_cm_set', 'compiler_info_t_defalign_get', @@ -2096,6 +2230,7 @@ 'create_align', 'create_byte', 'create_bytearray_linput', + 'create_cfunc', 'create_code_viewer', 'create_custdata', 'create_data', @@ -2429,6 +2564,7 @@ 'del_tinfo_attr', 'del_tryblks', 'del_value', + 'del_vftable_ea', 'del_virt_module', 'delay_slot_insn', 'delete_DBG_Hooks', @@ -2442,6 +2578,9 @@ 'delete___qsemaphore_t', 'delete___qthread_t', 'delete___qtimer_t', + 'delete_abstract_graph_t', + 'delete_action_ctx_base_cur_sel_t', + 'delete_action_ctx_base_source_t', 'delete_action_ctx_base_t', 'delete_action_desc_t', 'delete_addon_info_t', @@ -2472,8 +2611,10 @@ 'delete_bpt_vec_t', 'delete_bptaddr_t', 'delete_call_stack_info_t', + 'delete_call_stack_info_vec_t', 'delete_call_stack_t', 'delete_callregs_t', + 'delete_cancellable_graph_t', 'delete_carg_t', 'delete_carglist_t', 'delete_cases_and_targets_t', @@ -2508,6 +2649,8 @@ 'delete_cloop_t', 'delete_cnumber_t', 'delete_codegen_t', + 'delete_compiled_binpat_t', + 'delete_compiled_binpat_vec_t', 'delete_compiler_info_t', 'delete_const_aloc_visitor_t', 'delete_creturn_t', @@ -2567,8 +2710,9 @@ 'delete_file_enumerator_t', 'delete_fixup_data_t', 'delete_fixup_info_t', - 'delete_fnum_array', 'delete_fnumber_t', + 'delete_fpvalue_shorts_array_t', + 'delete_fpvalue_t', 'delete_frame_desc_t', 'delete_frame_mem_t', 'delete_frame_mems_t', @@ -2590,6 +2734,7 @@ 'delete_funcarg_t', 'delete_funcargvec_t', 'delete_gco_info_t', + 'delete_gdl_graph_t', 'delete_generic_linput_t', 'delete_graph_chains_t', 'delete_graph_item_t', @@ -2631,6 +2776,7 @@ 'delete_ivlset_t', 'delete_line_rendering_output_entries_refs_t', 'delete_line_rendering_output_entry_t', + 'delete_linearray_t', 'delete_lines_rendering_input_t', 'delete_lines_rendering_output_t', 'delete_loader_input_t', @@ -2693,7 +2839,6 @@ 'delete_op_t', 'delete_operand_locator_t', 'delete_operands_array', - 'delete_operator_info_t', 'delete_opinfo_t', 'delete_oprepr_t', 'delete_optblock_t', @@ -2838,6 +2983,7 @@ 'delete_udt_member_t', 'delete_udt_type_data_t', 'delete_udtmembervec_t', + 'delete_udtmembervec_template_t', 'delete_ui_requests_t', 'delete_ui_stroff_applicator_t', 'delete_ui_stroff_op_t', @@ -2883,6 +3029,7 @@ 'delete_xrefblk_t', 'delete_xreflist_entry_t', 'delete_xreflist_t', + 'delinf', 'demangle_name', 'deref_idcv', 'deref_ptr', @@ -2947,7 +3094,6 @@ 'dirspec_t_get_attrs', 'dirspec_t_get_inode', 'dirspec_t_get_name', - 'dirspec_t_get_size', 'dirspec_t_nodename_get', 'dirspec_t_nodename_set', 'dirspec_t_rename_inode', @@ -3019,9 +3165,9 @@ 'dirtree_t_get_abspath', 'dirtree_t_get_abspath__SWIG_0', 'dirtree_t_get_abspath__SWIG_1', + 'dirtree_t_get_dir_size', 'dirtree_t_get_entry_attrs', 'dirtree_t_get_entry_name', - 'dirtree_t_get_entry_size', 'dirtree_t_get_nodename', 'dirtree_t_get_parent_cursor', 'dirtree_t_get_rank', @@ -3104,8 +3250,10 @@ 'disown_IDP_Hooks', 'disown_UI_Hooks', 'disown_View_Hooks', + 'disown_abstract_graph_t', 'disown_aloc_visitor_t', 'disown_argtinfo_helper_t', + 'disown_cancellable_graph_t', 'disown_cfunc_parentee_t', 'disown_chain_visitor_t', 'disown_choose_ioport_parser_t', @@ -3116,6 +3264,7 @@ 'disown_enum_member_visitor_t', 'disown_file_enumerator_t', 'disown_func_md_diff_handler_t', + 'disown_gdl_graph_t', 'disown_graph_node_visitor_t', 'disown_graph_path_visitor_t', 'disown_graph_visitor_t', @@ -3126,7 +3275,6 @@ 'disown_minsn_visitor_t', 'disown_mlist_mop_visitor_t', 'disown_mop_visitor_t', - 'disown_mutable_graph_t', 'disown_optblock_t', 'disown_optinsn_t', 'disown_predicate_t', @@ -3246,6 +3394,7 @@ 'eamap_size', 'eamap_t_at', 'eamap_t_size', + 'ecleaz', 'eclose', 'edge_info_t_color_get', 'edge_info_t_color_set', @@ -3593,15 +3742,8 @@ 'float_flag', 'flt_flag', 'flush_buffers', - 'fnum_array___getitem__', - 'fnum_array___len__', - 'fnum_array___setitem__', - 'fnum_array__get_bytes', - 'fnum_array__set_bytes', - 'fnum_array_data_get', 'fnumber_t___eq__', 'fnumber_t___ge__', - 'fnumber_t___get_fnum', 'fnumber_t___gt__', 'fnumber_t___le__', 'fnumber_t___lt__', @@ -3635,6 +3777,56 @@ 'formchgcbfa_set_field_value', 'formchgcbfa_set_focused_field', 'formchgcbfa_show_field', + 'fpvalue_shorts_array_t___getitem__', + 'fpvalue_shorts_array_t___len__', + 'fpvalue_shorts_array_t___setitem__', + 'fpvalue_shorts_array_t__get_bytes', + 'fpvalue_shorts_array_t__set_bytes', + 'fpvalue_shorts_array_t_data_get', + 'fpvalue_t___add__', + 'fpvalue_t___eq__', + 'fpvalue_t___ge__', + 'fpvalue_t___gt__', + 'fpvalue_t___le__', + 'fpvalue_t___lt__', + 'fpvalue_t___mul__', + 'fpvalue_t___ne__', + 'fpvalue_t___str__', + 'fpvalue_t___sub__', + 'fpvalue_t___truediv__', + 'fpvalue_t__get_10bytes', + 'fpvalue_t__get_bytes', + 'fpvalue_t__get_float', + 'fpvalue_t__get_shorts', + 'fpvalue_t__set_10bytes', + 'fpvalue_t__set_bytes', + 'fpvalue_t__set_float', + 'fpvalue_t_assign', + 'fpvalue_t_clear', + 'fpvalue_t_compare', + 'fpvalue_t_eabs', + 'fpvalue_t_fadd', + 'fpvalue_t_fdiv', + 'fpvalue_t_fmul', + 'fpvalue_t_from_10bytes', + 'fpvalue_t_from_12bytes', + 'fpvalue_t_from_int64', + 'fpvalue_t_from_str', + 'fpvalue_t_from_sval', + 'fpvalue_t_from_uint64', + 'fpvalue_t_fsub', + 'fpvalue_t_get_kind', + 'fpvalue_t_is_negative', + 'fpvalue_t_mul_pow2', + 'fpvalue_t_negate', + 'fpvalue_t_to_10bytes', + 'fpvalue_t_to_12bytes', + 'fpvalue_t_to_int64', + 'fpvalue_t_to_str', + 'fpvalue_t_to_sval', + 'fpvalue_t_to_uint64', + 'fpvalue_t_w_get', + 'fpvalue_t_w_set', 'frame_desc_t_argsize_get', 'frame_desc_t_argsize_set', 'frame_desc_t_frregs_get', @@ -3696,6 +3888,8 @@ 'free_chunk', 'free_custom_icon', 'free_idcv', + 'free_regarg', + 'free_regvar', 'free_til', 'func_contains', 'func_does_return', @@ -3949,10 +4143,16 @@ 'func_type_data_t_flags_set', 'func_type_data_t_get_call_method', 'func_type_data_t_guess_cc', + 'func_type_data_t_is_const', + 'func_type_data_t_is_ctor', + 'func_type_data_t_is_dtor', + 'func_type_data_t_is_golang_cc', 'func_type_data_t_is_high', 'func_type_data_t_is_noret', 'func_type_data_t_is_pure', + 'func_type_data_t_is_static', 'func_type_data_t_is_vararg_cc', + 'func_type_data_t_is_virtual', 'func_type_data_t_retloc_get', 'func_type_data_t_retloc_set', 'func_type_data_t_rettype_get', @@ -4016,6 +4216,7 @@ 'funcargvec_t_truncate', 'gcc_layout', 'gco_info_t_append_to_list', + 'gco_info_t_cvt_to_ivl', 'gco_info_t_flags_get', 'gco_info_t_flags_set', 'gco_info_t_is_def', @@ -4025,6 +4226,28 @@ 'gco_info_t_name_set', 'gco_info_t_size_get', 'gco_info_t_size_set', + 'gdl_graph_t_begin', + 'gdl_graph_t_edge', + 'gdl_graph_t_empty', + 'gdl_graph_t_end', + 'gdl_graph_t_entry', + 'gdl_graph_t_exists', + 'gdl_graph_t_exit', + 'gdl_graph_t_front', + 'gdl_graph_t_get_edge_color', + 'gdl_graph_t_get_node_color', + 'gdl_graph_t_get_node_label', + 'gdl_graph_t_nedge', + 'gdl_graph_t_node_qty', + 'gdl_graph_t_npred', + 'gdl_graph_t_nsucc', + 'gdl_graph_t_pred', + 'gdl_graph_t_print_edge', + 'gdl_graph_t_print_graph_attributes', + 'gdl_graph_t_print_node', + 'gdl_graph_t_print_node_attributes', + 'gdl_graph_t_size', + 'gdl_graph_t_succ', 'gen_complex_call_chart', 'gen_decorate_name', 'gen_disasm_text', @@ -4041,6 +4264,7 @@ 'gen_use_arg_tinfos2', 'generate_disasm_line', 'generate_disassembly', + 'generate_til_with_parser', 'generic_linput_t_blocksize_get', 'generic_linput_t_blocksize_set', 'generic_linput_t_filesize_get', @@ -4124,6 +4348,8 @@ 'get_data_elsize', 'get_data_value', 'get_db_byte', + 'get_dbctx_id', + 'get_dbctx_qty', 'get_dbg_byte', 'get_dbg_memory_info', 'get_dbg_reg_info', @@ -4146,6 +4372,7 @@ 'get_ea_name', 'get_ea_viewer_history_info', 'get_effective_spd', + 'get_elapsed_secs', 'get_elf_debug_file_directory', 'get_encoding_bpu', 'get_encoding_name', @@ -4248,6 +4475,7 @@ 'get_hidden_range_num', 'get_hidden_range_qty', 'get_highlight', + 'get_ida_notepad_text', 'get_ida_subdirs', 'get_idainfo_by_type', 'get_idasgn_desc', @@ -4255,6 +4483,8 @@ 'get_idasgn_qty', 'get_idasgn_title', 'get_idati', + 'get_idb_ctime', + 'get_idb_nopens', 'get_idb_notifier_addr', 'get_idb_notifier_ud_addr', 'get_idc_filename', @@ -4271,6 +4501,10 @@ 'get_import_module_qty', 'get_ind_purged', 'get_inf_structure', + 'get_initial_ida_version', + 'get_initial_ida_version__SWIG_0', + 'get_initial_ida_version__SWIG_1', + 'get_innermost_member', 'get_input_file_path', 'get_insn_tev_reg_mem', 'get_insn_tev_reg_result', @@ -4292,6 +4526,7 @@ 'get_last_serial_enum_member', 'get_last_struc_idx', 'get_linput_type', + 'get_loader_format_name', 'get_local_var', 'get_local_vars', 'get_long_name', @@ -4440,6 +4675,7 @@ 'get_segment_translations', 'get_selector_qty', 'get_server_connection', + 'get_server_connection2', 'get_short_name', 'get_signed_mcode', 'get_source_linnum', @@ -4449,6 +4685,8 @@ 'get_spd', 'get_special_folder', 'get_sptr', + 'get_srcdbg_paths', + 'get_srcdbg_undesired_paths', 'get_srcinfo_provider', 'get_sreg', 'get_sreg_range', @@ -4464,6 +4702,7 @@ 'get_str_type', 'get_str_type_code', 'get_str_type_prefix_length', + 'get_strid', 'get_strlist_item', 'get_strlist_options', 'get_strlist_qty', @@ -4516,6 +4755,8 @@ 'get_unsigned_mcode', 'get_user_idadir', 'get_user_strlist_options', + 'get_vftable_ea', + 'get_vftable_ordinal', 'get_view_renderer_type', 'get_viewer_graph', 'get_viewer_place_type', @@ -4533,6 +4774,7 @@ 'get_zero_ranges', 'getb_reginsn', 'getf_reginsn', + 'getinf_str', 'getn_bpt', 'getn_enum', 'getn_fchunk', @@ -4592,10 +4834,14 @@ 'group_crinfo_t_text_get', 'group_crinfo_t_text_set', 'guess_func_cc', - 'guess_table_address', - 'guess_table_size', 'guess_tinfo', 'handle_debug_event', + 'handle_fixups_in_macro', + 'has_aflag_linnum', + 'has_aflag_lname', + 'has_aflag_ti', + 'has_aflag_ti0', + 'has_aflag_ti1', 'has_any_name', 'has_auto_name', 'has_backup_metadata', @@ -4846,7 +5092,6 @@ 'idc_parse_types', 'idc_print_type', 'idc_set_local_type', - 'idc_value_t___get_e', 'idc_value_t__create_empty_string', 'idc_value_t_c_str', 'idc_value_t_clear', @@ -4974,6 +5219,7 @@ 'inf_get_af2_low', 'inf_get_af_high', 'inf_get_af_low', + 'inf_get_app_bitness', 'inf_get_appcall_options', 'inf_get_apptype', 'inf_get_asmtype', @@ -5051,7 +5297,9 @@ 'inf_hide_libfuncs', 'inf_huge_arg_align', 'inf_inc_database_change_count', - 'inf_is_32bit', + 'inf_is_16bit', + 'inf_is_32bit_exactly', + 'inf_is_32bit_or_higher', 'inf_is_64bit', 'inf_is_auto_enabled', 'inf_is_be', @@ -5509,6 +5757,35 @@ 'is__invsign1', 'is_action_enabled', 'is_additive', + 'is_aflag__bnot0', + 'is_aflag__bnot1', + 'is_aflag__invsign0', + 'is_aflag__invsign1', + 'is_aflag_align_flow', + 'is_aflag_colored_item', + 'is_aflag_data_guessed_by_hexrays', + 'is_aflag_fixed_spd', + 'is_aflag_func_guessed_by_hexrays', + 'is_aflag_hidden_border', + 'is_aflag_hidden_item', + 'is_aflag_libitem', + 'is_aflag_lzero0', + 'is_aflag_lzero1', + 'is_aflag_manual_insn', + 'is_aflag_noret', + 'is_aflag_notcode', + 'is_aflag_notproc', + 'is_aflag_public_name', + 'is_aflag_retfp', + 'is_aflag_terse_struc', + 'is_aflag_tilcmt', + 'is_aflag_type_determined_by_hexrays', + 'is_aflag_type_guessed_by_hexrays', + 'is_aflag_type_guessed_by_ida', + 'is_aflag_usersp', + 'is_aflag_userti', + 'is_aflag_weak_name', + 'is_aflag_zstroff', 'is_align', 'is_align_flow', 'is_align_insn', @@ -5545,6 +5822,7 @@ 'is_custom', 'is_data', 'is_data_far', + 'is_data_guessed_by_hexrays', 'is_database_flag', 'is_debugger_busy', 'is_debugger_memory', @@ -5575,6 +5853,7 @@ 'is_forced_operand', 'is_func', 'is_func_entry', + 'is_func_guessed_by_hexrays', 'is_func_locked', 'is_func_tail', 'is_func_trace_enabled', @@ -5583,10 +5862,12 @@ 'is_gcc32', 'is_gcc64', 'is_ghost_enum', + 'is_golang_cc', 'is_head', 'is_hidden_border', 'is_hidden_item', 'is_idaq', + 'is_idaview', 'is_ident', 'is_ident_cp', 'is_in_nlist', @@ -5703,6 +5984,7 @@ 'is_type_complex', 'is_type_const', 'is_type_correct', + 'is_type_determined_by_hexrays', 'is_type_double', 'is_type_enum', 'is_type_ext_arithmetic', @@ -5710,6 +5992,8 @@ 'is_type_float', 'is_type_floating', 'is_type_func', + 'is_type_guessed_by_hexrays', + 'is_type_guessed_by_ida', 'is_type_int', 'is_type_int128', 'is_type_int16', @@ -5815,6 +6099,7 @@ 'jumpto', 'jumpto__SWIG_0', 'jumpto__SWIG_1', + 'l_compare2', 'last_idcv_attr', 'leading_zero_important', 'lexcompare', @@ -5874,6 +6159,18 @@ 'line_rendering_output_entry_t_line_set', 'line_rendering_output_entry_t_nchars_get', 'line_rendering_output_entry_t_nchars_set', + 'linearray_t_beginning', + 'linearray_t_down', + 'linearray_t_ending', + 'linearray_t_get_bg_color', + 'linearray_t_get_dlnnum', + 'linearray_t_get_linecnt', + 'linearray_t_get_pfx_color', + 'linearray_t_get_place', + 'linearray_t_set_place', + 'linearray_t_set_userdata', + 'linearray_t_up', + 'linearray_t_userdata', 'lines_rendering_input_t_cb_get', 'lines_rendering_input_t_cb_set', 'lines_rendering_input_t_sections_lines_get', @@ -5925,6 +6222,7 @@ 'loader_t_flags_set', 'loader_t_version_get', 'loader_t_version_set', + 'locate_lvar', 'lochist_entry_t_acquire_place', 'lochist_entry_t_is_valid', 'lochist_entry_t_place', @@ -6111,6 +6409,7 @@ 'lvar_saved_info_t_clr_forced_lvar', 'lvar_saved_info_t_clr_nomap_lvar', 'lvar_saved_info_t_clr_noptr_lvar', + 'lvar_saved_info_t_clr_unused_lvar', 'lvar_saved_info_t_cmt_get', 'lvar_saved_info_t_cmt_set', 'lvar_saved_info_t_flags_get', @@ -6120,6 +6419,7 @@ 'lvar_saved_info_t_is_kept', 'lvar_saved_info_t_is_nomap_lvar', 'lvar_saved_info_t_is_noptr_lvar', + 'lvar_saved_info_t_is_unused_lvar', 'lvar_saved_info_t_ll_get', 'lvar_saved_info_t_ll_set', 'lvar_saved_info_t_name_get', @@ -6128,6 +6428,7 @@ 'lvar_saved_info_t_set_keep', 'lvar_saved_info_t_set_nomap_lvar', 'lvar_saved_info_t_set_noptr_lvar', + 'lvar_saved_info_t_set_unused_lvar', 'lvar_saved_info_t_size_get', 'lvar_saved_info_t_size_set', 'lvar_saved_info_t_type_get', @@ -6177,6 +6478,7 @@ 'lvar_t_clear_used', 'lvar_t_clr_arg_var', 'lvar_t_clr_automapped', + 'lvar_t_clr_decl_unused', 'lvar_t_clr_dummy_arg', 'lvar_t_clr_fake_var', 'lvar_t_clr_floating_var', @@ -6206,9 +6508,11 @@ 'lvar_t_has_user_info', 'lvar_t_has_user_name', 'lvar_t_has_user_type', + 'lvar_t_in_asm', 'lvar_t_is_aliasable', 'lvar_t_is_arg_var', 'lvar_t_is_automapped', + 'lvar_t_is_decl_unused', 'lvar_t_is_dummy_arg', 'lvar_t_is_fake_var', 'lvar_t_is_floating_var', @@ -6227,6 +6531,7 @@ 'lvar_t_name_set', 'lvar_t_set_arg_var', 'lvar_t_set_automapped', + 'lvar_t_set_decl_unused', 'lvar_t_set_dummy_arg', 'lvar_t_set_fake_var', 'lvar_t_set_final_lvar_type', @@ -6258,6 +6563,7 @@ 'lvar_t_width_get', 'lvar_t_width_set', 'lvar_uservec_t_clear', + 'lvar_uservec_t_empty', 'lvar_uservec_t_find_info', 'lvar_uservec_t_keep_info', 'lvar_uservec_t_lmaps_get', @@ -6352,7 +6658,10 @@ 'mba_t_consumed_argregs_get', 'mba_t_consumed_argregs_set', 'mba_t_copy_block', + 'mba_t_create_helper_call', 'mba_t_deleted_pairs', + 'mba_t_deprecated_idb_node_get', + 'mba_t_deprecated_idb_node_set', 'mba_t_deserialize', 'mba_t_display_numaddrs', 'mba_t_display_valnums', @@ -6404,9 +6713,8 @@ 'mba_t_has_bad_sp', 'mba_t_has_over_chains', 'mba_t_has_passregs', + 'mba_t_has_stack_retval', 'mba_t_idaloc2vd', - 'mba_t_idb_node_get', - 'mba_t_idb_node_set', 'mba_t_idb_spoiled_get', 'mba_t_idb_spoiled_set', 'mba_t_idb_type_get', @@ -6464,7 +6772,7 @@ 'mba_t_really_alloc', 'mba_t_regargs_is_not_aligned', 'mba_t_remove_block', - 'mba_t_remove_empty_blocks', + 'mba_t_remove_empty_and_unreachable_blocks', 'mba_t_reqmat_get', 'mba_t_reqmat_set', 'mba_t_restricted_memory_get', @@ -6478,6 +6786,7 @@ 'mba_t_save_snapshot', 'mba_t_saverest_done', 'mba_t_serialize', + 'mba_t_set_maturity', 'mba_t_set_mba_flags', 'mba_t_set_mba_flags2', 'mba_t_shadow_args_get', @@ -6613,6 +6922,8 @@ 'mcallarg_t_dstr', 'mcallarg_t_ea_get', 'mcallarg_t_ea_set', + 'mcallarg_t_flags_get', + 'mcallarg_t_flags_set', 'mcallarg_t_make_int', 'mcallarg_t_make_uint', 'mcallarg_t_name_get', @@ -7122,6 +7433,7 @@ 'mop_t_is_mob', 'mop_t_is_negative_constant', 'mop_t_is_one', + 'mop_t_is_pcval', 'mop_t_is_positive_constant', 'mop_t_is_reg', 'mop_t_is_reg__SWIG_0', @@ -7149,6 +7461,7 @@ 'mop_t_make_reg__SWIG_1', 'mop_t_make_reg_pair', 'mop_t_make_second_half', + 'mop_t_make_stkvar', 'mop_t_may_use_aliased_memory', 'mop_t_oprops_get', 'mop_t_oprops_set', @@ -7166,6 +7479,7 @@ 'mop_t_t_get', 'mop_t_t_set', 'mop_t_unsigned_value', + 'mop_t_update_numop_value', 'mop_t_valnum_get', 'mop_t_valnum_set', 'mop_t_value', @@ -7223,21 +7537,23 @@ 'msg_get_lines', 'msg_save', 'must_mcode_close_block', + 'mutable_graph_t_add_edge', + 'mutable_graph_t_add_node', 'mutable_graph_t_belongs_get', 'mutable_graph_t_belongs_set', 'mutable_graph_t_calc_group_ea', 'mutable_graph_t_change_group_visibility', - 'mutable_graph_t_clear', 'mutable_graph_t_create_digraph_layout', 'mutable_graph_t_create_group', 'mutable_graph_t_del_custom_layout', + 'mutable_graph_t_del_edge', + 'mutable_graph_t_del_node', 'mutable_graph_t_delete_group', 'mutable_graph_t_edges_get', 'mutable_graph_t_edges_set', 'mutable_graph_t_empty', 'mutable_graph_t_exists', 'mutable_graph_t_get_custom_layout', - 'mutable_graph_t_get_edge', 'mutable_graph_t_get_first_subgraph_node', 'mutable_graph_t_get_graph_groups', 'mutable_graph_t_get_next_subgraph_node', @@ -7261,9 +7577,6 @@ 'mutable_graph_t_nodes_get', 'mutable_graph_t_nodes_set', 'mutable_graph_t_npred', - 'mutable_graph_t_nrect', - 'mutable_graph_t_nrect__SWIG_0', - 'mutable_graph_t_nrect__SWIG_1', 'mutable_graph_t_nsucc', 'mutable_graph_t_org_preds_get', 'mutable_graph_t_org_preds_set', @@ -7273,12 +7586,17 @@ 'mutable_graph_t_preds_get', 'mutable_graph_t_preds_set', 'mutable_graph_t_predset', + 'mutable_graph_t_redo_layout', + 'mutable_graph_t_refresh', + 'mutable_graph_t_replace_edge', 'mutable_graph_t_reset', + 'mutable_graph_t_resize', 'mutable_graph_t_set_custom_layout', 'mutable_graph_t_set_deleted_node', 'mutable_graph_t_set_edge', 'mutable_graph_t_set_graph_groups', 'mutable_graph_t_set_node_group', + 'mutable_graph_t_set_nrect', 'mutable_graph_t_size', 'mutable_graph_t_succ', 'mutable_graph_t_succs_get', @@ -7350,6 +7668,7 @@ 'netnode_easet_idx', 'netnode_easet_idx8', 'netnode_end', + 'netnode_exist', 'netnode_get_name', 'netnode_getblob', 'netnode_getblob_ea', @@ -7425,6 +7744,9 @@ 'new___qsemaphore_t', 'new___qthread_t', 'new___qtimer_t', + 'new_abstract_graph_t', + 'new_action_ctx_base_cur_sel_t', + 'new_action_ctx_base_source_t', 'new_action_ctx_base_t', 'new_action_desc_t', 'new_addon_info_t', @@ -7475,12 +7797,14 @@ 'new_bpt_vec_t__SWIG_1', 'new_bptaddr_t', 'new_call_stack_info_t', + 'new_call_stack_info_vec_t', + 'new_call_stack_info_vec_t__SWIG_0', + 'new_call_stack_info_vec_t__SWIG_1', 'new_call_stack_t', - 'new_call_stack_t__SWIG_0', - 'new_call_stack_t__SWIG_1', 'new_callregs_t', 'new_callregs_t__SWIG_0', 'new_callregs_t__SWIG_1', + 'new_cancellable_graph_t', 'new_carg_t', 'new_carglist_t', 'new_carglist_t__SWIG_0', @@ -7548,6 +7872,10 @@ 'new_cloop_t__SWIG_1', 'new_cloop_t__SWIG_2', 'new_cnumber_t', + 'new_compiled_binpat_t', + 'new_compiled_binpat_vec_t', + 'new_compiled_binpat_vec_t__SWIG_0', + 'new_compiled_binpat_vec_t__SWIG_1', 'new_compiler_info_t', 'new_const_aloc_visitor_t', 'new_creturn_t', @@ -7636,8 +7964,11 @@ 'new_fixup_data_t__SWIG_0', 'new_fixup_data_t__SWIG_1', 'new_fixup_info_t', - 'new_fnum_array', 'new_fnumber_t', + 'new_fpvalue_shorts_array_t', + 'new_fpvalue_t', + 'new_fpvalue_t__SWIG_0', + 'new_fpvalue_t__SWIG_1', 'new_frame_desc_t', 'new_frame_mem_t', 'new_frame_mems_t', @@ -7677,6 +8008,7 @@ 'new_funcargvec_t__SWIG_0', 'new_funcargvec_t__SWIG_1', 'new_gco_info_t', + 'new_gdl_graph_t', 'new_graph_chains_t', 'new_graph_item_t', 'new_graph_location_info_t', @@ -7744,6 +8076,7 @@ 'new_line_rendering_output_entry_t', 'new_line_rendering_output_entry_t__SWIG_0', 'new_line_rendering_output_entry_t__SWIG_1', + 'new_linearray_t', 'new_lines_rendering_input_t', 'new_lines_rendering_output_t', 'new_loader_input_t', @@ -7838,7 +8171,6 @@ 'new_op_t', 'new_operand_locator_t', 'new_operands_array', - 'new_operator_info_t', 'new_opinfo_t', 'new_oprepr_t', 'new_optblock_t', @@ -7928,6 +8260,8 @@ 'new_reg_accesses_t', 'new_reg_info_t', 'new_regarg_t', + 'new_regarg_t__SWIG_0', + 'new_regarg_t__SWIG_1', 'new_reginfovec_t', 'new_reginfovec_t__SWIG_0', 'new_reginfovec_t__SWIG_1', @@ -7941,6 +8275,8 @@ 'new_regval_t__SWIG_0', 'new_regval_t__SWIG_1', 'new_regvar_t', + 'new_regvar_t__SWIG_0', + 'new_regvar_t__SWIG_1', 'new_renderer_info_pos_t', 'new_renderer_info_t', 'new_renderer_pos_info_t', @@ -8069,8 +8405,9 @@ 'new_udt_member_t', 'new_udt_type_data_t', 'new_udtmembervec_t', - 'new_udtmembervec_t__SWIG_0', - 'new_udtmembervec_t__SWIG_1', + 'new_udtmembervec_template_t', + 'new_udtmembervec_template_t__SWIG_0', + 'new_udtmembervec_template_t__SWIG_1', 'new_ui_requests_t', 'new_ui_stroff_applicator_t', 'new_ui_stroff_op_t', @@ -8210,7 +8547,9 @@ 'node_layout_t_swap', 'node_layout_t_truncate', 'node_ordering_t_clear', + 'node_ordering_t_clr', 'node_ordering_t_node', + 'node_ordering_t_order', 'node_ordering_t_resize', 'node_ordering_t_set', 'node_ordering_t_size', @@ -8304,6 +8643,7 @@ 'op_uses_x', 'op_uses_y', 'op_uses_z', + 'open_bookmarks_window', 'open_bpts_window', 'open_calls_window', 'open_disasm_window', @@ -8350,16 +8690,6 @@ 'operands_array__get_bytes', 'operands_array__set_bytes', 'operands_array_data_get', - 'operator_info_t_fixtype_get', - 'operator_info_t_fixtype_set', - 'operator_info_t_flags_get', - 'operator_info_t_flags_set', - 'operator_info_t_precedence_get', - 'operator_info_t_precedence_set', - 'operator_info_t_text_get', - 'operator_info_t_text_set', - 'operator_info_t_valency_get', - 'operator_info_t_valency_set', 'opinfo_t_cd_get', 'opinfo_t_cd_set', 'opinfo_t_ec_get', @@ -8475,6 +8805,8 @@ 'outctx_t_procmod_set', 'outctx_t_retrieve_cmt', 'outctx_t_retrieve_name', + 'outctx_t_saved_immvals_get', + 'outctx_t_saved_immvals_set', 'outctx_t_set_bin_state', 'outctx_t_setup_outctx', 'outctx_t_wif_get', @@ -8485,10 +8817,13 @@ 'pack_object_to_bv', 'pack_object_to_idb', 'packreal_flag', + 'parse_binpat_str', 'parse_command_line3', 'parse_dbgopts', 'parse_decl', 'parse_decls', + 'parse_decls_for_srclang', + 'parse_decls_with_parser', 'parse_reg_name', 'parse_user_call', 'partial_type_num', @@ -8793,6 +9128,7 @@ 'put_qword', 'put_word', 'py_add_idc_func', + 'py_chooser_base_t_get_row', 'py_get_ask_form', 'py_get_call_idc_func', 'py_get_open_form', @@ -9316,6 +9652,7 @@ 'refinfo_t_type', 'refresh_chooser', 'refresh_choosers', + 'refresh_custom_viewer', 'refresh_debugger_memory', 'refresh_idaview', 'refresh_idaview_anyway', @@ -9409,6 +9746,7 @@ 'regarg_t_name_set', 'regarg_t_reg_get', 'regarg_t_reg_set', + 'regarg_t_swap', 'regarg_t_type_get', 'regarg_t_type_set', 'reginfovec_t___eq__', @@ -9537,6 +9875,7 @@ 'regvar_t_canon_set', 'regvar_t_cmt_get', 'regvar_t_cmt_set', + 'regvar_t_swap', 'regvar_t_user_get', 'regvar_t_user_set', 'reload_file', @@ -9552,6 +9891,7 @@ 'rename_bptgrp', 'rename_encoding', 'rename_entry', + 'rename_lvar', 'rename_regvar', 'renderer_info_pos_t___eq__', 'renderer_info_pos_t___ne__', @@ -9563,7 +9903,6 @@ 'renderer_info_pos_t_node_set', 'renderer_info_t___eq__', 'renderer_info_t___ne__', - 'renderer_info_t_clear', 'renderer_info_t_gli_get', 'renderer_info_t_gli_set', 'renderer_info_t_pos_get', @@ -9885,6 +10224,9 @@ 'segment_t_end_ea_set', 'segment_t_flags_get', 'segment_t_flags_set', + 'segment_t_is_16bit', + 'segment_t_is_32bit', + 'segment_t_is_64bit', 'segment_t_is_header_segm', 'segment_t_is_hidden_segtype', 'segment_t_is_loader_segm', @@ -9912,8 +10254,6 @@ 'segment_t_type_get', 'segment_t_type_set', 'segment_t_update', - 'segment_t_use32', - 'segment_t_use64', 'segtype', 'seh_t_clear', 'seh_t_filter_get', @@ -9930,6 +10270,8 @@ 'sel_pointer_cast', 'sel_pointer_frompointer', 'sel_pointer_value', + 'select_parser_by_name', + 'select_parser_by_srclang', 'select_thread', 'select_udt_by_offset', 'selection_item_t___eq__', @@ -9988,6 +10330,7 @@ 'set_cp_validity', 'set_custom_data_type_ids', 'set_custom_viewer_qt_aware', + 'set_data_guessed_by_hexrays', 'set_database_flag', 'set_debug_event_code', 'set_debug_name', @@ -10018,6 +10361,7 @@ 'set_frame_size', 'set_func_cmt', 'set_func_end', + 'set_func_guessed_by_hexrays', 'set_func_name_if_jumpfunc', 'set_func_start', 'set_func_trace_options', @@ -10030,6 +10374,7 @@ 'set_header_path', 'set_highlight', 'set_highlight_trace_options', + 'set_ida_notepad_text', 'set_ida_state', 'set_idcv_attr', 'set_idcv_slice', @@ -10039,6 +10384,7 @@ 'set_insn_trace_options', 'set_item_color', 'set_libitem', + 'set_loader_format_name', 'set_lzero', 'set_lzero0', 'set_lzero1', @@ -10061,6 +10407,7 @@ 'set_op_type', 'set_opinfo', 'set_outfile_encoding_idx', + 'set_parser_argv', 'set_path', 'set_process_options', 'set_process_state', @@ -10087,6 +10434,8 @@ 'set_segment_translations', 'set_selector', 'set_source_linnum', + 'set_srcdbg_paths', + 'set_srcdbg_undesired_paths', 'set_sreg_at_next_code', 'set_step_trace_options', 'set_str_type', @@ -10113,10 +10462,13 @@ 'set_trace_size', 'set_type', 'set_type_alias', + 'set_type_determined_by_hexrays', + 'set_type_guessed_by_ida', 'set_usemodsp', 'set_user_defined_prefix', 'set_usersp', 'set_userti', + 'set_vftable_ea', 'set_view_renderer_type', 'set_viewer_graph', 'set_visible_func', @@ -10410,7 +10762,6 @@ 'strwinsetup_t_display_only_existing_strings_set', 'strwinsetup_t_ignore_heads_get', 'strwinsetup_t_ignore_heads_set', - 'strwinsetup_t_is_initialized', 'strwinsetup_t_minlen_get', 'strwinsetup_t_minlen_set', 'strwinsetup_t_only_7bit_get', @@ -10424,6 +10775,7 @@ 'swap_idcvs', 'swap_mcode_relation', 'swapped_relation', + 'switch_dbctx', 'switch_info_t__from_ptrval__', 'switch_info_t__get_values_lowcase', 'switch_info_t__set_values_lowcase', @@ -10455,6 +10807,7 @@ 'switch_info_t_is_nolowcase', 'switch_info_t_is_sparse', 'switch_info_t_is_subtract', + 'switch_info_t_is_user_defined', 'switch_info_t_jcases_get', 'switch_info_t_jcases_set', 'switch_info_t_jumps_get', @@ -10476,6 +10829,7 @@ 'switch_info_t_startea_get', 'switch_info_t_startea_set', 'switch_info_t_use_std_table', + 'switch_to_golang', 'sync_source_t___eq__', 'sync_source_t___ne__', 'sync_source_t_get_register', @@ -10746,6 +11100,7 @@ 'tinfo_t_get_final_ordinal', 'tinfo_t_get_final_type_name', 'tinfo_t_get_func_details', + 'tinfo_t_get_methods', 'tinfo_t_get_modifiers', 'tinfo_t_get_named_type', 'tinfo_t_get_nargs', @@ -10878,6 +11233,7 @@ 'tinfo_t_set_attrs', 'tinfo_t_set_const', 'tinfo_t_set_declalign', + 'tinfo_t_set_methods', 'tinfo_t_set_modifiers', 'tinfo_t_set_named_type', 'tinfo_t_set_numbered_type', @@ -11074,6 +11430,7 @@ 'udt_member_t___ne__', 'udt_member_t_begin', 'udt_member_t_clr_baseclass', + 'udt_member_t_clr_method', 'udt_member_t_clr_unaligned', 'udt_member_t_clr_vftable', 'udt_member_t_clr_virtbase', @@ -11087,6 +11444,7 @@ 'udt_member_t_is_anonymous_udm', 'udt_member_t_is_baseclass', 'udt_member_t_is_bitfield', + 'udt_member_t_is_method', 'udt_member_t_is_unaligned', 'udt_member_t_is_vftable', 'udt_member_t_is_virtbase', @@ -11096,6 +11454,7 @@ 'udt_member_t_offset_get', 'udt_member_t_offset_set', 'udt_member_t_set_baseclass', + 'udt_member_t_set_method', 'udt_member_t_set_unaligned', 'udt_member_t_set_vftable', 'udt_member_t_set_virtbase', @@ -11119,6 +11478,7 @@ 'udt_type_data_t_pack_set', 'udt_type_data_t_sda_get', 'udt_type_data_t_sda_set', + 'udt_type_data_t_set_vftable', 'udt_type_data_t_swap', 'udt_type_data_t_taudt_bits_get', 'udt_type_data_t_taudt_bits_set', @@ -11126,46 +11486,46 @@ 'udt_type_data_t_total_size_set', 'udt_type_data_t_unpadded_size_get', 'udt_type_data_t_unpadded_size_set', - 'udtmembervec_t___eq__', - 'udtmembervec_t___getitem__', - 'udtmembervec_t___len__', - 'udtmembervec_t___ne__', - 'udtmembervec_t___setitem__', - 'udtmembervec_t__del', - 'udtmembervec_t_add_unique', - 'udtmembervec_t_at', - 'udtmembervec_t_begin', - 'udtmembervec_t_begin__SWIG_0', - 'udtmembervec_t_begin__SWIG_1', - 'udtmembervec_t_capacity', - 'udtmembervec_t_clear', - 'udtmembervec_t_empty', - 'udtmembervec_t_end', - 'udtmembervec_t_end__SWIG_0', - 'udtmembervec_t_end__SWIG_1', - 'udtmembervec_t_erase', - 'udtmembervec_t_erase__SWIG_0', - 'udtmembervec_t_erase__SWIG_1', - 'udtmembervec_t_extract', - 'udtmembervec_t_find', - 'udtmembervec_t_find__SWIG_0', - 'udtmembervec_t_find__SWIG_1', - 'udtmembervec_t_grow', - 'udtmembervec_t_has', - 'udtmembervec_t_inject', - 'udtmembervec_t_insert', - 'udtmembervec_t_pop_back', - 'udtmembervec_t_push_back', - 'udtmembervec_t_push_back__SWIG_0', - 'udtmembervec_t_push_back__SWIG_1', - 'udtmembervec_t_qclear', - 'udtmembervec_t_reserve', - 'udtmembervec_t_resize', - 'udtmembervec_t_resize__SWIG_0', - 'udtmembervec_t_resize__SWIG_1', - 'udtmembervec_t_size', - 'udtmembervec_t_swap', - 'udtmembervec_t_truncate', + 'udtmembervec_template_t___eq__', + 'udtmembervec_template_t___getitem__', + 'udtmembervec_template_t___len__', + 'udtmembervec_template_t___ne__', + 'udtmembervec_template_t___setitem__', + 'udtmembervec_template_t__del', + 'udtmembervec_template_t_add_unique', + 'udtmembervec_template_t_at', + 'udtmembervec_template_t_begin', + 'udtmembervec_template_t_begin__SWIG_0', + 'udtmembervec_template_t_begin__SWIG_1', + 'udtmembervec_template_t_capacity', + 'udtmembervec_template_t_clear', + 'udtmembervec_template_t_empty', + 'udtmembervec_template_t_end', + 'udtmembervec_template_t_end__SWIG_0', + 'udtmembervec_template_t_end__SWIG_1', + 'udtmembervec_template_t_erase', + 'udtmembervec_template_t_erase__SWIG_0', + 'udtmembervec_template_t_erase__SWIG_1', + 'udtmembervec_template_t_extract', + 'udtmembervec_template_t_find', + 'udtmembervec_template_t_find__SWIG_0', + 'udtmembervec_template_t_find__SWIG_1', + 'udtmembervec_template_t_grow', + 'udtmembervec_template_t_has', + 'udtmembervec_template_t_inject', + 'udtmembervec_template_t_insert', + 'udtmembervec_template_t_pop_back', + 'udtmembervec_template_t_push_back', + 'udtmembervec_template_t_push_back__SWIG_0', + 'udtmembervec_template_t_push_back__SWIG_1', + 'udtmembervec_template_t_qclear', + 'udtmembervec_template_t_reserve', + 'udtmembervec_template_t_resize', + 'udtmembervec_template_t_resize__SWIG_0', + 'udtmembervec_template_t_resize__SWIG_1', + 'udtmembervec_template_t_size', + 'udtmembervec_template_t_swap', + 'udtmembervec_template_t_truncate', 'ui_load_new_file', 'ui_run_debugger', 'ui_stroff_applicator_t_apply', @@ -11304,6 +11664,7 @@ 'unregister_custom_data_format', 'unregister_custom_data_type', 'unregister_timer', + 'upd_abits', 'update_action_checkable', 'update_action_checked', 'update_action_icon', @@ -11318,6 +11679,7 @@ 'update_func', 'update_hidden_range', 'update_segm', + 'use_golang_cc', 'use_mapping', 'user_cancelled', 'user_cmts_begin', @@ -11459,6 +11821,7 @@ 'user_unions_size', 'user_unions_t_at', 'user_unions_t_size', + 'uses_aflag_modsp', 'uses_modsp', 'uval_array___getitem__', 'uval_array___setitem__', @@ -11579,6 +11942,7 @@ 'var_ref_t___lt__', 'var_ref_t___ne__', 'var_ref_t_compare', + 'var_ref_t_getv', 'var_ref_t_idx_get', 'var_ref_t_idx_set', 'var_ref_t_mba_get', diff --git a/api_contents3.txt b/api_contents3.txt index e175ae6..4501204 100644 --- a/api_contents3.txt +++ b/api_contents3.txt @@ -22,6 +22,7 @@ 'DBG_Hooks_dbg_trace', 'DBG_Hooks_hook', 'DBG_Hooks_unhook', + 'Hexrays_Hooks_build_callinfo', 'Hexrays_Hooks_close_pseudocode', 'Hexrays_Hooks_cmt_changed', 'Hexrays_Hooks_combine', @@ -95,6 +96,7 @@ 'IDB_Hooks_dirtree_rank', 'IDB_Hooks_dirtree_rmdir', 'IDB_Hooks_dirtree_rminode', + 'IDB_Hooks_dirtree_segm_moved', 'IDB_Hooks_enum_bf_changed', 'IDB_Hooks_enum_cmt_changed', 'IDB_Hooks_enum_created', @@ -188,6 +190,7 @@ 'IDP_Hooks_ev_coagulate_dref', 'IDP_Hooks_ev_create_flat_group', 'IDP_Hooks_ev_create_func_frame', + 'IDP_Hooks_ev_create_merge_handlers', 'IDP_Hooks_ev_create_switch_xrefs', 'IDP_Hooks_ev_creating_segm', 'IDP_Hooks_ev_decorate_name', @@ -233,6 +236,7 @@ 'IDP_Hooks_ev_is_basic_block_end', 'IDP_Hooks_ev_is_call_insn', 'IDP_Hooks_ev_is_cond_insn', + 'IDP_Hooks_ev_is_control_flow_guard', 'IDP_Hooks_ev_is_far_jump', 'IDP_Hooks_ev_is_indirect_jump', 'IDP_Hooks_ev_is_insn_table_jump', @@ -277,6 +281,7 @@ 'IDP_Hooks_ev_term', 'IDP_Hooks_ev_treat_hindering_item', 'IDP_Hooks_ev_undefine', + 'IDP_Hooks_ev_update_call_stack', 'IDP_Hooks_ev_use_arg_types', 'IDP_Hooks_ev_use_regarg_type', 'IDP_Hooks_ev_use_stkarg_type', @@ -300,6 +305,7 @@ 'UI_Hooks_database_closed', 'UI_Hooks_database_inited', 'UI_Hooks_debugger_menu_change', + 'UI_Hooks_desktop_applied', 'UI_Hooks_destroying_plugmod', 'UI_Hooks_destroying_procmod', 'UI_Hooks_finish_populating_widget_popup', @@ -364,8 +370,35 @@ '_ll_make_num', '_ll_make_ref', '_ll_new_block', + 'abstract_graph_t_callback_ud_get', + 'abstract_graph_t_callback_ud_set', + 'abstract_graph_t_circle_center_get', + 'abstract_graph_t_circle_center_set', + 'abstract_graph_t_circle_radius_get', + 'abstract_graph_t_circle_radius_set', + 'abstract_graph_t_create_circle_layout', + 'abstract_graph_t_create_tree_layout', + 'abstract_graph_t_current_layout_get', + 'abstract_graph_t_current_layout_set', + 'abstract_graph_t_get_edge', + 'abstract_graph_t_grcall', + 'abstract_graph_t_grcall__varargs__', + 'abstract_graph_t_nrect', + 'abstract_graph_t_rect_edges_made_get', + 'abstract_graph_t_rect_edges_made_set', + 'abstract_graph_t_set_callback', + 'abstract_graph_t_title_get', + 'abstract_graph_t_title_set', 'accepts_small_udts', 'accepts_udts', + 'action_ctx_base_cur_sel_t__from_get', + 'action_ctx_base_cur_sel_t__from_set', + 'action_ctx_base_cur_sel_t_reset', + 'action_ctx_base_cur_sel_t_to_get', + 'action_ctx_base_cur_sel_t_to_set', + 'action_ctx_base_source_t_chooser_get', + 'action_ctx_base_source_t_chooser_set', + 'action_ctx_base_source_t_reset', 'action_ctx_base_t__get_form', 'action_ctx_base_t__get_form_title', 'action_ctx_base_t__get_form_type', @@ -387,6 +420,8 @@ 'action_ctx_base_t_cur_func_set', 'action_ctx_base_t_cur_seg_get', 'action_ctx_base_t_cur_seg_set', + 'action_ctx_base_t_cur_sel_get', + 'action_ctx_base_t_cur_sel_set', 'action_ctx_base_t_cur_strmem_get', 'action_ctx_base_t_cur_strmem_set', 'action_ctx_base_t_cur_struc_get', @@ -403,6 +438,8 @@ 'action_ctx_base_t_regname_get', 'action_ctx_base_t_regname_set', 'action_ctx_base_t_reset', + 'action_ctx_base_t_source_get', + 'action_ctx_base_t_source_set', 'action_ctx_base_t_widget_get', 'action_ctx_base_t_widget_set', 'action_ctx_base_t_widget_title_get', @@ -542,6 +579,7 @@ 'argloc_t_get_rrel__SWIG_1', 'argloc_t_has_reg', 'argloc_t_has_stkoff', + 'argloc_t_in_stack', 'argloc_t_is_badloc', 'argloc_t_is_custom', 'argloc_t_is_ea', @@ -904,6 +942,8 @@ 'begin_type_updating', 'bin_flag', 'bin_search', + 'bin_search__SWIG_0', + 'bin_search__SWIG_1', 'bit_bound_t_nbits_get', 'bit_bound_t_nbits_set', 'bit_bound_t_sbits_get', @@ -1052,6 +1092,7 @@ 'bookmarks_t_find_index', 'bookmarks_t_get', 'bookmarks_t_get_desc', + 'bookmarks_t_get_dirtree_id', 'bookmarks_t_mark', 'bookmarks_t_size', 'boolvec_t___eq__', @@ -1269,46 +1310,46 @@ 'call_stack_info_t_funcea_set', 'call_stack_info_t_funcok_get', 'call_stack_info_t_funcok_set', - 'call_stack_t___eq__', - 'call_stack_t___getitem__', - 'call_stack_t___len__', - 'call_stack_t___ne__', - 'call_stack_t___setitem__', - 'call_stack_t__del', - 'call_stack_t_add_unique', - 'call_stack_t_at', - 'call_stack_t_begin', - 'call_stack_t_begin__SWIG_0', - 'call_stack_t_begin__SWIG_1', - 'call_stack_t_capacity', - 'call_stack_t_clear', - 'call_stack_t_empty', - 'call_stack_t_end', - 'call_stack_t_end__SWIG_0', - 'call_stack_t_end__SWIG_1', - 'call_stack_t_erase', - 'call_stack_t_erase__SWIG_0', - 'call_stack_t_erase__SWIG_1', - 'call_stack_t_extract', - 'call_stack_t_find', - 'call_stack_t_find__SWIG_0', - 'call_stack_t_find__SWIG_1', - 'call_stack_t_grow', - 'call_stack_t_has', - 'call_stack_t_inject', - 'call_stack_t_insert', - 'call_stack_t_pop_back', - 'call_stack_t_push_back', - 'call_stack_t_push_back__SWIG_0', - 'call_stack_t_push_back__SWIG_1', - 'call_stack_t_qclear', - 'call_stack_t_reserve', - 'call_stack_t_resize', - 'call_stack_t_resize__SWIG_0', - 'call_stack_t_resize__SWIG_1', - 'call_stack_t_size', - 'call_stack_t_swap', - 'call_stack_t_truncate', + 'call_stack_info_vec_t___eq__', + 'call_stack_info_vec_t___getitem__', + 'call_stack_info_vec_t___len__', + 'call_stack_info_vec_t___ne__', + 'call_stack_info_vec_t___setitem__', + 'call_stack_info_vec_t__del', + 'call_stack_info_vec_t_add_unique', + 'call_stack_info_vec_t_at', + 'call_stack_info_vec_t_begin', + 'call_stack_info_vec_t_begin__SWIG_0', + 'call_stack_info_vec_t_begin__SWIG_1', + 'call_stack_info_vec_t_capacity', + 'call_stack_info_vec_t_clear', + 'call_stack_info_vec_t_empty', + 'call_stack_info_vec_t_end', + 'call_stack_info_vec_t_end__SWIG_0', + 'call_stack_info_vec_t_end__SWIG_1', + 'call_stack_info_vec_t_erase', + 'call_stack_info_vec_t_erase__SWIG_0', + 'call_stack_info_vec_t_erase__SWIG_1', + 'call_stack_info_vec_t_extract', + 'call_stack_info_vec_t_find', + 'call_stack_info_vec_t_find__SWIG_0', + 'call_stack_info_vec_t_find__SWIG_1', + 'call_stack_info_vec_t_grow', + 'call_stack_info_vec_t_has', + 'call_stack_info_vec_t_inject', + 'call_stack_info_vec_t_insert', + 'call_stack_info_vec_t_pop_back', + 'call_stack_info_vec_t_push_back', + 'call_stack_info_vec_t_push_back__SWIG_0', + 'call_stack_info_vec_t_push_back__SWIG_1', + 'call_stack_info_vec_t_qclear', + 'call_stack_info_vec_t_reserve', + 'call_stack_info_vec_t_resize', + 'call_stack_info_vec_t_resize__SWIG_0', + 'call_stack_info_vec_t_resize__SWIG_1', + 'call_stack_info_vec_t_size', + 'call_stack_info_vec_t_swap', + 'call_stack_info_vec_t_truncate', 'callregs_t_by_slots', 'callregs_t_fpregs_get', 'callregs_t_fpregs_set', @@ -1329,6 +1370,8 @@ 'can_exc_continue', 'cancel_exec_request', 'cancel_thread_exec_requests', + 'cancellable_graph_t_cancelled_get', + 'cancellable_graph_t_cancelled_set', 'carg_t___eq__', 'carg_t___ge__', 'carg_t___gt__', @@ -1832,6 +1875,43 @@ 'choose_til', 'choose_trace_file', 'choose_xref', + 'chooser_base_t_ask_item_attrs', + 'chooser_base_t_can_del', + 'chooser_base_t_can_edit', + 'chooser_base_t_can_filter', + 'chooser_base_t_can_ins', + 'chooser_base_t_can_refresh', + 'chooser_base_t_can_sort', + 'chooser_base_t_columns_get', + 'chooser_base_t_deflt_col_get', + 'chooser_base_t_get_builtin_number', + 'chooser_base_t_get_count', + 'chooser_base_t_get_ea', + 'chooser_base_t_get_quick_filter_initial_mode', + 'chooser_base_t_get_row', + 'chooser_base_t_has_diff_capability', + 'chooser_base_t_has_dirtree', + 'chooser_base_t_header_get', + 'chooser_base_t_height_get', + 'chooser_base_t_icon_get', + 'chooser_base_t_is_force_default', + 'chooser_base_t_is_modal', + 'chooser_base_t_is_multi', + 'chooser_base_t_is_noidb', + 'chooser_base_t_is_quick_filter_visible_initially', + 'chooser_base_t_is_same', + 'chooser_base_t_is_status_bar_hidden', + 'chooser_base_t_popup_allowed', + 'chooser_base_t_popup_names_get', + 'chooser_base_t_should_rename_trigger_edit', + 'chooser_base_t_should_restore_geometry', + 'chooser_base_t_title_get', + 'chooser_base_t_width_get', + 'chooser_base_t_widths_get', + 'chooser_base_t_x0_get', + 'chooser_base_t_x1_get', + 'chooser_base_t_y0_get', + 'chooser_base_t_y1_get', 'chooser_item_attrs_t_color_get', 'chooser_item_attrs_t_color_set', 'chooser_item_attrs_t_flags_get', @@ -2047,6 +2127,7 @@ 'codegen_t_ii_set', 'codegen_t_insn_get', 'codegen_t_insn_set', + 'codegen_t_load_effective_address', 'codegen_t_load_operand', 'codegen_t_mb_get', 'codegen_t_mb_set', @@ -2054,12 +2135,65 @@ 'codegen_t_mba_set', 'codegen_t_microgen_completed', 'codegen_t_prepare_gen_micro', + 'codegen_t_store_operand', 'collect_stack_trace', 'compact_til', 'compare_tinfo', 'compile_idc_file', 'compile_idc_snippet', 'compile_idc_text', + 'compiled_binpat_t___eq__', + 'compiled_binpat_t___ne__', + 'compiled_binpat_t_all_bytes_defined', + 'compiled_binpat_t_bytes_get', + 'compiled_binpat_t_bytes_set', + 'compiled_binpat_t_encidx_get', + 'compiled_binpat_t_encidx_set', + 'compiled_binpat_t_mask_get', + 'compiled_binpat_t_mask_set', + 'compiled_binpat_t_qclear', + 'compiled_binpat_t_strlits_get', + 'compiled_binpat_t_strlits_set', + 'compiled_binpat_vec_t___eq__', + 'compiled_binpat_vec_t___getitem__', + 'compiled_binpat_vec_t___len__', + 'compiled_binpat_vec_t___ne__', + 'compiled_binpat_vec_t___setitem__', + 'compiled_binpat_vec_t__del', + 'compiled_binpat_vec_t_add_unique', + 'compiled_binpat_vec_t_at', + 'compiled_binpat_vec_t_begin', + 'compiled_binpat_vec_t_begin__SWIG_0', + 'compiled_binpat_vec_t_begin__SWIG_1', + 'compiled_binpat_vec_t_capacity', + 'compiled_binpat_vec_t_clear', + 'compiled_binpat_vec_t_empty', + 'compiled_binpat_vec_t_end', + 'compiled_binpat_vec_t_end__SWIG_0', + 'compiled_binpat_vec_t_end__SWIG_1', + 'compiled_binpat_vec_t_erase', + 'compiled_binpat_vec_t_erase__SWIG_0', + 'compiled_binpat_vec_t_erase__SWIG_1', + 'compiled_binpat_vec_t_extract', + 'compiled_binpat_vec_t_find', + 'compiled_binpat_vec_t_find__SWIG_0', + 'compiled_binpat_vec_t_find__SWIG_1', + 'compiled_binpat_vec_t_grow', + 'compiled_binpat_vec_t_has', + 'compiled_binpat_vec_t_inject', + 'compiled_binpat_vec_t_insert', + 'compiled_binpat_vec_t_pop_back', + 'compiled_binpat_vec_t_push_back', + 'compiled_binpat_vec_t_push_back__SWIG_0', + 'compiled_binpat_vec_t_push_back__SWIG_1', + 'compiled_binpat_vec_t_qclear', + 'compiled_binpat_vec_t_reserve', + 'compiled_binpat_vec_t_resize', + 'compiled_binpat_vec_t_resize__SWIG_0', + 'compiled_binpat_vec_t_resize__SWIG_1', + 'compiled_binpat_vec_t_size', + 'compiled_binpat_vec_t_swap', + 'compiled_binpat_vec_t_truncate', 'compiler_info_t_cm_get', 'compiler_info_t_cm_set', 'compiler_info_t_defalign_get', @@ -2096,6 +2230,7 @@ 'create_align', 'create_byte', 'create_bytearray_linput', + 'create_cfunc', 'create_code_viewer', 'create_custdata', 'create_data', @@ -2429,6 +2564,7 @@ 'del_tinfo_attr', 'del_tryblks', 'del_value', + 'del_vftable_ea', 'del_virt_module', 'delay_slot_insn', 'delete_DBG_Hooks', @@ -2442,6 +2578,9 @@ 'delete___qsemaphore_t', 'delete___qthread_t', 'delete___qtimer_t', + 'delete_abstract_graph_t', + 'delete_action_ctx_base_cur_sel_t', + 'delete_action_ctx_base_source_t', 'delete_action_ctx_base_t', 'delete_action_desc_t', 'delete_addon_info_t', @@ -2472,8 +2611,10 @@ 'delete_bpt_vec_t', 'delete_bptaddr_t', 'delete_call_stack_info_t', + 'delete_call_stack_info_vec_t', 'delete_call_stack_t', 'delete_callregs_t', + 'delete_cancellable_graph_t', 'delete_carg_t', 'delete_carglist_t', 'delete_cases_and_targets_t', @@ -2508,6 +2649,8 @@ 'delete_cloop_t', 'delete_cnumber_t', 'delete_codegen_t', + 'delete_compiled_binpat_t', + 'delete_compiled_binpat_vec_t', 'delete_compiler_info_t', 'delete_const_aloc_visitor_t', 'delete_creturn_t', @@ -2567,8 +2710,9 @@ 'delete_file_enumerator_t', 'delete_fixup_data_t', 'delete_fixup_info_t', - 'delete_fnum_array', 'delete_fnumber_t', + 'delete_fpvalue_shorts_array_t', + 'delete_fpvalue_t', 'delete_frame_desc_t', 'delete_frame_mem_t', 'delete_frame_mems_t', @@ -2590,6 +2734,7 @@ 'delete_funcarg_t', 'delete_funcargvec_t', 'delete_gco_info_t', + 'delete_gdl_graph_t', 'delete_generic_linput_t', 'delete_graph_chains_t', 'delete_graph_item_t', @@ -2631,6 +2776,7 @@ 'delete_ivlset_t', 'delete_line_rendering_output_entries_refs_t', 'delete_line_rendering_output_entry_t', + 'delete_linearray_t', 'delete_lines_rendering_input_t', 'delete_lines_rendering_output_t', 'delete_loader_input_t', @@ -2693,7 +2839,6 @@ 'delete_op_t', 'delete_operand_locator_t', 'delete_operands_array', - 'delete_operator_info_t', 'delete_opinfo_t', 'delete_oprepr_t', 'delete_optblock_t', @@ -2883,6 +3028,7 @@ 'delete_xrefblk_t', 'delete_xreflist_entry_t', 'delete_xreflist_t', + 'delinf', 'demangle_name', 'deref_idcv', 'deref_ptr', @@ -2947,7 +3093,6 @@ 'dirspec_t_get_attrs', 'dirspec_t_get_inode', 'dirspec_t_get_name', - 'dirspec_t_get_size', 'dirspec_t_nodename_get', 'dirspec_t_nodename_set', 'dirspec_t_rename_inode', @@ -3019,9 +3164,9 @@ 'dirtree_t_get_abspath', 'dirtree_t_get_abspath__SWIG_0', 'dirtree_t_get_abspath__SWIG_1', + 'dirtree_t_get_dir_size', 'dirtree_t_get_entry_attrs', 'dirtree_t_get_entry_name', - 'dirtree_t_get_entry_size', 'dirtree_t_get_nodename', 'dirtree_t_get_parent_cursor', 'dirtree_t_get_rank', @@ -3104,8 +3249,10 @@ 'disown_IDP_Hooks', 'disown_UI_Hooks', 'disown_View_Hooks', + 'disown_abstract_graph_t', 'disown_aloc_visitor_t', 'disown_argtinfo_helper_t', + 'disown_cancellable_graph_t', 'disown_cfunc_parentee_t', 'disown_chain_visitor_t', 'disown_choose_ioport_parser_t', @@ -3116,6 +3263,7 @@ 'disown_enum_member_visitor_t', 'disown_file_enumerator_t', 'disown_func_md_diff_handler_t', + 'disown_gdl_graph_t', 'disown_graph_node_visitor_t', 'disown_graph_path_visitor_t', 'disown_graph_visitor_t', @@ -3126,7 +3274,6 @@ 'disown_minsn_visitor_t', 'disown_mlist_mop_visitor_t', 'disown_mop_visitor_t', - 'disown_mutable_graph_t', 'disown_optblock_t', 'disown_optinsn_t', 'disown_predicate_t', @@ -3246,6 +3393,7 @@ 'eamap_size', 'eamap_t_at', 'eamap_t_size', + 'ecleaz', 'eclose', 'edge_info_t_color_get', 'edge_info_t_color_set', @@ -3593,15 +3741,8 @@ 'float_flag', 'flt_flag', 'flush_buffers', - 'fnum_array___getitem__', - 'fnum_array___len__', - 'fnum_array___setitem__', - 'fnum_array__get_bytes', - 'fnum_array__set_bytes', - 'fnum_array_data_get', 'fnumber_t___eq__', 'fnumber_t___ge__', - 'fnumber_t___get_fnum', 'fnumber_t___gt__', 'fnumber_t___le__', 'fnumber_t___lt__', @@ -3635,6 +3776,56 @@ 'formchgcbfa_set_field_value', 'formchgcbfa_set_focused_field', 'formchgcbfa_show_field', + 'fpvalue_shorts_array_t___getitem__', + 'fpvalue_shorts_array_t___len__', + 'fpvalue_shorts_array_t___setitem__', + 'fpvalue_shorts_array_t__get_bytes', + 'fpvalue_shorts_array_t__set_bytes', + 'fpvalue_shorts_array_t_data_get', + 'fpvalue_t___add__', + 'fpvalue_t___eq__', + 'fpvalue_t___ge__', + 'fpvalue_t___gt__', + 'fpvalue_t___le__', + 'fpvalue_t___lt__', + 'fpvalue_t___mul__', + 'fpvalue_t___ne__', + 'fpvalue_t___str__', + 'fpvalue_t___sub__', + 'fpvalue_t___truediv__', + 'fpvalue_t__get_10bytes', + 'fpvalue_t__get_bytes', + 'fpvalue_t__get_float', + 'fpvalue_t__get_shorts', + 'fpvalue_t__set_10bytes', + 'fpvalue_t__set_bytes', + 'fpvalue_t__set_float', + 'fpvalue_t_assign', + 'fpvalue_t_clear', + 'fpvalue_t_compare', + 'fpvalue_t_eabs', + 'fpvalue_t_fadd', + 'fpvalue_t_fdiv', + 'fpvalue_t_fmul', + 'fpvalue_t_from_10bytes', + 'fpvalue_t_from_12bytes', + 'fpvalue_t_from_int64', + 'fpvalue_t_from_str', + 'fpvalue_t_from_sval', + 'fpvalue_t_from_uint64', + 'fpvalue_t_fsub', + 'fpvalue_t_get_kind', + 'fpvalue_t_is_negative', + 'fpvalue_t_mul_pow2', + 'fpvalue_t_negate', + 'fpvalue_t_to_10bytes', + 'fpvalue_t_to_12bytes', + 'fpvalue_t_to_int64', + 'fpvalue_t_to_str', + 'fpvalue_t_to_sval', + 'fpvalue_t_to_uint64', + 'fpvalue_t_w_get', + 'fpvalue_t_w_set', 'frame_desc_t_argsize_get', 'frame_desc_t_argsize_set', 'frame_desc_t_frregs_get', @@ -3696,6 +3887,8 @@ 'free_chunk', 'free_custom_icon', 'free_idcv', + 'free_regarg', + 'free_regvar', 'free_til', 'func_contains', 'func_does_return', @@ -3949,6 +4142,7 @@ 'func_type_data_t_flags_set', 'func_type_data_t_get_call_method', 'func_type_data_t_guess_cc', + 'func_type_data_t_is_golang_cc', 'func_type_data_t_is_high', 'func_type_data_t_is_noret', 'func_type_data_t_is_pure', @@ -4016,6 +4210,7 @@ 'funcargvec_t_truncate', 'gcc_layout', 'gco_info_t_append_to_list', + 'gco_info_t_cvt_to_ivl', 'gco_info_t_flags_get', 'gco_info_t_flags_set', 'gco_info_t_is_def', @@ -4025,6 +4220,28 @@ 'gco_info_t_name_set', 'gco_info_t_size_get', 'gco_info_t_size_set', + 'gdl_graph_t_begin', + 'gdl_graph_t_edge', + 'gdl_graph_t_empty', + 'gdl_graph_t_end', + 'gdl_graph_t_entry', + 'gdl_graph_t_exists', + 'gdl_graph_t_exit', + 'gdl_graph_t_front', + 'gdl_graph_t_get_edge_color', + 'gdl_graph_t_get_node_color', + 'gdl_graph_t_get_node_label', + 'gdl_graph_t_nedge', + 'gdl_graph_t_node_qty', + 'gdl_graph_t_npred', + 'gdl_graph_t_nsucc', + 'gdl_graph_t_pred', + 'gdl_graph_t_print_edge', + 'gdl_graph_t_print_graph_attributes', + 'gdl_graph_t_print_node', + 'gdl_graph_t_print_node_attributes', + 'gdl_graph_t_size', + 'gdl_graph_t_succ', 'gen_complex_call_chart', 'gen_decorate_name', 'gen_disasm_text', @@ -4041,6 +4258,7 @@ 'gen_use_arg_tinfos2', 'generate_disasm_line', 'generate_disassembly', + 'generate_til_with_parser', 'generic_linput_t_blocksize_get', 'generic_linput_t_blocksize_set', 'generic_linput_t_filesize_get', @@ -4124,6 +4342,8 @@ 'get_data_elsize', 'get_data_value', 'get_db_byte', + 'get_dbctx_id', + 'get_dbctx_qty', 'get_dbg_byte', 'get_dbg_memory_info', 'get_dbg_reg_info', @@ -4146,6 +4366,7 @@ 'get_ea_name', 'get_ea_viewer_history_info', 'get_effective_spd', + 'get_elapsed_secs', 'get_elf_debug_file_directory', 'get_encoding_bpu', 'get_encoding_name', @@ -4248,6 +4469,7 @@ 'get_hidden_range_num', 'get_hidden_range_qty', 'get_highlight', + 'get_ida_notepad_text', 'get_ida_subdirs', 'get_idainfo_by_type', 'get_idasgn_desc', @@ -4255,6 +4477,8 @@ 'get_idasgn_qty', 'get_idasgn_title', 'get_idati', + 'get_idb_ctime', + 'get_idb_nopens', 'get_idb_notifier_addr', 'get_idb_notifier_ud_addr', 'get_idc_filename', @@ -4271,6 +4495,10 @@ 'get_import_module_qty', 'get_ind_purged', 'get_inf_structure', + 'get_initial_ida_version', + 'get_initial_ida_version__SWIG_0', + 'get_initial_ida_version__SWIG_1', + 'get_innermost_member', 'get_input_file_path', 'get_insn_tev_reg_mem', 'get_insn_tev_reg_result', @@ -4292,6 +4520,7 @@ 'get_last_serial_enum_member', 'get_last_struc_idx', 'get_linput_type', + 'get_loader_format_name', 'get_local_var', 'get_local_vars', 'get_long_name', @@ -4440,6 +4669,7 @@ 'get_segment_translations', 'get_selector_qty', 'get_server_connection', + 'get_server_connection2', 'get_short_name', 'get_signed_mcode', 'get_source_linnum', @@ -4449,6 +4679,8 @@ 'get_spd', 'get_special_folder', 'get_sptr', + 'get_srcdbg_paths', + 'get_srcdbg_undesired_paths', 'get_srcinfo_provider', 'get_sreg', 'get_sreg_range', @@ -4464,6 +4696,7 @@ 'get_str_type', 'get_str_type_code', 'get_str_type_prefix_length', + 'get_strid', 'get_strlist_item', 'get_strlist_options', 'get_strlist_qty', @@ -4516,6 +4749,8 @@ 'get_unsigned_mcode', 'get_user_idadir', 'get_user_strlist_options', + 'get_vftable_ea', + 'get_vftable_ordinal', 'get_view_renderer_type', 'get_viewer_graph', 'get_viewer_place_type', @@ -4533,6 +4768,7 @@ 'get_zero_ranges', 'getb_reginsn', 'getf_reginsn', + 'getinf_str', 'getn_bpt', 'getn_enum', 'getn_fchunk', @@ -4592,10 +4828,14 @@ 'group_crinfo_t_text_get', 'group_crinfo_t_text_set', 'guess_func_cc', - 'guess_table_address', - 'guess_table_size', 'guess_tinfo', 'handle_debug_event', + 'handle_fixups_in_macro', + 'has_aflag_linnum', + 'has_aflag_lname', + 'has_aflag_ti', + 'has_aflag_ti0', + 'has_aflag_ti1', 'has_any_name', 'has_auto_name', 'has_backup_metadata', @@ -4846,7 +5086,6 @@ 'idc_parse_types', 'idc_print_type', 'idc_set_local_type', - 'idc_value_t___get_e', 'idc_value_t__create_empty_string', 'idc_value_t_c_str', 'idc_value_t_clear', @@ -4974,6 +5213,7 @@ 'inf_get_af2_low', 'inf_get_af_high', 'inf_get_af_low', + 'inf_get_app_bitness', 'inf_get_appcall_options', 'inf_get_apptype', 'inf_get_asmtype', @@ -5051,7 +5291,9 @@ 'inf_hide_libfuncs', 'inf_huge_arg_align', 'inf_inc_database_change_count', - 'inf_is_32bit', + 'inf_is_16bit', + 'inf_is_32bit_exactly', + 'inf_is_32bit_or_higher', 'inf_is_64bit', 'inf_is_auto_enabled', 'inf_is_be', @@ -5509,6 +5751,35 @@ 'is__invsign1', 'is_action_enabled', 'is_additive', + 'is_aflag__bnot0', + 'is_aflag__bnot1', + 'is_aflag__invsign0', + 'is_aflag__invsign1', + 'is_aflag_align_flow', + 'is_aflag_colored_item', + 'is_aflag_data_guessed_by_hexrays', + 'is_aflag_fixed_spd', + 'is_aflag_func_guessed_by_hexrays', + 'is_aflag_hidden_border', + 'is_aflag_hidden_item', + 'is_aflag_libitem', + 'is_aflag_lzero0', + 'is_aflag_lzero1', + 'is_aflag_manual_insn', + 'is_aflag_noret', + 'is_aflag_notcode', + 'is_aflag_notproc', + 'is_aflag_public_name', + 'is_aflag_retfp', + 'is_aflag_terse_struc', + 'is_aflag_tilcmt', + 'is_aflag_type_determined_by_hexrays', + 'is_aflag_type_guessed_by_hexrays', + 'is_aflag_type_guessed_by_ida', + 'is_aflag_usersp', + 'is_aflag_userti', + 'is_aflag_weak_name', + 'is_aflag_zstroff', 'is_align', 'is_align_flow', 'is_align_insn', @@ -5545,6 +5816,7 @@ 'is_custom', 'is_data', 'is_data_far', + 'is_data_guessed_by_hexrays', 'is_database_flag', 'is_debugger_busy', 'is_debugger_memory', @@ -5575,6 +5847,7 @@ 'is_forced_operand', 'is_func', 'is_func_entry', + 'is_func_guessed_by_hexrays', 'is_func_locked', 'is_func_tail', 'is_func_trace_enabled', @@ -5583,10 +5856,12 @@ 'is_gcc32', 'is_gcc64', 'is_ghost_enum', + 'is_golang_cc', 'is_head', 'is_hidden_border', 'is_hidden_item', 'is_idaq', + 'is_idaview', 'is_ident', 'is_ident_cp', 'is_in_nlist', @@ -5703,6 +5978,7 @@ 'is_type_complex', 'is_type_const', 'is_type_correct', + 'is_type_determined_by_hexrays', 'is_type_double', 'is_type_enum', 'is_type_ext_arithmetic', @@ -5710,6 +5986,8 @@ 'is_type_float', 'is_type_floating', 'is_type_func', + 'is_type_guessed_by_hexrays', + 'is_type_guessed_by_ida', 'is_type_int', 'is_type_int128', 'is_type_int16', @@ -5815,6 +6093,7 @@ 'jumpto', 'jumpto__SWIG_0', 'jumpto__SWIG_1', + 'l_compare2', 'last_idcv_attr', 'leading_zero_important', 'lexcompare', @@ -5874,6 +6153,18 @@ 'line_rendering_output_entry_t_line_set', 'line_rendering_output_entry_t_nchars_get', 'line_rendering_output_entry_t_nchars_set', + 'linearray_t_beginning', + 'linearray_t_down', + 'linearray_t_ending', + 'linearray_t_get_bg_color', + 'linearray_t_get_dlnnum', + 'linearray_t_get_linecnt', + 'linearray_t_get_pfx_color', + 'linearray_t_get_place', + 'linearray_t_set_place', + 'linearray_t_set_userdata', + 'linearray_t_up', + 'linearray_t_userdata', 'lines_rendering_input_t_cb_get', 'lines_rendering_input_t_cb_set', 'lines_rendering_input_t_sections_lines_get', @@ -5925,6 +6216,7 @@ 'loader_t_flags_set', 'loader_t_version_get', 'loader_t_version_set', + 'locate_lvar', 'lochist_entry_t_acquire_place', 'lochist_entry_t_is_valid', 'lochist_entry_t_place', @@ -6111,6 +6403,7 @@ 'lvar_saved_info_t_clr_forced_lvar', 'lvar_saved_info_t_clr_nomap_lvar', 'lvar_saved_info_t_clr_noptr_lvar', + 'lvar_saved_info_t_clr_unused_lvar', 'lvar_saved_info_t_cmt_get', 'lvar_saved_info_t_cmt_set', 'lvar_saved_info_t_flags_get', @@ -6120,6 +6413,7 @@ 'lvar_saved_info_t_is_kept', 'lvar_saved_info_t_is_nomap_lvar', 'lvar_saved_info_t_is_noptr_lvar', + 'lvar_saved_info_t_is_unused_lvar', 'lvar_saved_info_t_ll_get', 'lvar_saved_info_t_ll_set', 'lvar_saved_info_t_name_get', @@ -6128,6 +6422,7 @@ 'lvar_saved_info_t_set_keep', 'lvar_saved_info_t_set_nomap_lvar', 'lvar_saved_info_t_set_noptr_lvar', + 'lvar_saved_info_t_set_unused_lvar', 'lvar_saved_info_t_size_get', 'lvar_saved_info_t_size_set', 'lvar_saved_info_t_type_get', @@ -6177,6 +6472,7 @@ 'lvar_t_clear_used', 'lvar_t_clr_arg_var', 'lvar_t_clr_automapped', + 'lvar_t_clr_decl_unused', 'lvar_t_clr_dummy_arg', 'lvar_t_clr_fake_var', 'lvar_t_clr_floating_var', @@ -6206,9 +6502,11 @@ 'lvar_t_has_user_info', 'lvar_t_has_user_name', 'lvar_t_has_user_type', + 'lvar_t_in_asm', 'lvar_t_is_aliasable', 'lvar_t_is_arg_var', 'lvar_t_is_automapped', + 'lvar_t_is_decl_unused', 'lvar_t_is_dummy_arg', 'lvar_t_is_fake_var', 'lvar_t_is_floating_var', @@ -6227,6 +6525,7 @@ 'lvar_t_name_set', 'lvar_t_set_arg_var', 'lvar_t_set_automapped', + 'lvar_t_set_decl_unused', 'lvar_t_set_dummy_arg', 'lvar_t_set_fake_var', 'lvar_t_set_final_lvar_type', @@ -6258,6 +6557,7 @@ 'lvar_t_width_get', 'lvar_t_width_set', 'lvar_uservec_t_clear', + 'lvar_uservec_t_empty', 'lvar_uservec_t_find_info', 'lvar_uservec_t_keep_info', 'lvar_uservec_t_lmaps_get', @@ -6352,7 +6652,10 @@ 'mba_t_consumed_argregs_get', 'mba_t_consumed_argregs_set', 'mba_t_copy_block', + 'mba_t_create_helper_call', 'mba_t_deleted_pairs', + 'mba_t_deprecated_idb_node_get', + 'mba_t_deprecated_idb_node_set', 'mba_t_deserialize', 'mba_t_display_numaddrs', 'mba_t_display_valnums', @@ -6404,9 +6707,8 @@ 'mba_t_has_bad_sp', 'mba_t_has_over_chains', 'mba_t_has_passregs', + 'mba_t_has_stack_retval', 'mba_t_idaloc2vd', - 'mba_t_idb_node_get', - 'mba_t_idb_node_set', 'mba_t_idb_spoiled_get', 'mba_t_idb_spoiled_set', 'mba_t_idb_type_get', @@ -6464,7 +6766,7 @@ 'mba_t_really_alloc', 'mba_t_regargs_is_not_aligned', 'mba_t_remove_block', - 'mba_t_remove_empty_blocks', + 'mba_t_remove_empty_and_unreachable_blocks', 'mba_t_reqmat_get', 'mba_t_reqmat_set', 'mba_t_restricted_memory_get', @@ -6478,6 +6780,7 @@ 'mba_t_save_snapshot', 'mba_t_saverest_done', 'mba_t_serialize', + 'mba_t_set_maturity', 'mba_t_set_mba_flags', 'mba_t_set_mba_flags2', 'mba_t_shadow_args_get', @@ -6613,6 +6916,8 @@ 'mcallarg_t_dstr', 'mcallarg_t_ea_get', 'mcallarg_t_ea_set', + 'mcallarg_t_flags_get', + 'mcallarg_t_flags_set', 'mcallarg_t_make_int', 'mcallarg_t_make_uint', 'mcallarg_t_name_get', @@ -7122,6 +7427,7 @@ 'mop_t_is_mob', 'mop_t_is_negative_constant', 'mop_t_is_one', + 'mop_t_is_pcval', 'mop_t_is_positive_constant', 'mop_t_is_reg', 'mop_t_is_reg__SWIG_0', @@ -7149,6 +7455,7 @@ 'mop_t_make_reg__SWIG_1', 'mop_t_make_reg_pair', 'mop_t_make_second_half', + 'mop_t_make_stkvar', 'mop_t_may_use_aliased_memory', 'mop_t_oprops_get', 'mop_t_oprops_set', @@ -7166,6 +7473,7 @@ 'mop_t_t_get', 'mop_t_t_set', 'mop_t_unsigned_value', + 'mop_t_update_numop_value', 'mop_t_valnum_get', 'mop_t_valnum_set', 'mop_t_value', @@ -7223,21 +7531,23 @@ 'msg_get_lines', 'msg_save', 'must_mcode_close_block', + 'mutable_graph_t_add_edge', + 'mutable_graph_t_add_node', 'mutable_graph_t_belongs_get', 'mutable_graph_t_belongs_set', 'mutable_graph_t_calc_group_ea', 'mutable_graph_t_change_group_visibility', - 'mutable_graph_t_clear', 'mutable_graph_t_create_digraph_layout', 'mutable_graph_t_create_group', 'mutable_graph_t_del_custom_layout', + 'mutable_graph_t_del_edge', + 'mutable_graph_t_del_node', 'mutable_graph_t_delete_group', 'mutable_graph_t_edges_get', 'mutable_graph_t_edges_set', 'mutable_graph_t_empty', 'mutable_graph_t_exists', 'mutable_graph_t_get_custom_layout', - 'mutable_graph_t_get_edge', 'mutable_graph_t_get_first_subgraph_node', 'mutable_graph_t_get_graph_groups', 'mutable_graph_t_get_next_subgraph_node', @@ -7261,9 +7571,6 @@ 'mutable_graph_t_nodes_get', 'mutable_graph_t_nodes_set', 'mutable_graph_t_npred', - 'mutable_graph_t_nrect', - 'mutable_graph_t_nrect__SWIG_0', - 'mutable_graph_t_nrect__SWIG_1', 'mutable_graph_t_nsucc', 'mutable_graph_t_org_preds_get', 'mutable_graph_t_org_preds_set', @@ -7273,12 +7580,17 @@ 'mutable_graph_t_preds_get', 'mutable_graph_t_preds_set', 'mutable_graph_t_predset', + 'mutable_graph_t_redo_layout', + 'mutable_graph_t_refresh', + 'mutable_graph_t_replace_edge', 'mutable_graph_t_reset', + 'mutable_graph_t_resize', 'mutable_graph_t_set_custom_layout', 'mutable_graph_t_set_deleted_node', 'mutable_graph_t_set_edge', 'mutable_graph_t_set_graph_groups', 'mutable_graph_t_set_node_group', + 'mutable_graph_t_set_nrect', 'mutable_graph_t_size', 'mutable_graph_t_succ', 'mutable_graph_t_succs_get', @@ -7350,6 +7662,7 @@ 'netnode_easet_idx', 'netnode_easet_idx8', 'netnode_end', + 'netnode_exist', 'netnode_get_name', 'netnode_getblob', 'netnode_getblob_ea', @@ -7429,6 +7742,9 @@ 'new___qsemaphore_t', 'new___qthread_t', 'new___qtimer_t', + 'new_abstract_graph_t', + 'new_action_ctx_base_cur_sel_t', + 'new_action_ctx_base_source_t', 'new_action_ctx_base_t', 'new_action_desc_t', 'new_addon_info_t', @@ -7479,12 +7795,14 @@ 'new_bpt_vec_t__SWIG_1', 'new_bptaddr_t', 'new_call_stack_info_t', + 'new_call_stack_info_vec_t', + 'new_call_stack_info_vec_t__SWIG_0', + 'new_call_stack_info_vec_t__SWIG_1', 'new_call_stack_t', - 'new_call_stack_t__SWIG_0', - 'new_call_stack_t__SWIG_1', 'new_callregs_t', 'new_callregs_t__SWIG_0', 'new_callregs_t__SWIG_1', + 'new_cancellable_graph_t', 'new_carg_t', 'new_carglist_t', 'new_carglist_t__SWIG_0', @@ -7552,6 +7870,10 @@ 'new_cloop_t__SWIG_1', 'new_cloop_t__SWIG_2', 'new_cnumber_t', + 'new_compiled_binpat_t', + 'new_compiled_binpat_vec_t', + 'new_compiled_binpat_vec_t__SWIG_0', + 'new_compiled_binpat_vec_t__SWIG_1', 'new_compiler_info_t', 'new_const_aloc_visitor_t', 'new_creturn_t', @@ -7640,8 +7962,11 @@ 'new_fixup_data_t__SWIG_0', 'new_fixup_data_t__SWIG_1', 'new_fixup_info_t', - 'new_fnum_array', 'new_fnumber_t', + 'new_fpvalue_shorts_array_t', + 'new_fpvalue_t', + 'new_fpvalue_t__SWIG_0', + 'new_fpvalue_t__SWIG_1', 'new_frame_desc_t', 'new_frame_mem_t', 'new_frame_mems_t', @@ -7681,6 +8006,7 @@ 'new_funcargvec_t__SWIG_0', 'new_funcargvec_t__SWIG_1', 'new_gco_info_t', + 'new_gdl_graph_t', 'new_graph_chains_t', 'new_graph_item_t', 'new_graph_location_info_t', @@ -7748,6 +8074,7 @@ 'new_line_rendering_output_entry_t', 'new_line_rendering_output_entry_t__SWIG_0', 'new_line_rendering_output_entry_t__SWIG_1', + 'new_linearray_t', 'new_lines_rendering_input_t', 'new_lines_rendering_output_t', 'new_loader_input_t', @@ -7842,7 +8169,6 @@ 'new_op_t', 'new_operand_locator_t', 'new_operands_array', - 'new_operator_info_t', 'new_opinfo_t', 'new_oprepr_t', 'new_optblock_t', @@ -7932,6 +8258,8 @@ 'new_reg_accesses_t', 'new_reg_info_t', 'new_regarg_t', + 'new_regarg_t__SWIG_0', + 'new_regarg_t__SWIG_1', 'new_reginfovec_t', 'new_reginfovec_t__SWIG_0', 'new_reginfovec_t__SWIG_1', @@ -7945,6 +8273,8 @@ 'new_regval_t__SWIG_0', 'new_regval_t__SWIG_1', 'new_regvar_t', + 'new_regvar_t__SWIG_0', + 'new_regvar_t__SWIG_1', 'new_renderer_info_pos_t', 'new_renderer_info_t', 'new_renderer_pos_info_t', @@ -8214,7 +8544,9 @@ 'node_layout_t_swap', 'node_layout_t_truncate', 'node_ordering_t_clear', + 'node_ordering_t_clr', 'node_ordering_t_node', + 'node_ordering_t_order', 'node_ordering_t_resize', 'node_ordering_t_set', 'node_ordering_t_size', @@ -8308,6 +8640,7 @@ 'op_uses_x', 'op_uses_y', 'op_uses_z', + 'open_bookmarks_window', 'open_bpts_window', 'open_calls_window', 'open_disasm_window', @@ -8354,16 +8687,6 @@ 'operands_array__get_bytes', 'operands_array__set_bytes', 'operands_array_data_get', - 'operator_info_t_fixtype_get', - 'operator_info_t_fixtype_set', - 'operator_info_t_flags_get', - 'operator_info_t_flags_set', - 'operator_info_t_precedence_get', - 'operator_info_t_precedence_set', - 'operator_info_t_text_get', - 'operator_info_t_text_set', - 'operator_info_t_valency_get', - 'operator_info_t_valency_set', 'opinfo_t_cd_get', 'opinfo_t_cd_set', 'opinfo_t_ec_get', @@ -8479,6 +8802,8 @@ 'outctx_t_procmod_set', 'outctx_t_retrieve_cmt', 'outctx_t_retrieve_name', + 'outctx_t_saved_immvals_get', + 'outctx_t_saved_immvals_set', 'outctx_t_set_bin_state', 'outctx_t_setup_outctx', 'outctx_t_wif_get', @@ -8489,10 +8814,13 @@ 'pack_object_to_bv', 'pack_object_to_idb', 'packreal_flag', + 'parse_binpat_str', 'parse_command_line3', 'parse_dbgopts', 'parse_decl', 'parse_decls', + 'parse_decls_for_srclang', + 'parse_decls_with_parser', 'parse_reg_name', 'parse_user_call', 'partial_type_num', @@ -8797,6 +9125,7 @@ 'put_qword', 'put_word', 'py_add_idc_func', + 'py_chooser_base_t_get_row', 'py_get_ask_form', 'py_get_call_idc_func', 'py_get_open_form', @@ -9320,6 +9649,7 @@ 'refinfo_t_type', 'refresh_chooser', 'refresh_choosers', + 'refresh_custom_viewer', 'refresh_debugger_memory', 'refresh_idaview', 'refresh_idaview_anyway', @@ -9413,6 +9743,7 @@ 'regarg_t_name_set', 'regarg_t_reg_get', 'regarg_t_reg_set', + 'regarg_t_swap', 'regarg_t_type_get', 'regarg_t_type_set', 'reginfovec_t___eq__', @@ -9541,6 +9872,7 @@ 'regvar_t_canon_set', 'regvar_t_cmt_get', 'regvar_t_cmt_set', + 'regvar_t_swap', 'regvar_t_user_get', 'regvar_t_user_set', 'reload_file', @@ -9556,6 +9888,7 @@ 'rename_bptgrp', 'rename_encoding', 'rename_entry', + 'rename_lvar', 'rename_regvar', 'renderer_info_pos_t___eq__', 'renderer_info_pos_t___ne__', @@ -9567,7 +9900,6 @@ 'renderer_info_pos_t_node_set', 'renderer_info_t___eq__', 'renderer_info_t___ne__', - 'renderer_info_t_clear', 'renderer_info_t_gli_get', 'renderer_info_t_gli_set', 'renderer_info_t_pos_get', @@ -9889,6 +10221,9 @@ 'segment_t_end_ea_set', 'segment_t_flags_get', 'segment_t_flags_set', + 'segment_t_is_16bit', + 'segment_t_is_32bit', + 'segment_t_is_64bit', 'segment_t_is_header_segm', 'segment_t_is_hidden_segtype', 'segment_t_is_loader_segm', @@ -9916,8 +10251,6 @@ 'segment_t_type_get', 'segment_t_type_set', 'segment_t_update', - 'segment_t_use32', - 'segment_t_use64', 'segtype', 'seh_t_clear', 'seh_t_filter_get', @@ -9934,6 +10267,8 @@ 'sel_pointer_cast', 'sel_pointer_frompointer', 'sel_pointer_value', + 'select_parser_by_name', + 'select_parser_by_srclang', 'select_thread', 'select_udt_by_offset', 'selection_item_t___eq__', @@ -9992,6 +10327,7 @@ 'set_cp_validity', 'set_custom_data_type_ids', 'set_custom_viewer_qt_aware', + 'set_data_guessed_by_hexrays', 'set_database_flag', 'set_debug_event_code', 'set_debug_name', @@ -10022,6 +10358,7 @@ 'set_frame_size', 'set_func_cmt', 'set_func_end', + 'set_func_guessed_by_hexrays', 'set_func_name_if_jumpfunc', 'set_func_start', 'set_func_trace_options', @@ -10034,6 +10371,7 @@ 'set_header_path', 'set_highlight', 'set_highlight_trace_options', + 'set_ida_notepad_text', 'set_ida_state', 'set_idcv_attr', 'set_idcv_slice', @@ -10043,6 +10381,7 @@ 'set_insn_trace_options', 'set_item_color', 'set_libitem', + 'set_loader_format_name', 'set_lzero', 'set_lzero0', 'set_lzero1', @@ -10065,6 +10404,7 @@ 'set_op_type', 'set_opinfo', 'set_outfile_encoding_idx', + 'set_parser_argv', 'set_path', 'set_process_options', 'set_process_state', @@ -10091,6 +10431,8 @@ 'set_segment_translations', 'set_selector', 'set_source_linnum', + 'set_srcdbg_paths', + 'set_srcdbg_undesired_paths', 'set_sreg_at_next_code', 'set_step_trace_options', 'set_str_type', @@ -10117,10 +10459,13 @@ 'set_trace_size', 'set_type', 'set_type_alias', + 'set_type_determined_by_hexrays', + 'set_type_guessed_by_ida', 'set_usemodsp', 'set_user_defined_prefix', 'set_usersp', 'set_userti', + 'set_vftable_ea', 'set_view_renderer_type', 'set_viewer_graph', 'set_visible_func', @@ -10414,7 +10759,6 @@ 'strwinsetup_t_display_only_existing_strings_set', 'strwinsetup_t_ignore_heads_get', 'strwinsetup_t_ignore_heads_set', - 'strwinsetup_t_is_initialized', 'strwinsetup_t_minlen_get', 'strwinsetup_t_minlen_set', 'strwinsetup_t_only_7bit_get', @@ -10428,6 +10772,7 @@ 'swap_idcvs', 'swap_mcode_relation', 'swapped_relation', + 'switch_dbctx', 'switch_info_t__from_ptrval__', 'switch_info_t__get_values_lowcase', 'switch_info_t__set_values_lowcase', @@ -10459,6 +10804,7 @@ 'switch_info_t_is_nolowcase', 'switch_info_t_is_sparse', 'switch_info_t_is_subtract', + 'switch_info_t_is_user_defined', 'switch_info_t_jcases_get', 'switch_info_t_jcases_set', 'switch_info_t_jumps_get', @@ -10480,6 +10826,7 @@ 'switch_info_t_startea_get', 'switch_info_t_startea_set', 'switch_info_t_use_std_table', + 'switch_to_golang', 'sync_source_t___eq__', 'sync_source_t___ne__', 'sync_source_t_get_register', @@ -11123,6 +11470,7 @@ 'udt_type_data_t_pack_set', 'udt_type_data_t_sda_get', 'udt_type_data_t_sda_set', + 'udt_type_data_t_set_vftable', 'udt_type_data_t_swap', 'udt_type_data_t_taudt_bits_get', 'udt_type_data_t_taudt_bits_set', @@ -11308,6 +11656,7 @@ 'unregister_custom_data_format', 'unregister_custom_data_type', 'unregister_timer', + 'upd_abits', 'update_action_checkable', 'update_action_checked', 'update_action_icon', @@ -11322,6 +11671,7 @@ 'update_func', 'update_hidden_range', 'update_segm', + 'use_golang_cc', 'use_mapping', 'user_cancelled', 'user_cmts_begin', @@ -11463,6 +11813,7 @@ 'user_unions_size', 'user_unions_t_at', 'user_unions_t_size', + 'uses_aflag_modsp', 'uses_modsp', 'uval_array___getitem__', 'uval_array___setitem__', @@ -11583,6 +11934,7 @@ 'var_ref_t___lt__', 'var_ref_t___ne__', 'var_ref_t_compare', + 'var_ref_t_getv', 'var_ref_t_idx_get', 'var_ref_t_idx_set', 'var_ref_t_mba_get', diff --git a/examples/core/actions.py b/examples/core/actions.py index 2fef928..1beb79a 100644 --- a/examples/core/actions.py +++ b/examples/core/actions.py @@ -9,6 +9,10 @@ class SayHi(ida_kernwin.action_handler_t): def activate(self, ctx): print("Hi, %s" % (self.message)) + # print("context fields: %s" % dir(ctx)) + print(" cur_ea %08X" % ctx.cur_ea) + print(" cur_value: %08X" % ctx.cur_value) + print(" cur_extracted_ea %08X" % ctx.cur_extracted_ea) return 1 # You can implement update(), to inform IDA when: diff --git a/examples/core/bin_search.py b/examples/core/bin_search.py new file mode 100644 index 0000000..72fc2f4 --- /dev/null +++ b/examples/core/bin_search.py @@ -0,0 +1,89 @@ +from __future__ import print_function + +# IDAPython's ida_bytes.bin_search function is pretty powerful, +# but can be tough to figure out at first. This example introduces +# * ida_bytes.bin_search, and +# * ida_bytes.parse_binpat_str +# in order to implement a simple replacement for the +# 'Search > Sequence of bytes...' dialog, that lets users +# search for sequences of bytes that compose string literals +# in the binary file (either in the default 1-byte-per-char +# encoding, or as UTF-16.) + +import ida_kernwin +import ida_bytes +import ida_ida +import ida_idaapi +import ida_nalt + +class search_strlit_form_t(ida_kernwin.Form): + def __init__(self): + ida_kernwin.Form.__init__( + self, + r"""Please enter string literal + + +<#UTF16-BE if file is big-endian, UTF16-LE otherwise#As UTF-16: {UTF16}>{Encoding}> +""", + { + "Text" : ida_kernwin.Form.StringInput(), + "Encoding" : ida_kernwin.Form.ChkGroupControl(("UTF16",)), + }) + +class search_strlit_ah_t(ida_kernwin.action_handler_t): + def __init__(self): + ida_kernwin.action_handler_t.__init__(self) + + def activate(self, ctx): + f = search_strlit_form_t() + f, args = f.Compile() + ok = f.Execute() + if ok: + current_ea = ida_kernwin.get_screen_ea() + patterns = ida_bytes.compiled_binpat_vec_t() + encoding = ida_nalt.get_default_encoding_idx( + ida_nalt.BPU_2B if f.Encoding.value else ida_nalt.BPU_1B) + # string literals must be quoted. That's how parse_binpat_str + # recognizes them (we want to be careful though: the user + # might type in something like 'L"hello"', which should + # decode to the IDB-specific wide-char set of bytes) + text = f.Text.value + if text.find('"') < 0: + text = '"%s"' % text + err = ida_bytes.parse_binpat_str( + patterns, + current_ea, + text, + 10, # radix (not that it matters though, since we're all about string literals) + encoding) + if not err: + ea = ida_bytes.bin_search( + current_ea, + ida_ida.inf_get_max_ea(), + patterns, + ida_bytes.BIN_SEARCH_FORWARD + | ida_bytes.BIN_SEARCH_NOBREAK + | ida_bytes.BIN_SEARCH_NOSHOW) + ok = ea != ida_idaapi.BADADDR + if ok: + ida_kernwin.jumpto(ea) + else: + print("Failed parsing binary pattern: \"%s\"" % err) + return ok + + def update(self, ctx): + return ida_kernwin.AST_ENABLE_FOR_WIDGET \ + if ctx.widget_type == ida_kernwin.BWN_DISASM \ + else ida_kernwin.AST_DISABLE_FOR_WIDGET + + +ACTION_NAME = "bin_search:search" +ACTION_SHORTCUT = "Ctrl+Shift+S" + +if ida_kernwin.register_action( + ida_kernwin.action_desc_t( + ACTION_NAME, + "Search for string literal", + search_strlit_ah_t(), + ACTION_SHORTCUT)): + print("Please use \"%s\" to search for string literals" % ACTION_SHORTCUT) diff --git a/examples/core/colorize_disassembly.py b/examples/core/colorize_disassembly.py index fce1c9a..1525d38 100644 --- a/examples/core/colorize_disassembly.py +++ b/examples/core/colorize_disassembly.py @@ -1,8 +1,17 @@ +""" +summary: change background colours + +description: + This illustrates the setting/retrieval of background colours + using the IDC wrappers + +category: disassembly + +keywords: coloring, idc +""" + from __future__ import print_function -#--------------------------------------------------------------------- -# This illustrates the setting/retrievel of background colours, -# using the IDC wrappers BG_BLUE = 0xc02020 BG_GREEN = 0x208020 diff --git a/examples/core/dump_selection.py b/examples/core/dump_selection.py new file mode 100644 index 0000000..bcea7a7 --- /dev/null +++ b/examples/core/dump_selection.py @@ -0,0 +1,66 @@ + +from __future__ import print_function + +# This example illustrates how to accurately retrieve the current selection. +# +# After running this script: +# * select some text in one of the listing widgets (i.e., +# "IDA View-*", "Enums", "Structures", "Pseudocode-*") +# * press Ctrl+Shift+S to dump the selection +# +# (c) Hex-Rays + +import ida_kernwin +import ida_lines + +class dump_selection_handler_t(ida_kernwin.action_handler_t): + def activate(self, ctx): + if ctx.has_flag(ida_kernwin.ACF_HAS_SELECTION): + tp0, tp1 = ctx.cur_sel._from, ctx.cur_sel.to + ud = ida_kernwin.get_viewer_user_data(ctx.widget) + lnar = ida_kernwin.linearray_t(ud) + lnar.set_place(tp0.at) + lines = [] + while True: + cur_place = lnar.get_place() + first_line_ref = ida_kernwin.l_compare2(cur_place, tp0.at, ud) + last_line_ref = ida_kernwin.l_compare2(cur_place, tp1.at, ud) + if last_line_ref > 0: # beyond last line + break + line = ida_lines.tag_remove(lnar.down()) + if last_line_ref == 0: # at last line + line = line[0:tp1.x] + elif first_line_ref == 0: # at first line + line = ' ' * tp0.x + line[tp0.x:] + lines.append(line) + for line in lines: + print(line) + return 1 + + def update(self, ctx): + ok_widgets = [ + ida_kernwin.BWN_DISASM, + ida_kernwin.BWN_STRUCTS, + ida_kernwin.BWN_ENUMS, + ida_kernwin.BWN_PSEUDOCODE, + ] + return ida_kernwin.AST_ENABLE_FOR_WIDGET \ + if ctx.widget_type in ok_widgets \ + else ida_kernwin.AST_DISABLE_FOR_WIDGET + + +# ----------------------------------------------------------------------- +# create actions (and attach them to IDA View-A's context menu if possible) +ACTION_NAME = "dump_selection" +ACTION_SHORTCUT = "Ctrl+Shift+S" + +if ida_kernwin.unregister_action(ACTION_NAME): + print("Unregistered previously-registered action \"%s\"" % ACTION_NAME) + +if ida_kernwin.register_action( + ida_kernwin.action_desc_t( + ACTION_NAME, + "Dump selection", + dump_selection_handler_t(), + ACTION_SHORTCUT)): + print("Registered action \"%s\"" % ACTION_NAME) diff --git a/examples/hexrays/colorize_pseudocode_lines.py b/examples/hexrays/colorize_pseudocode_lines.py new file mode 100644 index 0000000..9a7421c --- /dev/null +++ b/examples/hexrays/colorize_pseudocode_lines.py @@ -0,0 +1,96 @@ +""" +This example shows how one can dynamically alter the lines background +rendering for pseudocode listings (as opposed to using +ida_hexrays.cfunc_t.pseudocode[N].bgcolor) + +After running this script, pressing 'M' on a line in a "Pseudocode-?" +widget, will cause that line to be rendered with a special background color. +""" + +import ida_kernwin +import ida_hexrays +import ida_moves +import ida_idaapi + +class pseudo_line_t(object): + def __init__(self, func_ea, line_nr): + self.func_ea = func_ea + self.line_nr = line_nr + + def __hash__(self): + return hash((self.func_ea, self.line_nr)) + + def __eq__(self, r): + return self.func_ea == r.func_ea \ + and self.line_nr == r.line_nr + + +def _place_to_line_number(p): + return ida_kernwin.place_t.as_simpleline_place_t(p).n + + +class pseudocode_lines_rendering_hooks_t(ida_kernwin.UI_Hooks): + def __init__(self): + ida_kernwin.UI_Hooks.__init__(self) + self.marked_lines = {} + + def get_lines_rendering_info(self, out, widget, rin): + vu = ida_hexrays.get_widget_vdui(widget) + if vu: + entry_ea = vu.cfunc.entry_ea + for section_lines in rin.sections_lines: + for line in section_lines: + coord = pseudo_line_t( + entry_ea, + _place_to_line_number(line.at)) + color = self.marked_lines.get(coord, None) + if color is not None: + e = ida_kernwin.line_rendering_output_entry_t(line) + e.bg_color = color + out.entries.push_back(e) + + +class toggle_line_marked_ah_t(ida_kernwin.action_handler_t): + + """ + We could very well use an ARGB value, but instead let's go + go with a color 'key': those can be altered by the user/theme, + and therefore have a better chance of being appropriate (or at + least expected.) + """ + COLOR_KEY = ida_kernwin.CK_EXTRA11 + + def __init__(self, hooks): + ida_kernwin.action_handler_t.__init__(self) + self.hooks = hooks + + def activate(self, ctx): + vu = ida_hexrays.get_widget_vdui(ctx.widget) + if vu: + loc = ida_moves.lochist_entry_t() + if ida_kernwin.get_custom_viewer_location(loc, ctx.widget): + coord = pseudo_line_t( + vu.cfunc.entry_ea, + _place_to_line_number(loc.place())) + if coord in self.hooks.marked_lines.keys(): + del self.hooks.marked_lines[coord] + else: + self.hooks.marked_lines[coord] = self.COLOR_KEY + ida_kernwin.refresh_custom_viewer(ctx.widget) + + def update(self, ctx): + return ida_kernwin.AST_ENABLE_FOR_WIDGET \ + if ctx.widget_type == ida_kernwin.BWN_PSEUDOCODE \ + else ida_kernwin.AST_DISABLE_FOR_WIDGET + + +hooks = pseudocode_lines_rendering_hooks_t() +act_name = "example:colorize_pseudocode_line" +act_shortcut = "M" +if ida_kernwin.register_action(ida_kernwin.action_desc_t( + act_name, + "Mark pseudocode line", + toggle_line_marked_ah_t(hooks), + act_shortcut)): + hooks.hook() + print("Action registered. Please press '%s' in a pseudocode window to mark a line" % act_shortcut) diff --git a/examples/hexrays/decompile_entry_points.py b/examples/hexrays/decompile_entry_points.py index 2fd5d51..50a56ba 100644 --- a/examples/hexrays/decompile_entry_points.py +++ b/examples/hexrays/decompile_entry_points.py @@ -1,10 +1,12 @@ from __future__ import print_function + # # This example tries to load a decompiler plugin corresponding to the current # architecture (and address size) right after auto-analysis is performed, # and then tries to decompile the function at the first entrypoint. # -# It is particularly suited for use with the '-S' flag. +# It is particularly suited for use with the '-S' flag, for example: +# idat -Ldecompile.log -Sdecompile_entry_points.py -c file # import ida_ida @@ -13,30 +15,62 @@ import ida_loader import ida_hexrays import ida_idp import ida_entry +import ida_kernwin -ida_auto.auto_wait() -ALL_DECOMPILERS = { - ida_idp.PLFM_386 : ("hexrays", "hexx64"), - ida_idp.PLFM_ARM : ("hexarm", "hexarm64"), - ida_idp.PLFM_PPC : ("hexppc", "hexppc64"), - ida_idp.PLFM_MIPS: ("hexmips", "hexmips64"), -} -pair = ALL_DECOMPILERS.get(ida_idp.ph.id, None) -if pair: - decompiler = pair[1 if ida_ida.cvar.inf.is_64bit() else 0] +# because the -S script runs very early, we need to load the decompiler +# manually if we want to use it +def init_hexrays(): + ALL_DECOMPILERS = { + ida_idp.PLFM_386: "hexrays", + ida_idp.PLFM_ARM: "hexarm", + ida_idp.PLFM_PPC: "hexppc", + ida_idp.PLFM_MIPS: "hexmips", + } + cpu = ida_idp.ph.id + decompiler = ALL_DECOMPILERS.get(cpu, None) + if not decompiler: + print("No known decompilers for architecture with ID: %d" % ida_idp.ph.id) + return False + if ida_ida.inf_is_64bit(): + if cpu == ida_idp.PLFM_386: + decompiler = "hexx64" + else: + decompiler += "64" if ida_loader.load_plugin(decompiler) and ida_hexrays.init_hexrays_plugin(): + return True + else: + print('Couldn\'t load or initialize decompiler: "%s"' % decompiler) + return False + + +def decompile_func(ea, outfile): + ida_kernwin.msg("Decompiling at: %X..." % ea) + cf = ida_hexrays.decompile(ea) + if cf: + ida_kernwin.msg("OK\n") + outfile.write(str(cf) + "\n") + else: + ida_kernwin.msg("failed!\n") + outfile.write("decompilation failure at %X!\n" % ea) + + +def main(): + print("Waiting for autoanalysis...") + ida_auto.auto_wait() + if init_hexrays(): eqty = ida_entry.get_entry_qty() if eqty: - ea = ida_entry.get_entry(ida_entry.get_entry_ordinal(0)) - print("Decompiling at: %X" % ea) - cf = ida_hexrays.decompile(ea) - if cf: - print(cf) - else: - print("Decompilation failed") + idbpath = idc.get_idb_path() + cpath = idbpath[:-4] + ".c" + with open(cpath, "w") as outfile: + print("writing results to '%s'..." % cpath) + for i in range(eqty): + ea = ida_entry.get_entry(ida_entry.get_entry_ordinal(i)) + decompile_func(ea, outfile) else: print("No known entrypoint. Cannot decompile.") - else: - print("Couldn't load or initialize decompiler: \"%s\"" % decompiler) -else: - print("No known decompilers for architecture with ID: %d" % ida_idp.ph.id) + if ida_kernwin.cvar.batch: + print("All done, exiting.") + ida_pro.qexit(0) + +main() diff --git a/examples/hexrays/vds10.py b/examples/hexrays/vds10.py index 2fbf306..7fee0cb 100644 --- a/examples/hexrays/vds10.py +++ b/examples/hexrays/vds10.py @@ -1,6 +1,6 @@ # # Hex-Rays Decompiler project -# Copyright (c) 2007-2020 by Hex-Rays, support@hex-rays.com +# Copyright (c) 2007-2021 by Hex-Rays, support@hex-rays.com # ALL RIGHTS RESERVED. # # Sample plugin for Hex-Rays Decompiler. diff --git a/examples/hexrays/vds11.py b/examples/hexrays/vds11.py index 0f3f5ea..ac0712e 100644 --- a/examples/hexrays/vds11.py +++ b/examples/hexrays/vds11.py @@ -1,6 +1,6 @@ # # Hex-Rays Decompiler project -# Copyright (c) 2007-2020 by Hex-Rays, support@hex-rays.com +# Copyright (c) 2007-2021 by Hex-Rays, support@hex-rays.com # ALL RIGHTS RESERVED. # # Sample plugin for Hex-Rays Decompiler. diff --git a/examples/hexrays/vds12.py b/examples/hexrays/vds12.py index 44f022d..456dbf7 100644 --- a/examples/hexrays/vds12.py +++ b/examples/hexrays/vds12.py @@ -1,6 +1,6 @@ # # Hex-Rays Decompiler project -# Copyright (c) 2007-2020 by Hex-Rays, support@hex-rays.com +# Copyright (c) 2007-2021 by Hex-Rays, support@hex-rays.com # ALL RIGHTS RESERVED. # # Sample script for Hex-Rays Decompiler. diff --git a/examples/hexrays/vds13.py b/examples/hexrays/vds13.py index ac14d44..b701b58 100644 --- a/examples/hexrays/vds13.py +++ b/examples/hexrays/vds13.py @@ -1,6 +1,6 @@ # # Hex-Rays Decompiler project -# Copyright (c) 2007-2020 by Hex-Rays, support@hex-rays.com +# Copyright (c) 2007-2021 by Hex-Rays, support@hex-rays.com # ALL RIGHTS RESERVED. # # Sample script for Hex-Rays Decompiler. diff --git a/examples/hexrays/vds17.py b/examples/hexrays/vds17.py index 60bc5b7..246ddd8 100644 --- a/examples/hexrays/vds17.py +++ b/examples/hexrays/vds17.py @@ -1,6 +1,6 @@ # # Hex-Rays Decompiler project -# Copyright (c) 2007-2020 by Hex-Rays, support@hex-rays.com +# Copyright (c) 2007-2021 by Hex-Rays, support@hex-rays.com # ALL RIGHTS RESERVED. # # Sample plugin for Hex-Rays Decompiler. diff --git a/examples/hexrays/vds19.py b/examples/hexrays/vds19.py index 47a0d8a..724d8d1 100644 --- a/examples/hexrays/vds19.py +++ b/examples/hexrays/vds19.py @@ -1,6 +1,6 @@ # # Hex-Rays Decompiler project -# Copyright (c) 2007-2020 by Hex-Rays, support@hex-rays.com +# Copyright (c) 2007-2021 by Hex-Rays, support@hex-rays.com # ALL RIGHTS RESERVED. # # Sample plugin for Hex-Rays Decompiler. diff --git a/examples/hexrays/vds21.py b/examples/hexrays/vds21.py new file mode 100644 index 0000000..aa8bb7d --- /dev/null +++ b/examples/hexrays/vds21.py @@ -0,0 +1,85 @@ +""" Example: provide custom call type dynamically + + This plugin can greatly improve decompilation of indirect calls: + + call [eax+4] + + For them, the decompiler has to guess the prototype of the called function. + This has to be done at a very early phase of decompilation because + the function prototype influences the data flow analysis. On the other + hand, we do not have global data flow analysis results yet because + we haven't analyzed all calls in the function. It is a chicked-and-egg + problem. + + The decompiler uses various techniques to guess the called function + prototype. While it works very well, it may fail in some cases. + + To fix, the user can specify the call prototype manually, using + "Edit, Operand types, Set operand type" at the call instruction. + + This plugin illustrates another approach to the problem: + if you happen to be able to calculate the call prototypes dynamically, + this is how to inform the decompiler about them. + +""" + +import ida_idaapi +import ida_nalt +import ida_kernwin +import ida_typeinf +import ida_hexrays + +class callinfo_provider_t(ida_hexrays.Hexrays_Hooks): + + # this callback will be called for all call instructions + # our plugin may provide the function prototype or even a complete new callinfo + # object. The callinfo object may be useful if the prototype is not enough + # to express all details of the call. + def build_callinfo(self, blk, type, callinfo): + # it is a good idea to skip direct calls. + # note that some indirect calls may be resolved and become direct calls, + # and will be filtered out here: + ida_kernwin.msg("%x: got called for: %s\n" % (blk.tail.ea, blk.tail.dstr())) + tail = blk.tail + if tail.opcode == ida_hexrays.m_call: + return 0 + + # also, if the type was specified by the user, do not interfere + call_ea = tail.ea + tif = ida_typeinf.tinfo_t() + if ida_nalt.get_op_tinfo(tif, call_ea, 0): + return 0 + + # ok, the decompiler really has to guess the type. + # just for the sake of an example, return a predefined prototype. + # in real life you will provide the prototype you discovered yourself, + # using your magic of yours :) + my_proto = "int f();" + ida_kernwin.msg("%x: providing prototype %s\n" % (call_ea, my_proto)) + ida_typeinf.parse_decl(type, None, my_proto, 0) + return 0 + +# a plugin interface, boilerplate code +class my_plugin_t(ida_idaapi.plugin_t): + flags = ida_idaapi.PLUGIN_HIDE + wanted_name = "Hex-Rays custom prototype provider (IDAPython)" + wanted_hotkey = "" + comment = "Sample plugin21 for Hex-Rays decompiler" + help = "" + def init(self): + if ida_hexrays.init_hexrays_plugin(): + self.hooks = callinfo_provider_t() + self.hooks.hook() + ida_kernwin.warning( + "Installed callinfo provider sample (vds21.py)\n" +\ + "Please note that it is just an example\n" +\ + "and will spoil your decompilations!") + return ida_idaapi.PLUGIN_KEEP # keep us in the memory + def term(self): + self.hooks.unhook() + def run(self, arg): + pass + +def PLUGIN_ENTRY(): + return my_plugin_t() + diff --git a/examples/hexrays/vds3.py b/examples/hexrays/vds3.py index 0b4be26..5cc9bb9 100644 --- a/examples/hexrays/vds3.py +++ b/examples/hexrays/vds3.py @@ -56,7 +56,7 @@ class hexrays_callback_info(object): try: data = self.node.getblob(0, 'I') if data: - self.stored = eval(data) + self.stored = eval(data.decode("UTF-8")) print('Invert-if: Loaded %s' % (repr(self.stored), )) except: print('Failed to load invert-if locations') @@ -68,7 +68,7 @@ class hexrays_callback_info(object): def save(self): try: - self.node.setblob(repr(self.stored), 0, 'I') + self.node.setblob(repr(self.stored).encode("UTF-8"), 0, 'I') except: print('Failed to save invert-if locations') traceback.print_exc() diff --git a/examples/hexrays/vds8.py b/examples/hexrays/vds8.py index c1b4c47..7eacfe8 100644 --- a/examples/hexrays/vds8.py +++ b/examples/hexrays/vds8.py @@ -1,6 +1,6 @@ # Hex-Rays Decompiler project -# Copyright (c) 2007-2020 by Hex-Rays, support@hex-rays.com +# Copyright (c) 2007-2021 by Hex-Rays, support@hex-rays.com # ALL RIGHTS RESERVED. # # Sample script for Hex-Rays Decompiler usage of udc_filter_t diff --git a/examples/idbhooks/replay_prototypes_changes.py b/examples/idbhooks/replay_prototypes_changes.py index f6c9433..8f2ebf7 100644 --- a/examples/idbhooks/replay_prototypes_changes.py +++ b/examples/idbhooks/replay_prototypes_changes.py @@ -1,17 +1,20 @@ """ -This is a sample script, that will record (in memory) all changes in -functions prototypes, in order to re-apply them later. +summary: Record and replay changes in function prototypes -To use this script: - - open an IDB (say, "test.idb") - - modify some functions prototypes (e.g., by triggering the 'Y' - shortcut when the cursor is placed on the first address of a - function) - - reload that IDB, *without saving it first* - - call rpc.replay(), to re-apply the modifications. - -Note: 'ti_changed' is also called for changes to the function -frames, but we'll only record function prototypes changes. +description: + This is a sample script, that will record (in memory) all changes in + functions prototypes, in order to re-apply them later. +. + To use this script: + - open an IDB (say, "test.idb") + - modify some functions prototypes (e.g., by triggering the 'Y' + shortcut when the cursor is placed on the first address of a + function) + - reload that IDB, *without saving it first* + - call rpc.replay(), to re-apply the modifications. +. + Note: 'ti_changed' is also called for changes to the function + frames, but we'll only record function prototypes changes. """ import ida_idp import ida_funcs diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 0000000..5a645be --- /dev/null +++ b/examples/index.html @@ -0,0 +1,4728 @@ + + + + IDAPython examples + + + + +
+ + Switch to MarkDown +
+ +

IDAPython examples:

+

Category: analysis

+
+ +
+ + dump_func_info: +
+
+ + +
+ +

Category: core

+
+ +
+ + actions: +
+
+ + +
+ + add_hotkey: +
+
+ + +
+ + add_idc_hotkey: +
+
+ + +
+ + auto_instantiate_widget_plugin: +
+
+ + +
+ + bin_search: +
+
+ + +
+ + create_structure_programmatically: +
+
+ + +
+ + custom_cli: +
+
+ + +
+ + custom_data_types_and_formats: +
+
+ + +
+ + dump_extra_comments: +
+
+ + +
+ + dump_flowchart: +
+
+ + +
+ + dump_selection: +
+
+ + +
+ + extend_idc: +
+
+ + +
+ + idapythonrc: +
+
+ + +
+ + install_user_defined_prefix: +
+
+ + +
+ + list_imports: +
+
+ + +
+ + list_patched_bytes: +
+
+ + +
+ + list_problems: +
+
+ + +
+ + list_segment_functions: +
+
+ + +
+ + list_segment_functions_using_idautils: +
+
+ + +
+ + list_stkvar_xrefs: +
+
+ + +
+ + list_strings: +
+
+ + +
+ + produce_c_file: +
+
+ + +
+ + produce_lst_file: +
+
+ + +
+ + register_timer: +
+
+ + +
+ + trigger_actions_programmatically: +
+
+ + +
+ +

Category: debugging

+
+ +
+ + automatic_steps: +
+
+ + +
+ + dbg_trace: +
+
+ + +
+ + registers_context_menu: +
+
+ + +
+ + show_debug_names: +
+
+ + +
+ + simple_appcall_common: +
+
+ + +
+ + simple_appcall_linux: +
+
+ + +
+ + simple_appcall_win: +
+
+ + +
+ +

Category: disassembly

+
+ +
+ + colorize_disassembly: change background colours +
+
+ + +
+ +

Category: hexrays

+
+ +
+ + colorize_pseudocode_lines: +
+
+ + +
+ + decompile_entry_points: +
+
+ + +
+ + vds1: +
+
+ + +
+ + vds10: +
+
+ + +
+ + vds11: +
+
+ + +
+ + vds12: +
+
+ + +
+ + vds13: +
+
+ + +
+ + vds17: +
+
+ + +
+ + vds19: +
+
+ + +
+ + vds21: +
+
+ + +
+ + vds3: +
+
+ + +
+ + vds4: +
+
+ + +
+ + vds5: +
+
+ + +
+ + vds6: +
+
+ + +
+ + vds7: +
+
+ + +
+ + vds8: +
+
+ + +
+ + vds_create_hint: +
+
+ + +
+ + vds_hooks: +
+
+ + +
+ + vds_modify_user_lvars: +
+
+ + +
+ + vds_xrefs: +
+
+ + +
+ +

Category: idbhooks

+
+ +
+ + operand_changed: +
+
+ + +
+ + replay_prototypes_changes: Record and replay changes in function prototypes +
+
+ + +
+ +

Category: idphooks

+
+ +
+ + ana_emu_out: +
+
+ + +
+ + assemble: +
+
+ + +
+ +

Category: pyqt

+
+ +
+ + inject_command: +
+
+ + +
+ + paint_over_navbar: +
+
+ + +
+ + populate_pluginform_with_pyqt_widgets: +
+
+ + +
+ +

Category: uihooks

+
+ +
+ + func_chooser_coloring: +
+
+ + +
+ + lines_rendering: +
+
+ + +
+ + log_misc_events: +
+
+ + +
+ + prevent_jump: +
+
+ + +
+ +

Category: widgets

+
+ +
+ + add_menus: +
+
+ + +
+ + askusingform: +
+
+ + +
+ + choose: +
+
+ + +
+ + choose_multi: choose multi +
+
+ + +
+ + chooser_with_folders: +
+
+ + +
+ + custom_graph_with_actions: +
+
+ + +
+ + custom_viewer: +
+
+ + +
+ + func_chooser: +
+
+ + +
+ + jump_next_comment: This example illustrates how one can implement a "jump to next comment" action within IDA's disassembly view. +
+
+ + +
+ + save_and_restore_listing_pos: +
+
+ + +
+ + show_and_hide_waitbox: +
+
+ + +
+ + show_selected_strings: +
+
+ + +
+ + sync_two_graphs: +
+
+ + +
+ + wrap_idaview: manipulate IDAView and graph +
+
+ + +
+ + + diff --git a/examples/index.md b/examples/index.md new file mode 100644 index 0000000..9ae6ddc --- /dev/null +++ b/examples/index.md @@ -0,0 +1,2870 @@ +[Switch to HTML](http://htmlpreview.github.io/?https://github.com/idapython/src/blob/master/examples/index.html) + +# IDAPython examples + +## Category: analysis + +#### dump_func_info +
+ + +
+ +#### Source code +analysis/dump_func_info.py + +#### Category +analysis + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.FUNC_FRAME +* ida_funcs.FUNC_LUMINA +* ida_funcs.FUNC_THUNK +* ida_funcs.get_fchunk +* ida_funcs.is_func_entry +* ida_funcs.is_func_tail +* ida_kernwin.get_screen_ea + +#### See also + +
+ +
+ +## Category: core + +#### actions +
+ + +
+ +#### Source code +core/actions.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_DISASM +* ida_kernwin.SETMENU_APP +* ida_kernwin.UI_Hooks +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_menu +* ida_kernwin.attach_action_to_popup +* ida_kernwin.attach_action_to_toolbar +* ida_kernwin.get_widget_type +* ida_kernwin.load_custom_icon +* ida_kernwin.register_action +* ida_kernwin.unregister_action + +#### See also + +
+ +
+ +#### add_hotkey +
+ + +
+ +#### Source code +core/add_hotkey.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.add_hotkey +* ida_kernwin.del_hotkey + +#### See also + +
+ +
+ +#### add_idc_hotkey +
+ + +
+ +#### Source code +core/add_idc_hotkey.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_expr.compile_idc_text +* ida_kernwin.add_idc_hotkey + +#### See also + +
+ +
+ +#### auto_instantiate_widget_plugin +
+ + +
+ +#### Source code +core/auto_instantiate_widget_plugin.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_idaapi.plugin_t +* ida_kernwin.AST_ENABLE_ALWAYS +* ida_kernwin.SETMENU_APP +* ida_kernwin.UI_Hooks +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_menu +* ida_kernwin.find_widget +* ida_kernwin.register_action +* ida_kernwin.simplecustviewer_t +* ida_kernwin.simplecustviewer_t.Create + +#### See also + +
+ +
+ +#### bin_search +
+ + +
+ +#### Source code +core/bin_search.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.BIN_SEARCH_FORWARD +* ida_bytes.BIN_SEARCH_NOBREAK +* ida_bytes.BIN_SEARCH_NOSHOW +* ida_bytes.bin_search +* ida_bytes.compiled_binpat_vec_t +* ida_bytes.parse_binpat_str +* ida_ida.inf_get_max_ea +* ida_idaapi.BADADDR +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_DISASM +* ida_kernwin.Form +* ida_kernwin.Form.ChkGroupControl +* ida_kernwin.Form.StringInput +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.get_screen_ea +* ida_kernwin.jumpto +* ida_kernwin.register_action +* ida_nalt.BPU_1B +* ida_nalt.BPU_2B +* ida_nalt.get_default_encoding_idx + +#### See also + +
+ +
+ +#### create_structure_programmatically +
+ + +
+ +#### Source code +core/create_structure_programmatically.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.FF_BYTE +* ida_bytes.FF_DATA +* ida_bytes.FF_DOUBLE +* ida_bytes.FF_DWORD +* ida_bytes.FF_FLOAT +* ida_bytes.FF_OWORD +* ida_bytes.FF_PACKREAL +* ida_bytes.FF_QWORD +* ida_bytes.FF_STRLIT +* ida_bytes.FF_STRUCT +* ida_bytes.FF_TBYTE +* ida_bytes.FF_WORD +* ida_bytes.off_flag +* ida_bytes.stroff_flag +* ida_idaapi.BADADDR +* ida_nalt.STRTYPE_C +* ida_struct.add_struc +* ida_struct.get_struc_id +* ida_struct.get_struc_size +* idc.add_struc +* idc.add_struc_member +* idc.del_struc +* idc.set_member_type + +#### See also + +
+ +
+ +#### custom_cli +
+ + +
+ +#### Source code +core/custom_cli.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_idaapi.NW_CLOSEIDB +* ida_idaapi.NW_OPENIDB +* ida_idaapi.NW_REMOVE +* ida_idaapi.NW_TERMIDA +* ida_idaapi.notify_when +* ida_kernwin.cli_t + +#### See also + +
+ +
+ +#### custom_data_types_and_formats +
+ + +
+ +#### Source code +core/custom_data_types_and_formats.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.data_format_t +* ida_bytes.data_type_t +* ida_bytes.find_custom_data_type +* ida_bytes.get_byte +* ida_bytes.register_data_types_and_formats +* ida_bytes.unregister_data_types_and_formats +* ida_idaapi.NW_CLOSEIDB +* ida_idaapi.NW_OPENIDB +* ida_idaapi.NW_REMOVE +* ida_idaapi.NW_TERMIDA +* ida_idaapi.notify_when +* ida_idaapi.struct_unpack +* ida_lines.COLSTR +* ida_lines.SCOLOR_IMPNAME +* ida_lines.SCOLOR_INSN +* ida_lines.SCOLOR_NUMBER +* ida_lines.SCOLOR_REG +* ida_nalt.get_input_file_path +* ida_netnode.netnode +* ida_struct.is_member_id + +#### See also + +
+ +
+ +#### dump_extra_comments +
+ + +
+ +#### Source code +core/dump_extra_comments.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_DISASM +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_popup +* ida_kernwin.find_widget +* ida_kernwin.get_screen_ea +* ida_kernwin.register_action +* ida_kernwin.unregister_action +* ida_lines.E_NEXT +* ida_lines.E_PREV +* ida_lines.get_extra_cmt +* ida_view + +#### See also + +
+ +
+ +#### dump_flowchart +
+ + +
+ +#### Source code +core/dump_flowchart.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.get_func +* ida_gdl.FlowChart +* ida_gdl.qflow_chart_t +* ida_kernwin.get_screen_ea + +#### See also + +
+ +
+ +#### dump_selection +
+ + +
+ +#### Source code +core/dump_selection.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.ACF_HAS_SELECTION +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_DISASM +* ida_kernwin.BWN_ENUMS +* ida_kernwin.BWN_PSEUDOCODE +* ida_kernwin.BWN_STRUCTS +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.get_viewer_user_data +* ida_kernwin.l_compare2 +* ida_kernwin.linearray_t +* ida_kernwin.register_action +* ida_kernwin.unregister_action +* ida_lines.tag_remove + +#### See also + +
+ +
+ +#### extend_idc +
+ + +
+ +#### Source code +core/extend_idc.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_expr.VT_LONG +* ida_expr.add_idc_func + +#### See also + +
+ +
+ +#### idapythonrc +
+ + +
+ +#### Source code +core/idapythonrc.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses + +#### See also + +
+ +
+ +#### install_user_defined_prefix +
+ + +
+ +#### Source code +core/install_user_defined_prefix.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t +* ida_lines.SCOLOR_INV +* ida_lines.user_defined_prefix_t + +#### See also + +
+ +
+ +#### list_imports +
+ + +
+ +#### Source code +core/list_imports.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_nalt.enum_import_names +* ida_nalt.get_import_module_name +* ida_nalt.get_import_module_qty + +#### See also + +
+ +
+ +#### list_patched_bytes +
+ + +
+ +#### Source code +core/list_patched_bytes.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.visit_patched_bytes +* ida_idaapi.BADADDR + +#### See also + +
+ +
+ +#### list_problems +
+ + +
+ +#### Source code +core/list_problems.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_ida.inf_get_min_ea +* ida_idaapi.BADADDR +* ida_problems.PR_ATTN +* ida_problems.PR_BADSTACK +* ida_problems.PR_COLLISION +* ida_problems.PR_DECIMP +* ida_problems.PR_DISASM +* ida_problems.PR_FINAL +* ida_problems.PR_HEAD +* ida_problems.PR_ILLADDR +* ida_problems.PR_JUMP +* ida_problems.PR_MANYLINES +* ida_problems.PR_NOBASE +* ida_problems.PR_NOCMT +* ida_problems.PR_NOFOP +* ida_problems.PR_NONAME +* ida_problems.PR_NOXREFS +* ida_problems.PR_ROLLED +* ida_problems.get_problem +* ida_problems.get_problem_name + +#### See also + +
+ +
+ +#### list_segment_functions +
+ + +
+ +#### Source code +core/list_segment_functions.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.get_func +* ida_funcs.get_func_name +* ida_funcs.get_next_func +* ida_idaapi.BADADDR +* ida_kernwin.get_screen_ea +* ida_segment.getseg +* ida_xref.get_first_cref_to +* ida_xref.get_next_cref_to + +#### See also + +
+ +
+ +#### list_segment_functions_using_idautils +
+ + +
+ +#### Source code +core/list_segment_functions_using_idautils.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.get_func_name +* ida_idaapi.BADADDR +* ida_kernwin.get_screen_ea +* ida_segment.getseg +* idautils.CodeRefsTo +* idautils.Functions + +#### See also + +
+ +
+ +#### list_stkvar_xrefs +
+ + +
+ +#### Source code +core/list_stkvar_xrefs.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.get_flags +* ida_bytes.is_stkvar +* ida_frame.calc_stkvar_struc_offset +* ida_frame.get_frame +* ida_funcs.func_item_iterator_t +* ida_funcs.get_func +* ida_ida.UA_MAXOP +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_DISASM +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.get_current_viewer +* ida_kernwin.get_highlight +* ida_kernwin.get_screen_ea +* ida_kernwin.register_action +* ida_struct.get_member_by_name +* ida_struct.get_struc +* ida_ua.decode_insn +* ida_ua.insn_t + +#### See also + +
+ +
+ +#### list_strings +
+ + +
+ +#### Source code +core/list_strings.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* idautils.Strings + +#### See also + +
+ +
+ +#### produce_c_file +
+ + +
+ +#### Source code +core/produce_c_file.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_auto.auto_wait +* ida_hexrays.VDRUN_MAYSTOP +* ida_hexrays.VDRUN_NEWFILE +* ida_hexrays.VDRUN_SILENT +* ida_hexrays.decompile_many +* ida_loader.PATH_TYPE_IDB +* ida_loader.get_path +* ida_pro.qexit + +#### See also + +
+ +
+ +#### produce_lst_file +
+ + +
+ +#### Source code +core/produce_lst_file.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_auto.auto_wait +* ida_fpro.qfile_t +* ida_ida.inf_get_max_ea +* ida_ida.inf_get_min_ea +* ida_loader.OFILE_LST +* ida_loader.PATH_TYPE_IDB +* ida_loader.gen_file +* ida_loader.get_path +* ida_pro.qexit + +#### See also + +
+ +
+ +#### register_timer +
+ + +
+ +#### Source code +core/register_timer.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.register_timer + +#### See also + +
+ +
+ +#### trigger_actions_programmatically +
+ + +
+ +#### Source code +core/trigger_actions_programmatically.py + +#### Category +core + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.ask_yn +* ida_kernwin.execute_ui_requests +* ida_kernwin.msg +* ida_kernwin.process_ui_action + +#### See also + +
+ +
+ +## Category: debugging + +#### automatic_steps +
+ + +
+ +#### Source code +debugging/dbghooks/automatic_steps.py + +#### Category +debugging + +#### Description + + +#### Keywords + +#### Uses +* ida_dbg.DBG_Hooks +* ida_dbg.get_reg_val +* ida_dbg.request_exit_process +* ida_dbg.request_run_to +* ida_dbg.request_step_over +* ida_dbg.run_requests +* ida_ida.inf_get_start_ip +* ida_idaapi.BADADDR +* ida_lines.generate_disasm_line +* ida_lines.tag_remove + +#### See also + +
+ +
+ +#### dbg_trace +
+ + +
+ +#### Source code +debugging/dbghooks/dbg_trace.py + +#### Category +debugging + +#### Description + + +#### Keywords + +#### Uses +* GENDSM_FORCE_CODE +* GENDSM_REMOVE_TAGS +* NN_call +* NN_callfi +* NN_callni +* generate_disasm_line +* ida_dbg.DBG_Hooks +* ida_dbg.ST_OVER_DEBUG_SEG +* ida_dbg.ST_OVER_LIB_FUNC +* ida_dbg.enable_step_trace +* ida_dbg.get_process_state +* ida_dbg.get_reg_val +* ida_dbg.get_step_trace_options +* ida_dbg.load_debugger +* ida_dbg.refresh_debugger_memory +* ida_dbg.request_continue_process +* ida_dbg.request_enable_step_trace +* ida_dbg.request_set_step_trace_options +* ida_dbg.run_requests +* ida_dbg.run_to +* ida_dbg.set_step_trace_options +* ida_dbg.wait_for_next_event +* ida_ida.f_ELF +* ida_ida.f_MACHO +* ida_ida.f_PE +* ida_ida.inf_get_filetype +* ida_ida.inf_get_max_ea +* ida_ida.inf_get_min_ea +* ida_ida.inf_get_start_ip +* ida_pro.qexit +* ida_ua.decode_insn +* ida_ua.insn_t +* idc.ARGV + +#### See also + +
+ +
+ +#### registers_context_menu +
+ + +
+ +#### Source code +debugging/misc/registers_context_menu.py + +#### Category +debugging + +#### Description + + +#### Keywords + +#### Uses +* ida_dbg.get_dbg_reg_info +* ida_dbg.get_reg_val +* ida_idd.register_info_t +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_CPUREGS +* ida_kernwin.UI_Hooks +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_popup +* ida_kernwin.get_widget_type +* ida_kernwin.register_action +* ida_ua.dt_byte +* ida_ua.dt_dword +* ida_ua.dt_qword +* ida_ua.dt_word + +#### See also + +
+ +
+ +#### show_debug_names +
+ + +
+ +#### Source code +debugging/show_debug_names.py + +#### Category +debugging + +#### Description + + +#### Keywords + +#### Uses +* ida_dbg.get_process_state +* ida_dbg.is_debugger_on +* ida_ida.inf_get_max_ea +* ida_ida.inf_get_min_ea +* ida_name.get_debug_names + +#### See also + +
+ +
+ +#### simple_appcall_common +
+ + +
+ +#### Source code +debugging/appcall/simple_appcall_common.py + +#### Category +debugging + +#### Description + + +#### Keywords + +#### Uses +* ida_dbg.DBG_Hooks +* ida_dbg.run_to +* ida_idaapi.BADADDR +* ida_idd.Appcall +* ida_idd.Appcall.byref +* ida_idd.Appcall.int64 +* ida_kernwin.get_screen_ea +* ida_name.get_name_ea +* ida_name.set_name +* ida_typeinf.apply_cdecl + +#### See also + +
+ +
+ +#### simple_appcall_linux +
+ + +
+ +#### Source code +debugging/appcall/simple_appcall_linux.py + +#### Category +debugging + +#### Description + + +#### Keywords + +#### Uses + +#### See also + +
+ +
+ +#### simple_appcall_win +
+ + +
+ +#### Source code +debugging/appcall/simple_appcall_win.py + +#### Category +debugging + +#### Description + + +#### Keywords + +#### Uses +* ida_ida.inf_is_64bit + +#### See also + +
+ +
+ +## Category: disassembly + +#### colorize_disassembly +
+ change background colours + +
+ +#### Source code +core/colorize_disassembly.py + +#### Category +disassembly + +#### Description +This illustrates the setting/retrieval of background colours +using the IDC wrappers + +#### Keywords +coloring +idc + +#### Uses +* idc.CIC_FUNC +* idc.CIC_ITEM +* idc.CIC_SEGM +* idc.get_color +* idc.here +* idc.set_color + +#### See also + +
+ +
+ +## Category: hexrays + +#### colorize_pseudocode_lines +
+ + +
+ +#### Source code +hexrays/colorize_pseudocode_lines.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.get_widget_vdui +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_PSEUDOCODE +* ida_kernwin.CK_EXTRA11 +* ida_kernwin.UI_Hooks +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.get_custom_viewer_location +* ida_kernwin.line_rendering_output_entry_t +* ida_kernwin.refresh_custom_viewer +* ida_kernwin.register_action +* ida_moves.lochist_entry_t + +#### See also + +
+ +
+ +#### decompile_entry_points +
+ + +
+ +#### Source code +hexrays/decompile_entry_points.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_auto.auto_wait +* ida_entry.get_entry +* ida_entry.get_entry_ordinal +* ida_entry.get_entry_qty +* ida_hexrays.decompile +* ida_hexrays.init_hexrays_plugin +* ida_ida.inf_is_64bit +* ida_idp.PLFM_386 +* ida_idp.PLFM_ARM +* ida_idp.PLFM_MIPS +* ida_idp.PLFM_PPC +* ida_idp.ph.id +* ida_kernwin.cvar.batch +* ida_kernwin.msg +* ida_loader.load_plugin +* ida_pro.qexit +* idc.get_idb_path + +#### See also + +
+ +
+ +#### vds1 +
+ + +
+ +#### Source code +hexrays/vds1.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.get_func +* ida_hexrays.decompile +* ida_hexrays.get_hexrays_version +* ida_hexrays.init_hexrays_plugin +* ida_kernwin.get_screen_ea +* ida_lines.tag_remove + +#### See also + +
+ +
+ +#### vds10 +
+ + +
+ +#### Source code +hexrays/vds10.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.get_cmt +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.mop_str +* ida_hexrays.optinsn_t +* ida_idaapi.PLUGIN_HIDE +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t +* ida_typeinf.STI_PCCHAR +* ida_typeinf.tinfo_t.get_stock + +#### See also + +
+ +
+ +#### vds11 +
+ + +
+ +#### Source code +hexrays/vds11.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.getf_reginsn +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.m_goto +* ida_hexrays.optblock_t +* ida_idaapi.PLUGIN_HIDE +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t + +#### See also + +
+ +
+ +#### vds12 +
+ + +
+ +#### Source code +hexrays/vds12.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.get_flags +* ida_bytes.is_code +* ida_funcs.get_func +* ida_hexrays.ACFL_GUESS +* ida_hexrays.DECOMP_NO_CACHE +* ida_hexrays.DECOMP_WARNINGS +* ida_hexrays.GCO_DEF +* ida_hexrays.GCO_USE +* ida_hexrays.GC_REGS_AND_STKVARS +* ida_hexrays.MERR_OK +* ida_hexrays.MMAT_PREOPTIMIZED +* ida_hexrays.MUST_ACCESS +* ida_hexrays.gco_info_t +* ida_hexrays.gen_microcode +* ida_hexrays.get_current_operand +* ida_hexrays.get_merror_desc +* ida_hexrays.hexrays_failure_t +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.mba_ranges_t +* ida_hexrays.mlist_t +* ida_hexrays.op_parent_info_t +* ida_hexrays.voff_t +* ida_kernwin.Choose +* ida_kernwin.get_screen_ea +* ida_kernwin.jumpto +* ida_kernwin.warning +* ida_lines.GENDSM_REMOVE_TAGS +* ida_lines.generate_disasm_line +* ida_pro.eavec_t + +#### See also + +
+ +
+ +#### vds13 +
+ + +
+ +#### Source code +hexrays/vds13.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.get_flags +* ida_bytes.is_code +* ida_hexrays.DECOMP_WARNINGS +* ida_hexrays.gen_microcode +* ida_hexrays.hexrays_failure_t +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.mba_ranges_t +* ida_hexrays.vd_printer_t +* ida_kernwin.read_range_selection +* ida_kernwin.warning +* ida_range.range_t + +#### See also + +
+ +
+ +#### vds17 +
+ + +
+ +#### Source code +hexrays/vds17.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.USE_KEYBOARD +* ida_hexrays.cot_add +* ida_hexrays.cot_cast +* ida_hexrays.cot_memptr +* ida_hexrays.cot_memref +* ida_hexrays.cot_num +* ida_hexrays.cot_ref +* ida_hexrays.get_hexrays_version +* ida_hexrays.get_widget_vdui +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.select_udt_by_offset +* ida_hexrays.ui_stroff_applicator_t +* ida_hexrays.ui_stroff_ops_t +* ida_idaapi.BADADDR +* ida_idaapi.PLUGIN_HIDE +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_PSEUDOCODE +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.get_custom_viewer_curline +* ida_kernwin.msg +* ida_kernwin.register_action +* ida_kernwin.warning +* ida_lines.tag_remove +* ida_typeinf.PRTYPE_1LINE +* ida_typeinf.print_tinfo +* ida_typeinf.remove_pointer + +#### See also + +
+ +
+ +#### vds19 +
+ + +
+ +#### Source code +hexrays/vds19.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.m_bnot +* ida_hexrays.m_mov +* ida_hexrays.m_or +* ida_hexrays.minsn_visitor_t +* ida_hexrays.mop_t +* ida_hexrays.optinsn_t +* ida_idaapi.PLUGIN_HIDE +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t + +#### See also + +
+ +
+ +#### vds21 +
+ + +
+ +#### Source code +hexrays/vds21.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.Hexrays_Hooks +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.m_call +* ida_idaapi.PLUGIN_HIDE +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t +* ida_kernwin.msg +* ida_kernwin.warning +* ida_nalt.get_op_tinfo +* ida_typeinf.parse_decl +* ida_typeinf.tinfo_t + +#### See also + +
+ +
+ +#### vds3 +
+ + +
+ +#### Source code +hexrays/vds3.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.CMAT_FINAL +* ida_hexrays.CV_FAST +* ida_hexrays.CV_INSNS +* ida_hexrays.Hexrays_Hooks +* ida_hexrays.ITP_ELSE +* ida_hexrays.USE_KEYBOARD +* ida_hexrays.VDI_TAIL +* ida_hexrays.cexpr_t +* ida_hexrays.cit_if +* ida_hexrays.ctree_visitor_t +* ida_hexrays.get_widget_vdui +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.lnot +* ida_hexrays.qswap +* ida_idaapi.PLUGIN_HIDE +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_PSEUDOCODE +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_popup +* ida_kernwin.register_action +* ida_netnode.netnode + +#### See also + +
+ +
+ +#### vds4 +
+ + +
+ +#### Source code +hexrays/vds4.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.get_radix +* ida_hexrays.CIT_COLLAPSED +* ida_hexrays.decompile +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.lvar_uservec_t +* ida_hexrays.restore_user_cmts +* ida_hexrays.restore_user_iflags +* ida_hexrays.restore_user_labels +* ida_hexrays.restore_user_lvar_settings +* ida_hexrays.restore_user_numforms +* ida_hexrays.user_cmts_free +* ida_hexrays.user_iflags_free +* ida_hexrays.user_labels_free +* ida_hexrays.user_numforms_free +* ida_kernwin.get_screen_ea + +#### See also + +
+ +
+ +#### vds5 +
+ + +
+ +#### Source code +hexrays/vds5.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_gdl.display_gdl +* ida_hexrays.Hexrays_Hooks +* ida_hexrays.USE_KEYBOARD +* ida_hexrays.cit_asm +* ida_hexrays.cit_goto +* ida_hexrays.cot_helper +* ida_hexrays.cot_memptr +* ida_hexrays.cot_memref +* ida_hexrays.cot_num +* ida_hexrays.cot_obj +* ida_hexrays.cot_ptr +* ida_hexrays.cot_str +* ida_hexrays.cot_var +* ida_hexrays.ctree_parentee_t +* ida_hexrays.get_ctype_name +* ida_hexrays.get_widget_vdui +* ida_hexrays.init_hexrays_plugin +* ida_idaapi.PLUGIN_HIDE +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_PSEUDOCODE +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_popup +* ida_kernwin.register_action +* ida_kernwin.warning +* ida_lines.tag_remove +* ida_pro.str2user + +#### See also + +
+ +
+ +#### vds6 +
+ + +
+ +#### Source code +hexrays/vds6.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.Hexrays_Hooks +* ida_hexrays.init_hexrays_plugin +* ida_idaapi.PLUGIN_HIDE +* ida_idaapi.PLUGIN_KEEP +* ida_idaapi.plugin_t +* ida_lines.tag_advance +* ida_lines.tag_skipcodes + +#### See also + +
+ +
+ +#### vds7 +
+ + +
+ +#### Source code +hexrays/vds7.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.CMAT_BUILT +* ida_hexrays.CV_FAST +* ida_hexrays.Hexrays_Hooks +* ida_hexrays.cit_block +* ida_hexrays.ctree_visitor_t +* ida_hexrays.init_hexrays_plugin + +#### See also + +
+ +
+ +#### vds8 +
+ + +
+ +#### Source code +hexrays/vds8.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_allins.ARM_svc +* ida_hexrays.get_widget_vdui +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.install_microcode_filter +* ida_hexrays.udc_filter_t +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_PSEUDOCODE +* ida_kernwin.UI_Hooks +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_popup +* ida_kernwin.get_widget_type +* ida_kernwin.register_action + +#### See also + +
+ +
+ +#### vds_create_hint +
+ + +
+ +#### Source code +hexrays/vds_create_hint.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.Hexrays_Hooks +* ida_hexrays.USE_MOUSE +* ida_hexrays.VDI_EXPR +* ida_hexrays.VDI_LVAR +* ida_hexrays.cit_if +* ida_hexrays.cot_call + +#### See also + +
+ +
+ +#### vds_hooks +
+ + +
+ +#### Source code +hexrays/vds_hooks.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.Hexrays_Hooks + +#### See also + +
+ +
+ +#### vds_modify_user_lvars +
+ + +
+ +#### Source code +hexrays/vds_modify_user_lvars.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_hexrays.modify_user_lvars +* ida_hexrays.user_lvar_modifier_t +* ida_typeinf.parse_decl +* ida_typeinf.tinfo_t +* idc.here + +#### See also + +
+ +
+ +#### vds_xrefs +
+ + +
+ +#### Source code +hexrays/vds_xrefs.py + +#### Category +hexrays + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.get_func_name +* ida_hexrays.Hexrays_Hooks +* ida_hexrays.USE_KEYBOARD +* ida_hexrays.VDI_EXPR +* ida_hexrays.VDI_FUNC +* ida_hexrays.cexpr_t +* ida_hexrays.cfunc_t +* ida_hexrays.cinsn_t +* ida_hexrays.decompile +* ida_hexrays.get_widget_vdui +* ida_hexrays.init_hexrays_plugin +* ida_hexrays.open_pseudocode +* ida_hexrays.qstring_printer_t +* ida_idaapi.BADADDR +* ida_kernwin.AST_DISABLE +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE +* ida_kernwin.BWN_PSEUDOCODE +* ida_kernwin.PluginForm +* ida_kernwin.PluginForm.Show +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_popup +* ida_kernwin.register_action +* ida_struct.get_member +* ida_struct.get_struc +* ida_struct.get_struc_id +* ida_typeinf.PRTYPE_1LINE +* ida_typeinf.print_tinfo +* idautils.Functions +* idautils.XrefsTo + +#### See also + +
+ +
+ +## Category: idbhooks + +#### operand_changed +
+ + +
+ +#### Source code +idbhooks/operand_changed.py + +#### Category +idbhooks + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.ALOPT_IGNCLT +* ida_bytes.ALOPT_IGNHEADS +* ida_bytes.get_flags +* ida_bytes.get_max_strlit_length +* ida_bytes.get_opinfo +* ida_bytes.get_strlit_contents +* ida_bytes.is_custfmt +* ida_bytes.is_custom +* ida_bytes.is_enum +* ida_bytes.is_off +* ida_bytes.is_strlit +* ida_bytes.is_stroff +* ida_bytes.is_struct +* ida_enum.get_enum_name +* ida_idp.IDB_Hooks +* ida_nalt.STRENC_DEFAULT +* ida_nalt.get_default_encoding_idx +* ida_nalt.get_encoding_name +* ida_nalt.get_str_encoding_idx +* ida_nalt.get_strtype_bpu +* ida_nalt.opinfo_t +* ida_struct.get_struc_name + +#### See also + +
+ +
+ +#### replay_prototypes_changes +
+ Record and replay changes in function prototypes + +
+ +#### Source code +idbhooks/replay_prototypes_changes.py + +#### Category +idbhooks + +#### Description +This is a sample script, that will record (in memory) all changes in +functions prototypes, in order to re-apply them later. + +To use this script: + - open an IDB (say, "test.idb") + - modify some functions prototypes (e.g., by triggering the 'Y' + shortcut when the cursor is placed on the first address of a + function) + - reload that IDB, *without saving it first* + - call rpc.replay(), to re-apply the modifications. + +Note: 'ti_changed' is also called for changes to the function +frames, but we'll only record function prototypes changes. + +#### Keywords + +#### Uses +* ida_funcs.get_func +* ida_idp.IDB_Hooks +* ida_typeinf.PRTYPE_1LINE +* ida_typeinf.TINFO_DEFINITE +* ida_typeinf.apply_tinfo +* ida_typeinf.get_idati +* ida_typeinf.tinfo_t + +#### See also + +
+ +
+ +## Category: idphooks + +#### ana_emu_out +
+ + +
+ +#### Source code +idphooks/ana_emu_out.py + +#### Category +idphooks + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.get_wide_dword +* ida_bytes.get_wide_word +* ida_idp.CUSTOM_INSN_ITYPE +* ida_idp.IDP_Hooks +* ida_idp.PLFM_ARM +* ida_idp.ph.id +* ida_idp.str2reg +* ida_segregs.get_sreg + +#### See also + +
+ +
+ +#### assemble +
+ + +
+ +#### Source code +idphooks/assemble.py + +#### Category +idphooks + +#### Description + + +#### Keywords + +#### Uses +* ida_idp.IDP_Hooks +* idautils.DecodeInstruction + +#### See also + +
+ +
+ +## Category: pyqt + +#### inject_command +
+ + +
+ +#### Source code +pyqt/inject_command.py + +#### Category +pyqt + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.PluginForm.TWidgetToPyQtWidget +* ida_kernwin.disabled_script_timeout_t +* ida_kernwin.find_widget +* ida_kernwin.process_ui_action + +#### See also + +
+ +
+ +#### paint_over_navbar +
+ + +
+ +#### Source code +pyqt/paint_over_navbar.py + +#### Category +pyqt + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.PluginForm.FormToPyQtWidget +* ida_kernwin.get_navband_pixel +* ida_kernwin.open_navband_window +* ida_segment.get_segm_qty +* ida_segment.getnseg +* idc.here + +#### See also + +
+ +
+ +#### populate_pluginform_with_pyqt_widgets +
+ + +
+ +#### Source code +pyqt/populate_pluginform_with_pyqt_widgets.py + +#### Category +pyqt + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.PluginForm + +#### See also + +
+ +
+ +## Category: uihooks + +#### func_chooser_coloring +
+ + +
+ +#### Source code +uihooks/func_chooser_coloring.py + +#### Category +uihooks + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.get_func +* ida_kernwin.UI_Hooks +* ida_kernwin.enable_chooser_item_attrs + +#### See also + +
+ +
+ +#### lines_rendering +
+ + +
+ +#### Source code +uihooks/lines_rendering.py + +#### Category +uihooks + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.next_head +* ida_idaapi.BADADDR +* ida_kernwin.CK_EXTRA1 +* ida_kernwin.CK_EXTRA10 +* ida_kernwin.CK_EXTRA11 +* ida_kernwin.CK_EXTRA12 +* ida_kernwin.CK_EXTRA13 +* ida_kernwin.CK_EXTRA14 +* ida_kernwin.CK_EXTRA15 +* ida_kernwin.CK_EXTRA16 +* ida_kernwin.CK_EXTRA2 +* ida_kernwin.CK_EXTRA3 +* ida_kernwin.CK_EXTRA4 +* ida_kernwin.CK_EXTRA5 +* ida_kernwin.CK_EXTRA6 +* ida_kernwin.CK_EXTRA7 +* ida_kernwin.CK_EXTRA8 +* ida_kernwin.CK_EXTRA9 +* ida_kernwin.CK_TRACE +* ida_kernwin.CK_TRACE_OVL +* ida_kernwin.LROEF_CPS_RANGE +* ida_kernwin.UI_Hooks +* ida_kernwin.get_screen_ea +* ida_kernwin.line_rendering_output_entry_t +* ida_kernwin.refresh_idaview_anyway + +#### See also + +
+ +
+ +#### log_misc_events +
+ + +
+ +#### Source code +uihooks/log_misc_events.py + +#### Category +uihooks + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.UI_Hooks + +#### See also + +
+ +
+ +#### prevent_jump +
+ + +
+ +#### Source code +uihooks/prevent_jump.py + +#### Category +uihooks + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.UI_Hooks + +#### See also + +
+ +
+ +## Category: widgets + +#### add_menus +
+ + +
+ +#### Source code +widgets/misc/add_menus.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.AST_ENABLE_ALWAYS +* ida_kernwin.SETMENU_INS +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_menu +* ida_kernwin.create_menu +* ida_kernwin.register_action + +#### See also + +
+ +
+ +#### askusingform +
+ + +
+ +#### Source code +widgets/forms/askusingform.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.Choose +* ida_kernwin.Choose.CH_MULTI +* ida_kernwin.Form +* ida_kernwin.PluginForm.FORM_TAB +* ida_kernwin.ask_str + +#### See also + +
+ +
+ +#### choose +
+ + +
+ +#### Source code +widgets/tabular_views/custom/choose.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* Choose +* Choose.ALL_CHANGED +* Choose.CH_CAN_DEL +* Choose.CH_CAN_EDIT +* Choose.CH_CAN_INS +* Choose.CH_CAN_REFRESH +* Choose.CH_RESTORE +* Choose.NOTHING_CHANGED +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_popup +* ida_kernwin.is_chooser_widget +* ida_kernwin.register_action +* ida_kernwin.unregister_action + +#### See also + +
+ +
+ +#### choose_multi +
+ choose multi + +
+ +#### Source code +widgets/tabular_views/custom/choose_multi.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* Choose +* Choose.ALL_CHANGED +* Choose.CHCOL_HEX +* Choose.CH_MULTI +* Choose.NOTHING_CHANGED + +#### See also + +
+ +
+ +#### chooser_with_folders +
+ + +
+ +#### Source code +widgets/tabular_views/custom/chooser_with_folders.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_dirtree.DTE_OK +* ida_dirtree.direntry_t +* ida_dirtree.direntry_t.BADIDX +* ida_dirtree.dirspec_t +* ida_dirtree.dirtree_t +* ida_dirtree.dirtree_t.isdir +* ida_kernwin.CH_CAN_DEL +* ida_kernwin.CH_CAN_EDIT +* ida_kernwin.CH_CAN_INS +* ida_kernwin.CH_HAS_DIRTREE +* ida_kernwin.CH_MULTI +* ida_kernwin.CH_NOIDB +* ida_kernwin.Choose +* ida_kernwin.Choose.ALL_CHANGED +* ida_kernwin.Choose.CHCOL_DRAGHINT +* ida_kernwin.Choose.CHCOL_INODENAME +* ida_kernwin.Choose.CHCOL_PLAIN +* ida_kernwin.ask_str +* ida_netnode.BADNODE +* ida_netnode.netnode + +#### See also + +
+ +
+ +#### custom_graph_with_actions +
+ + +
+ +#### Source code +widgets/graphs/custom_graph_with_actions.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.get_func +* ida_funcs.get_func_name +* ida_graph.GraphViewer +* ida_graph.get_graph_viewer +* ida_graph.screen_graph_selection_t +* ida_graph.viewer_get_selection +* ida_idp.is_call_insn +* ida_kernwin.AST_ENABLE_ALWAYS +* ida_kernwin.View_Hooks +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_dynamic_action_to_popup +* ida_kernwin.get_screen_ea +* ida_ua.decode_insn +* ida_ua.insn_t +* ida_xref.XREF_FAR +* idautils.FuncItems +* idautils.XrefsFrom + +#### See also + +
+ +
+ +#### custom_viewer +
+ + +
+ +#### Source code +widgets/listings/custom_viewer.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.AST_ENABLE_ALWAYS +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.ask_long +* ida_kernwin.ask_str +* ida_kernwin.attach_action_to_popup +* ida_kernwin.register_action +* ida_kernwin.simplecustviewer_t +* ida_kernwin.simplecustviewer_t.Create +* ida_kernwin.simplecustviewer_t.Show +* ida_kernwin.unregister_action +* ida_lines.COLOR_DEFAULT +* ida_lines.COLOR_DNAME +* ida_lines.COLSTR +* ida_lines.SCOLOR_PREFIX +* ida_lines.SCOLOR_VOIDOP + +#### See also + +
+ +
+ +#### func_chooser +
+ + +
+ +#### Source code +widgets/tabular_views/custom/func_chooser.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* Choose +* Choose.ALL_CHANGED +* Choose.CHCOL_HEX +* Choose.CHCOL_PLAIN +* Choose.NOTHING_CHANGED +* idautils.Functions +* idc.del_func +* idc.jumpto + +#### See also + +
+ +
+ +#### jump_next_comment +
+ This example illustrates how one can implement a "jump to next comment" action within IDA's disassembly view. + +
+ +#### Source code +widgets/listings/jump_next_comment.py + +#### Category +widgets + +#### Description +We want our action not only to find the next line containing a comment, +but to also place the cursor at the right horizontal position. + +#### Keywords + +#### Uses +* ida_bytes.next_head +* ida_idaapi.BADADDR +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_DISASM +* ida_kernwin.CVNF_LAZY +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.custom_viewer_jump +* ida_kernwin.get_custom_viewer_location +* ida_kernwin.place_t_as_idaplace_t +* ida_kernwin.register_action +* ida_kernwin.unregister_action +* ida_lines.SCOLOR_AUTOCMT +* ida_lines.SCOLOR_ON +* ida_lines.SCOLOR_REGCMT +* ida_lines.SCOLOR_RPTCMT +* ida_lines.generate_disassembly +* ida_lines.tag_strlen +* ida_moves.lochist_entry_t + +#### See also +* [save_and_restore_listing_pos](#save_and_restore_listing_pos) + +
+ +
+ +#### save_and_restore_listing_pos +
+ + +
+ +#### Source code +widgets/listings/save_and_restore_listing_pos.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_CUSTVIEW +* ida_kernwin.BWN_DISASM +* ida_kernwin.BWN_ENUMS +* ida_kernwin.BWN_PSEUDOCODE +* ida_kernwin.BWN_STRUCTS +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.custom_viewer_jump +* ida_kernwin.find_widget +* ida_kernwin.get_custom_viewer_location +* ida_kernwin.register_action +* ida_kernwin.unregister_action +* ida_moves.lochist_entry_t + +#### See also + +
+ +
+ +#### show_and_hide_waitbox +
+ + +
+ +#### Source code +widgets/waitbox/show_and_hide_waitbox.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_funcs.get_func +* ida_hexrays.DecompilationFailure +* ida_hexrays.decompile +* ida_kernwin.hide_wait_box +* ida_kernwin.replace_wait_box +* ida_kernwin.show_wait_box +* ida_kernwin.user_cancelled +* idautils.Functions + +#### See also + +
+ +
+ +#### show_selected_strings +
+ + +
+ +#### Source code +widgets/tabular_views/string_window/show_selected_strings.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_bytes.get_strlit_contents +* ida_idaapi.BADADDR +* ida_kernwin.AST_DISABLE_FOR_WIDGET +* ida_kernwin.AST_ENABLE_FOR_WIDGET +* ida_kernwin.BWN_STRINGS +* ida_kernwin.action_desc_t +* ida_kernwin.action_handler_t +* ida_kernwin.attach_action_to_popup +* ida_kernwin.find_widget +* ida_kernwin.get_chooser_data +* ida_kernwin.open_strings_window +* ida_kernwin.register_action +* ida_kernwin.unregister_action +* ida_strlist.get_strlist_item +* ida_strlist.string_info_t + +#### See also + +
+ +
+ +#### sync_two_graphs +
+ + +
+ +#### Source code +widgets/graphs/sync_two_graphs.py + +#### Category +widgets + +#### Description + + +#### Keywords + +#### Uses +* ida_graph.GLICTL_CENTER +* ida_graph.viewer_fit_window +* ida_graph.viewer_get_gli +* ida_graph.viewer_set_gli +* ida_kernwin.DP_RIGHT +* ida_kernwin.IDAViewWrapper +* ida_kernwin.MFF_FAST +* ida_kernwin.TCCRT_GRAPH +* ida_kernwin.execute_sync +* ida_kernwin.find_widget +* ida_kernwin.get_custom_viewer_place +* ida_kernwin.jumpto +* ida_kernwin.open_disasm_window +* ida_kernwin.set_dock_pos +* ida_kernwin.set_view_renderer_type +* ida_moves.graph_location_info_t + +#### See also + +
+ +
+ +#### wrap_idaview +
+ manipulate IDAView and graph + +
+ +#### Source code +widgets/idaview/wrap_idaview.py + +#### Category +widgets + +#### Description +This is an example illustrating how to manipulate an existing IDA-provided +view (and thus its graph), in Python. + +#### Keywords +idaview +graph + +#### Uses +* ida_graph.NIF_BG_COLOR +* ida_graph.NIF_FRAME_COLOR +* ida_graph.node_info_t +* ida_kernwin.IDAViewWrapper +* ida_kernwin.MFF_FAST +* ida_kernwin.TCCRT_FLAT +* ida_kernwin.TCCRT_GRAPH +* ida_kernwin.execute_sync + +#### See also +* [custom_graph_with_actions](#custom_graph_with_actions) +* [sync_two_graphs](#sync_two_graphs) + +
+ +
+ diff --git a/examples/pyqt/inject_command.py b/examples/pyqt/inject_command.py index 391d12f..8c7be72 100644 --- a/examples/pyqt/inject_command.py +++ b/examples/pyqt/inject_command.py @@ -1,6 +1,6 @@ # # This example illustrates how one can execute commands in the -# "Output window", from their own widgets. +# "Output" window, from their own widgets. # # In order to do so, we have to be careful that: # - the original, underlying 'cli:Execute' action, that has to be @@ -54,13 +54,13 @@ def show_dialog(): # We'll now have to schedule a call to the standard # 'execute' action. We can't call it right away, because - # the "Output window" doesn't have focus, and thus + # the "Output" window doesn't have focus, and thus # the action will fail to execute since it requires - # the "Output window" as context. + # the "Output" window as context. text = text_edit.toPlainText() def delayed_exec(*args): - output_window_title = "Output window" + output_window_title = "Output" tw = ida_kernwin.find_widget(output_window_title) if not tw: raise Exception("Couldn't find widget '%s'" % output_window_title) diff --git a/examples/uihooks/func_chooser_coloring.py b/examples/uihooks/func_chooser_coloring.py new file mode 100644 index 0000000..30eb727 --- /dev/null +++ b/examples/uihooks/func_chooser_coloring.py @@ -0,0 +1,28 @@ +""" +We color the function in the Function window according to its size. +The larger the function, the darker the color. +""" + +import ida_kernwin +import ida_funcs +import math + +class func_chooser_coloring_hooks_t(ida_kernwin.UI_Hooks): + def __init__(self): + ida_kernwin.UI_Hooks.__init__(self) + self.colors = [0x808080 + (32-i) * 0x400 for i in range(32-5)] + + def get_chooser_item_attrs(self, chobj, n, attrs): + if attrs.color != 0xFFFFFFFF: + return # the color is already set + ea = chobj.get_ea(n) + fn = ida_funcs.get_func(ea) + size = fn.size() + if size < 32: + return # do not color small functions + attrs.color = self.colors[int(math.log2(size))] + +fcch = func_chooser_coloring_hooks_t() +fcch.hook() +ida_kernwin.enable_chooser_item_attrs("Functions", True) + diff --git a/examples/widgets/idaview/wrap_idaview.py b/examples/widgets/idaview/wrap_idaview.py index b5de4fc..06d4589 100644 --- a/examples/widgets/idaview/wrap_idaview.py +++ b/examples/widgets/idaview/wrap_idaview.py @@ -1,9 +1,20 @@ +""" +summary: manipulate IDAView and graph + +description: + This is an example illustrating how to manipulate an existing IDA-provided + view (and thus its graph), in Python. + +keywords: idaview, graph + +see_also: custom_graph_with_actions, sync_two_graphs +""" + + from __future__ import print_function + # ----------------------------------------------------------------------- -# This is an example illustrating how to manipulate an existing IDA-provided -# view (and thus its graph), in Python. # (c) Hex-Rays -# from time import sleep import threading diff --git a/examples/widgets/listings/jump_next_comment.py b/examples/widgets/listings/jump_next_comment.py new file mode 100644 index 0000000..a0e344e --- /dev/null +++ b/examples/widgets/listings/jump_next_comment.py @@ -0,0 +1,112 @@ +""" +summary: + This example illustrates how one can implement a "jump to next comment" + action within IDA's disassembly view. + +description: + We want our action not only to find the next line containing a comment, + but to also place the cursor at the right horizontal position. + + To find that position, we will have to inspect the text that IDA + generates, looking for the start of a comment. + However, we won't be looking for a comment "prefix" (e.g., "; "), + as that would be too fragile. + + Instead, we will look for special "tags" that IDA injects into textual + lines, and that bear semantic information. + + Those tags are primarily used for rendering (i.e., switching colors), + but can also be very handy for spotting tokens of interest (registers, + addresses, comments, prefixes, instruction mnemonics, ...) + +see_also: save_and_restore_listing_pos +""" + +import ida_idaapi +import ida_kernwin +import ida_bytes +import ida_moves +import ida_lines + +def find_comment_visual_position_in_tagged_line(line): + """ + We'll look for tags for all types of comments, and if + found return the visual position of the tag in the line + (using 'ida_lines.tag_strlen') + """ + for cmt_type in [ + ida_lines.SCOLOR_REGCMT, + ida_lines.SCOLOR_RPTCMT, + ida_lines.SCOLOR_AUTOCMT]: + cmt_idx = line.find(ida_lines.SCOLOR_ON + cmt_type) + if cmt_idx > -1: + return ida_lines.tag_strlen(line[:cmt_idx]) + return -1 + + +def jump_next_comment(v): + """ + Starting at the current line, keep generating lines until + a comment is found. When this happens, position the viewer + at the right coordinates. + """ + loc = ida_moves.lochist_entry_t() + if ida_kernwin.get_custom_viewer_location(loc, v): + place = loc.place() + idaplace = ida_kernwin.place_t_as_idaplace_t(place) + ea = idaplace.ea + while ea != ida_idaapi.BADADDR: + _, disass = ida_lines.generate_disassembly( + ea, + 1000, # maximum number of lines + False, # as_stack=False + False) # notags=False - we want tags, in order to spot comments + + found = None + + # If this is the start item, start at the next line + start_lnnum = (idaplace.lnnum + 1) if ea == idaplace.ea else 0 + + for rel_lnnum, line in enumerate(disass[start_lnnum:]): + vis_cx = find_comment_visual_position_in_tagged_line(line) + if vis_cx > -1: + found = (ea, rel_lnnum, vis_cx) + break + + if found is not None: + idaplace.ea = found[0] + idaplace.lnnum = start_lnnum + found[1] + loc.set_place(idaplace) + loc.renderer_info().pos.cx = found[2] + ida_kernwin.custom_viewer_jump(v, loc, ida_kernwin.CVNF_LAZY) + break + + ea = ida_bytes.next_head(ea, ida_idaapi.BADADDR) + + +class jump_next_comment_ah_t(ida_kernwin.action_handler_t): + def activate(self, ctx): + jump_next_comment(ctx.widget) + + def update(self, ctx): + return ida_kernwin.AST_ENABLE_FOR_WIDGET \ + if ctx.widget_type == ida_kernwin.BWN_DISASM \ + else ida_kernwin.AST_DISABLE_FOR_WIDGET + + +ACTION_NAME = "jump_next_comment:jump" +ACTION_LABEL = "Jump to the next comment" +ACTION_SHORTCUT = "Ctrl+Alt+C" +ACTION_HELP = "Press %s to jump to the next comment" % ACTION_SHORTCUT + +if ida_kernwin.unregister_action(ACTION_NAME): + print("Unregistered previously-registered action \"%s\"" % ACTION_LABEL) + +if ida_kernwin.register_action( + ida_kernwin.action_desc_t( + ACTION_NAME, + ACTION_LABEL, + jump_next_comment_ah_t(), + ACTION_SHORTCUT)): + print("Registered action \"%s\". %s" % (ACTION_LABEL, ACTION_HELP)) + diff --git a/examples/widgets/misc/add_menus.py b/examples/widgets/misc/add_menus.py new file mode 100644 index 0000000..87424be --- /dev/null +++ b/examples/widgets/misc/add_menus.py @@ -0,0 +1,51 @@ +# ----------------------------------------------------------------------- +# This is an example illustrating how to add custom menus to IDA, either +# at the toplevel (i.e., the menubar), or as submenus in existing menus. +# (c) Hex-Rays +# + +import ida_kernwin + +# Create custom menus +ida_kernwin.create_menu("MyToplevelMenu", "&Custom menu", "View") +ida_kernwin.create_menu("MySubMenu", "Custom s&ubmenu", "View/Print internal flags") + +# Create some actions +class greeter_t(ida_kernwin.action_handler_t): + def __init__(self, greetings): + ida_kernwin.action_handler_t.__init__(self) + self.greetings = greetings + + def activate(self, ctx): + print(self.greetings) + + def update(self, ctx): + return ida_kernwin.AST_ENABLE_ALWAYS + +ACTION_NAME_0 = "my_action_0" +ACTION_NAME_1 = "my_action_1" +for action_name, greetings in [ + (ACTION_NAME_0, "Hello, world"), + (ACTION_NAME_1, "Hi there"), +]: + desc = ida_kernwin.action_desc_t( + action_name, "Say \"%s\"" % greetings, greeter_t(greetings)) + if ida_kernwin.register_action(desc): + print("Registered action \"%s\"" % action_name) + + +# Then, let's attach some actions to them - both core actions +# and custom ones is allowed (also, any action can be attached +# to multiple menus.) +for action_name, path in [ + (ACTION_NAME_0, "Custom menu"), + (ACTION_NAME_0, "View/Custom submenu/"), + (ACTION_NAME_1, "Custom menu"), + (ACTION_NAME_1, "View/Custom submenu/"), + ("About", "Custom menu"), + ("About", "View/Custom submenu/"), +]: + ida_kernwin.attach_action_to_menu( + path, + action_name, + ida_kernwin.SETMENU_INS) diff --git a/examples/widgets/tabular_views/custom/choose_multi.py b/examples/widgets/tabular_views/custom/choose_multi.py index 02e521c..a564ecb 100644 --- a/examples/widgets/tabular_views/custom/choose_multi.py +++ b/examples/widgets/tabular_views/custom/choose_multi.py @@ -1,3 +1,7 @@ +""" +summary: choose multi +""" + from __future__ import print_function from ida_kernwin import Choose diff --git a/examples/widgets/tabular_views/custom/chooser_with_folders.py b/examples/widgets/tabular_views/custom/chooser_with_folders.py new file mode 100644 index 0000000..d05d6ae --- /dev/null +++ b/examples/widgets/tabular_views/custom/chooser_with_folders.py @@ -0,0 +1,253 @@ + +import inspect + +import ida_kernwin +import ida_dirtree +import ida_netnode + +class my_dirspec_t(ida_dirtree.dirspec_t): + + def __init__(self, chooser): + ida_dirtree.dirspec_t.__init__(self) + self.chooser = chooser + + def log_frame(self): + if self.chooser.dirspec_log: + stack = inspect.stack() + frame, _, _, _, _, _ = stack[1] + args, _, _, values = inspect.getargvalues(frame) + print(">>> %s: args=%s" % (inspect.getframeinfo(frame)[2], [(i, values[i]) for i in args[1:]])) + + def get_name(self, inode): + self.log_frame() + def find_inode(index, ordinal, _inode): + if inode == _inode: + return "inode #%d" % inode + return self.chooser._for_each_item(find_inode) + + def get_inode(self, diridx, name): + self.log_frame() + if not name.startswith("inode #"): + return ida_dirtree.direntry_t.BADIDX + return int(name[7:]) + + def get_size(self, inode): + self.log_frame() + return 1 + + def get_attrs(self, inode): + self.log_frame() + + def rename_inode(self, inode, newname): + self.log_frame() + def set_column0_contents(index, ordinal, _inode): + if inode == _inode: + ordinal = self.chooser._get_ordinal_at(index) + self.chooser.netnode.supset(index, newname, SUPVAL_COL0_DATA_TAG) + return True + return self.chooser._for_each_item(set_column0_contents) + + def unlink_inode(self, inode): + self.log_frame() + +ALTVAL_NEW_ORDINAL_TAG = 'L' +ALTVAL_ORDINAL_TAG = 'O' +ALTVAL_INODE_TAG = 'I' +SUPVAL_COL0_DATA_TAG = '0' +SUPVAL_COL1_DATA_TAG = '1' +SUPVAL_COL2_DATA_TAG = '2' + + +class base_idapython_tree_view_t(ida_kernwin.Choose): + + def __init__(self, title, nitems=100, dirspec_log=True, flags=0): + flags |= ida_kernwin.CH_NOIDB + flags |= ida_kernwin.CH_MULTI + flags |= ida_kernwin.CH_HAS_DIRTREE + ida_kernwin.Choose.__init__(self, + title, + [ + ["First", + 10 + | ida_kernwin.Choose.CHCOL_PLAIN + | ida_kernwin.Choose.CHCOL_DRAGHINT + | ida_kernwin.Choose.CHCOL_INODENAME + ], + ["Second", 10 | ida_kernwin.Choose.CHCOL_PLAIN], + ["Third", 10 | ida_kernwin.Choose.CHCOL_PLAIN], + ], + flags=flags) + self.debug_items = False + self.dirspec_log = dirspec_log + self.dirtree = None + self.dirspec = None + self.netnode = ida_netnode.netnode() + self.netnode.create("$ idapython_tree_view %s" % title) + for i in range(nitems): + self._new_item() + + def _get_new_ordinal(self): + return self.netnode.altval(0, ALTVAL_NEW_ORDINAL_TAG) + + def _set_new_ordinal(self, ordinal): + self.netnode.altset(0, ordinal, ALTVAL_NEW_ORDINAL_TAG) + + def _allocate_ordinal(self): + ordinal = self._get_new_ordinal() + self._set_new_ordinal(ordinal + 1) + return ordinal + + def _move_items(self, src, dst, sz): + self.netnode.altshift(src, dst, sz, ALTVAL_ORDINAL_TAG) + self.netnode.altshift(src, dst, sz, ALTVAL_INODE_TAG) + self.netnode.supshift(src, dst, sz, SUPVAL_COL0_DATA_TAG) + self.netnode.supshift(src, dst, sz, SUPVAL_COL1_DATA_TAG) + self.netnode.supshift(src, dst, sz, SUPVAL_COL2_DATA_TAG) + + def _new_item(self, index=None): + new_ord = self._allocate_ordinal() + new_inode = new_ord + 1000 + nitems = self._get_items_count() + if index is None: + index = nitems + else: + assert(index < nitems) + if index < nitems: + self._move_items(index, index + 1, nitems - index) + self.netnode.altset(index, new_ord, ALTVAL_ORDINAL_TAG) + self.netnode.altset(index, new_inode, ALTVAL_INODE_TAG) + return index, new_ord, new_inode + + def _dump_items(self): + if self.debug_items: + data = [] + def collect(index, ordinal, inode): + data.append([inode] + self._make_item_contents_from_index(index)) + self._for_each_item(collect) + import pprint + print(pprint.pformat(data)) + + def _get_ordinal_at(self, index): + assert(index <= self.netnode.altlast(ALTVAL_ORDINAL_TAG)) + return self.netnode.altval(index, ALTVAL_ORDINAL_TAG) + + def _get_inode_at(self, index): + assert(index <= self.netnode.altlast(ALTVAL_INODE_TAG)) + return self.netnode.altval(index, ALTVAL_INODE_TAG) + + def _for_each_item(self, cb): + for i in range(self._get_items_count()): + rc = cb(i, self._get_ordinal_at(i), self._get_inode_at(i)) + if rc is not None: + return rc + + def _get_items_count(self): + l = self.netnode.altlast(ALTVAL_ORDINAL_TAG) + return 0 if l == ida_netnode.BADNODE else l + 1 + + def _make_item_contents_from_index(self, index): + ordinal = self._get_ordinal_at(index) + c0 = self.netnode.supstr(index, SUPVAL_COL0_DATA_TAG) or "a%d" % ordinal + c1 = self.netnode.supstr(index, SUPVAL_COL1_DATA_TAG) or "b%d" % ordinal + c2 = self.netnode.supstr(index, SUPVAL_COL2_DATA_TAG) or "c%d" % ordinal + return [c0, c1, c2] + + def OnGetLine(self, n): + return self._make_item_contents_from_index(n) + + def OnGetSize(self): + return self._get_items_count() + + def OnGetDirTree(self): + self.dirspec = my_dirspec_t(self) + self.dirtree = ida_dirtree.dirtree_t(self.dirspec) + def do_link(index, ordinal, inode): + de = ida_dirtree.direntry_t(inode, False) + self.dirtree.link("/%s" % self.dirtree.get_entry_name(de)) + self._for_each_item(do_link) + return (self.dirspec, self.dirtree) + + def OnIndexToInode(self, n): + return self._get_inode_at(n) + + # Helper function, to be called by "On*" event handlers. + # This will print all the arguments that were passed + def _print_prev_frame(self): + import inspect + stack = inspect.stack() + frame, _, _, _, _, _ = stack[1] + args, _, _, values = inspect.getargvalues(frame) + print("EVENT: %s: args=%s" % ( + inspect.getframeinfo(frame)[2], + [(i, values[i]) for i in args[1:]])) + + def OnSelectionChange(self, sel): + self._print_prev_frame() + + def OnSelectLine(self, sel): + self._print_prev_frame() + + +class idapython_tree_view_t(base_idapython_tree_view_t): + + def __init__(self, title, nitems=100, dirspec_log=True, flags=0): + flags |= ida_kernwin.CH_CAN_INS + flags |= ida_kernwin.CH_CAN_DEL + flags |= ida_kernwin.CH_CAN_EDIT + base_idapython_tree_view_t.__init__(self, title, nitems, dirspec_log, flags) + + def OnInsertLine(self, sel): + self._print_prev_frame() + + # Add item into storage + index = sel[0] if sel else None + prev_inode = self._get_inode_at(index) if index is not None else None + final_index, new_ordinal, new_inode = self._new_item(sel[0] if sel else None) + + # Link in the tree (unless an absolute path is provided, + # 'link()' will use the current directory, which is set + # by the 'OnInsertLine' caller.) + dt = self.dirtree + cwd = dt.getcwd() + parent_de = dt.resolve_path(cwd) + wanted_rank = -1 + if prev_inode is not None: + wanted_rank = dt.get_rank(parent_de.idx, ida_dirtree.direntry_t(prev_inode, False)) + de = ida_dirtree.direntry_t(new_inode, False) + name = dt.get_entry_name(de) + code = dt.link(name) + assert(code == ida_dirtree.DTE_OK) + if wanted_rank >= 0: + assert(ida_dirtree.dirtree_t.isdir(parent_de)) + cur_rank = dt.get_rank(parent_de.idx, de) + dt.change_rank(cwd + "/" + name, wanted_rank - cur_rank) + self._dump_items() + return [ida_kernwin.Choose.ALL_CHANGED] + [final_index] + + def OnDeleteLine(self, sel): + self._print_prev_frame() + dt = self.dirtree + for index in reversed(sorted(sel)): + # Note: when it comes to deletion of items, the dirtree_t is + # designed in such a way folders contents will be re-computed + # on-demand after the deletion of an inode. Consequently, + # there is no need to perform an unlink() operation here, only + # notify the dirtree that something changed + nitems = self._get_items_count() + assert(index < nitems) + inode = self._get_inode_at(index) + self.netnode.altdel(index, ALTVAL_ORDINAL_TAG) + self.netnode.altdel(index, ALTVAL_INODE_TAG) + self._move_items(index + 1, index, nitems - index + 1) + dt.notify_dirtree(False, inode) + self._dump_items() + return [ida_kernwin.Choose.ALL_CHANGED] + + def OnEditLine(self, sel): + self._print_prev_frame() + for idx in sel: + repl = ida_kernwin.ask_str("", 0, "Please enter replacement for index %d" % idx) + if repl: + self.netnode.supset(idx, repl, SUPVAL_COL0_DATA_TAG) + self._dump_items() + return [ida_kernwin.Choose.ALL_CHANGED] + sel diff --git a/examples/widgets/tabular_views/strings_window/show_selected_strings.py b/examples/widgets/tabular_views/string_window/show_selected_strings.py similarity index 96% rename from examples/widgets/tabular_views/strings_window/show_selected_strings.py rename to examples/widgets/tabular_views/string_window/show_selected_strings.py index cda92a8..d198ab6 100644 --- a/examples/widgets/tabular_views/strings_window/show_selected_strings.py +++ b/examples/widgets/tabular_views/string_window/show_selected_strings.py @@ -1,7 +1,7 @@ # # This example lets the user programmatically retrieve -# the strings currently selected in the "Strings window" +# the strings currently selected in the "Strings" window # import ida_kernwin @@ -57,7 +57,7 @@ klasses = [ show_strings_using_get_strlist_item_ah_t, ] -sw = ida_kernwin.find_widget("Strings window") +sw = ida_kernwin.find_widget("Strings") if not sw: sw = ida_kernwin.open_strings_window(ida_idaapi.BADADDR) diff --git a/idapyswitch.cpp b/idapyswitch.cpp index dd13c32..1be01ad 100644 --- a/idapyswitch.cpp +++ b/idapyswitch.cpp @@ -11,9 +11,8 @@ # include #endif -#include - //lint -esym(1788, iinc) is referenced only by its constructor or destructor +//lint -e754 local struct member 'pylib_entries_t::path_history' not referenced #include #include @@ -214,9 +213,7 @@ typedef qvector pylib_entry_vec_t; struct pylib_entries_t { pylib_entry_vec_t entries; -#ifdef __MAC__ qstrvec_t path_history; -#endif pylib_entry_t *get_entry_for_version(const pylib_version_t &version) { @@ -326,7 +323,12 @@ bool pyver_tool_t::do_pick_sip( const pylib_entry_t &entry, qstring *errbuf) const { - const char *src_sip_subdir = entry.version.minor >= 9 ? "python_3.9" +#ifdef __MAC__ + if ( entry.version.major == 2 ) + return true; // nothing to do for Python2 +#endif + const char *src_sip_subdir = entry.version.minor >= 10 ? "python_3.10" + : entry.version.minor >= 9 ? "python_3.9" : entry.version.minor >= 8 ? "python_3.8" : "python_3.4"; char src_sip_path[QMAXPATH]; diff --git a/idapyswitch_mac.cpp b/idapyswitch_mac.cpp index e7cf1c1..228cbe5 100644 --- a/idapyswitch_mac.cpp +++ b/idapyswitch_mac.cpp @@ -476,6 +476,36 @@ bool pyver_tool_t::do_apply_version( const pylib_entry_t &entry, qstring *errbuf) const { +#ifdef __APPLE_SILICON__ + // modify the libpython symlink in idabin so that it points to the given libpython path + qstring link_name; + link_name.sprnt("libpython%d.link.dylib", entry.version.major); + + char link_path[QMAXPATH]; + qmakepath(link_path, sizeof(link_path), idadir(""), link_name.c_str(), nullptr); + if ( qfileexist(link_path) ) + { + out_verb("Removing existing \"%s\"\n", link_path); + int rc = qunlink(link_path); + if ( rc != 0 ) + { + errbuf->sprnt("Unlinking \"%s\" failed: %s", link_path, winerr(errno)); + return false; + } + } + + const char *target = entry.paths[0].c_str(); + out_verb("Linking \"%s\" -> \"%s\"\n", link_path, target); + int rc = symlink(target, link_path); + if ( rc != 0 ) + { + errbuf->sprnt("Linking to \"%s\" failed: %s", target, winerr(errno)); + return false; + } + + return true; +#else + // patch the libpython load commands in all idapython modules struct ida_local patcher_t : public file_visitor_t { const pylib_entry_t &entry; @@ -488,4 +518,5 @@ bool pyver_tool_t::do_apply_version( }; patcher_t patcher(entry, errbuf); return for_all_plugin_files(patcher, patcher.lerrbuf) == 0; +#endif } diff --git a/idapyswitch_win.cpp b/idapyswitch_win.cpp index 7a2b221..d1a78f0 100644 --- a/idapyswitch_win.cpp +++ b/idapyswitch_win.cpp @@ -191,7 +191,7 @@ static bool is_python3Y_dll_file_name(const char *fname) return fname != nullptr && strnieq(fname, "python3", 7) && qisdigit(fname[7]) - && strieq(&fname[8], ".dll"); + && strieq(get_file_ext(fname), "dll"); } #include @@ -303,7 +303,7 @@ static bool has_appx_path(qstrvec_t paths) //------------------------------------------------------------------------- // ignore known bad Pythons: // 3.8.0 release (https://bugs.python.org/issue37633) -// Anaconda 2019.10 and 2020.02 (https://github.com/ContinuumIO/anaconda-issues/issues/11374) +// Anaconda 2019.10, 2020.02 and 2020.11 (https://github.com/ContinuumIO/anaconda-issues/issues/11374) // AppStore Python on Windows 10 (dll can't be loaded from outside of Appx package) static bool bad_entry(const pylib_entry_t &e) { @@ -315,7 +315,8 @@ static bool bad_entry(const pylib_entry_t &e) return true; } if ( e.display_name == "Anaconda 2019.10" - || e.display_name == "Anaconda 2020.02" ) + || e.display_name == "Anaconda 2020.02" + || e.display_name == "Anaconda 2020.11" ) { out("Ignoring unusable %s \"%s\"\n", e.display_name.c_str(), !e.paths.empty() ? e.paths[0].c_str() : "?"); return true; @@ -371,7 +372,7 @@ static void enum_python_key(pylib_entries_t *result, const HKEY hkey, qstring *_ if ( RegOpenKeyExW(hkey, subkey, 0, KEY_READ, &ihkey) == ERROR_SUCCESS ) { out_verb("Opened \"%ls\"\n", subkey); - //opened an install. get its version from SysVersion value + // opened an install. get its version from SysVersion value qstring sysver; pylib_version_t version; bool ok = read_string(&sysver, ihkey, PYTHON_SYSVER_SUBKEY); @@ -421,7 +422,7 @@ static void enum_python_key(pylib_entries_t *result, const HKEY hkey, qstring *_ } else { - out_verb("Couldn't open \"%s\"\n", subkey); + out("Couldn't open \"%s\"\n", subkey); } } else @@ -534,14 +535,14 @@ void pyver_tool_t::do_find_python_libs(pylib_entries_t *result) const } else { - out_verb("\"%ls\" exists, but no \"%ls\" value found\n", + out("\"%ls\" exists, but no \"%ls\" value found\n", IDA_ADDLIB_SUBKEY, IDA_ADDLIB_VALUE); } RegCloseKey(idahkey); } else { - out_verb("No \"%ls\" key found\n", IDA_ADDLIB_SUBKEY); + out("No \"%ls\" key found\n", IDA_ADDLIB_SUBKEY); } } } diff --git a/idapython.cpp b/idapython.cpp index 1c999ea..2340742 100644 --- a/idapython.cpp +++ b/idapython.cpp @@ -441,13 +441,15 @@ static void handle_python_error( } //------------------------------------------------------------------------- -static const char *insert_coding_cookie(qstring *out) +#define ENCODING_COOKIE "# -*- coding: UTF-8 -*-\n" +#define ENCODING_COOKIE_LEN 24 +static const char *insert_encoding_cookie(qstring *out) { // This is necessary for pre-3.9 parsers, to parse the // input text as proper UTF-8. Python 3.9 switches to the PEG // parser that, by default (and in particular since we don't // pass PyCompilerFlags), will always assume UTF-8. - out->insert(0, "# -*- coding: UTF-8 -*-\n"); + out->insert(0, ENCODING_COOKIE, ENCODING_COOKIE_LEN); return out->c_str(); } @@ -1322,7 +1324,7 @@ bool idapython_plugin_t::_extlang_compile_expr( bool isfunc = false; qstring qstr(expr); - PyObject *code = my_CompileString(insert_coding_cookie(&qstr), "", Py_eval_input); + PyObject *code = my_CompileString(insert_encoding_cookie(&qstr), "", Py_eval_input); if ( code == NULL ) { // try compiling as a list of statements @@ -1330,7 +1332,7 @@ bool idapython_plugin_t::_extlang_compile_expr( handle_python_error(errbuf); qstring func; wrap_in_function(&func, expr, name); - insert_coding_cookie(&func); + insert_encoding_cookie(&func); code = my_CompileString(func.c_str(), "", Py_file_input); if ( code == NULL ) { @@ -1890,7 +1892,7 @@ bool idapython_plugin_t::_cli_execute_line(const char *line) // Compile as an expression qstring qstr(line); - newref_t py_code(my_CompileString(insert_coding_cookie(&qstr), "", Py_eval_input)); + newref_t py_code(my_CompileString(insert_encoding_cookie(&qstr), "", Py_eval_input)); if ( py_code == NULL || PyErr_Occurred() ) { // Not an expression? diff --git a/libpython2.tbd b/libpython2.tbd new file mode 100644 index 0000000..47a81a0 --- /dev/null +++ b/libpython2.tbd @@ -0,0 +1,441 @@ +--- !tapi-tbd +tbd-version: 4 +targets: [ arm64e-macos ] +install-name: '@executable_path/libpython2.link.dylib' +current-version: 2.7.16 +compatibility-version: 2.7 +exports: + - targets: [ arm64e-macos ] + symbols: [ _AEDesc_Convert, _AEDesc_New, _AEDesc_NewBorrowed, _BMObj_Convert, + _BMObj_New, _CFArrayRefObj_Convert, _CFArrayRefObj_New, _CFDictionaryRefObj_Convert, + _CFDictionaryRefObj_New, _CFMutableArrayRefObj_Convert, _CFMutableArrayRefObj_New, + _CFMutableDictionaryRefObj_Convert, _CFMutableDictionaryRefObj_New, + _CFMutableStringRefObj_Convert, _CFMutableStringRefObj_New, + _CFObj_Convert, _CFObj_New, _CFStringRefObj_Convert, _CFStringRefObj_New, + _CFTypeRefObj_Convert, _CFTypeRefObj_New, _CFURLRefObj_Convert, + _CFURLRefObj_New, _CmpInstObj_Convert, _CmpInstObj_New, _CmpObj_Convert, + _CmpObj_New, _CtlObj_Convert, _CtlObj_New, _DlgObj_Convert, + _DlgObj_New, _DlgObj_WhichDialog, _DragObj_Convert, _DragObj_New, + _GWorldObj_Convert, _GWorldObj_New, _GrafObj_Convert, _GrafObj_New, + _ListObj_Convert, _ListObj_New, _MenuObj_Convert, _MenuObj_New, + _OptResObj_Convert, _OptResObj_New, _OptionalCFURLRefObj_Convert, + _PyAST_Check, _PyAST_Compile, _PyAST_FromNode, _PyAST_mod2obj, + _PyAST_obj2mod, _PyArena_AddPyObject, _PyArena_Free, _PyArena_Malloc, + _PyArena_New, _PyArg_Parse, _PyArg_ParseTuple, _PyArg_ParseTupleAndKeywords, + _PyArg_UnpackTuple, _PyArg_VaParse, _PyArg_VaParseTupleAndKeywords, + _PyBaseObject_Type, _PyBaseString_Type, _PyBool_FromLong, + _PyBool_Type, _PyBuffer_FillContiguousStrides, _PyBuffer_FillInfo, + _PyBuffer_FromContiguous, _PyBuffer_FromMemory, _PyBuffer_FromObject, + _PyBuffer_FromReadWriteMemory, _PyBuffer_FromReadWriteObject, + _PyBuffer_GetPointer, _PyBuffer_IsContiguous, _PyBuffer_New, + _PyBuffer_Release, _PyBuffer_ToContiguous, _PyBuffer_Type, + _PyByteArrayIter_Type, _PyByteArray_AsString, _PyByteArray_Concat, + _PyByteArray_Fini, _PyByteArray_FromObject, _PyByteArray_FromStringAndSize, + _PyByteArray_Init, _PyByteArray_Resize, _PyByteArray_Size, + _PyByteArray_Type, _PyCFunction_Call, _PyCFunction_ClearFreeList, + _PyCFunction_Fini, _PyCFunction_GetFlags, _PyCFunction_GetFunction, + _PyCFunction_GetSelf, _PyCFunction_New, _PyCFunction_NewEx, + _PyCFunction_Type, _PyCObject_AsVoidPtr, _PyCObject_FromVoidPtr, + _PyCObject_FromVoidPtrAndDesc, _PyCObject_GetDesc, _PyCObject_Import, + _PyCObject_SetVoidPtr, _PyCObject_Type, _PyCallIter_New, _PyCallIter_Type, + _PyCallable_Check, _PyCapsule_GetContext, _PyCapsule_GetDestructor, + _PyCapsule_GetName, _PyCapsule_GetPointer, _PyCapsule_Import, + _PyCapsule_IsValid, _PyCapsule_New, _PyCapsule_SetContext, + _PyCapsule_SetDestructor, _PyCapsule_SetName, _PyCapsule_SetPointer, + _PyCapsule_Type, _PyCell_Get, _PyCell_New, _PyCell_Set, _PyCell_Type, + _PyClassMethod_New, _PyClassMethod_Type, _PyClass_IsSubclass, + _PyClass_New, _PyClass_Type, _PyCode_Addr2Line, _PyCode_New, + _PyCode_NewEmpty, _PyCode_Optimize, _PyCode_Type, _PyCodec_BackslashReplaceErrors, + _PyCodec_Decode, _PyCodec_Decoder, _PyCodec_Encode, _PyCodec_Encoder, + _PyCodec_IgnoreErrors, _PyCodec_IncrementalDecoder, _PyCodec_IncrementalEncoder, + _PyCodec_LookupError, _PyCodec_Register, _PyCodec_RegisterError, + _PyCodec_ReplaceErrors, _PyCodec_StreamReader, _PyCodec_StreamWriter, + _PyCodec_StrictErrors, _PyCodec_XMLCharRefReplaceErrors, _PyComplex_AsCComplex, + _PyComplex_FromCComplex, _PyComplex_FromDoubles, _PyComplex_ImagAsDouble, + _PyComplex_RealAsDouble, _PyComplex_Type, _PyDescr_NewClassMethod, + _PyDescr_NewGetSet, _PyDescr_NewMember, _PyDescr_NewMethod, + _PyDescr_NewWrapper, _PyDictItems_Type, _PyDictIterItem_Type, + _PyDictIterKey_Type, _PyDictIterValue_Type, _PyDictKeys_Type, + _PyDictProxy_New, _PyDictProxy_Type, _PyDictValues_Type, _PyDict_Clear, + _PyDict_Contains, _PyDict_Copy, _PyDict_DelItem, _PyDict_DelItemString, + _PyDict_Fini, _PyDict_GetItem, _PyDict_GetItemString, _PyDict_Items, + _PyDict_Keys, _PyDict_Merge, _PyDict_MergeFromSeq2, _PyDict_New, + _PyDict_Next, _PyDict_SetItem, _PyDict_SetItemString, _PyDict_Size, + _PyDict_Type, _PyDict_Update, _PyDict_Values, _PyEllipsis_Type, + _PyEnum_Type, _PyErr_BadArgument, _PyErr_BadInternalCall, + _PyErr_CheckSignals, _PyErr_Clear, _PyErr_Display, _PyErr_ExceptionMatches, + _PyErr_Fetch, _PyErr_Format, _PyErr_GivenExceptionMatches, + _PyErr_Mac, _PyErr_NewException, _PyErr_NewExceptionWithDoc, + _PyErr_NoMemory, _PyErr_NormalizeException, _PyErr_Occurred, + _PyErr_Print, _PyErr_PrintEx, _PyErr_ProgramText, _PyErr_Restore, + _PyErr_SetFromErrno, _PyErr_SetFromErrnoWithFilename, _PyErr_SetFromErrnoWithFilenameObject, + _PyErr_SetInterrupt, _PyErr_SetNone, _PyErr_SetObject, _PyErr_SetString, + _PyErr_SyntaxLocation, _PyErr_Warn, _PyErr_WarnEx, _PyErr_WarnExplicit, + _PyErr_WriteUnraisable, _PyEval_AcquireLock, _PyEval_AcquireThread, + _PyEval_CallFunction, _PyEval_CallMethod, _PyEval_CallObjectWithKeywords, + _PyEval_EvalCode, _PyEval_EvalCodeEx, _PyEval_EvalFrame, _PyEval_EvalFrameEx, + _PyEval_GetBuiltins, _PyEval_GetCallStats, _PyEval_GetFrame, + _PyEval_GetFuncDesc, _PyEval_GetFuncName, _PyEval_GetGlobals, + _PyEval_GetLocals, _PyEval_GetRestricted, _PyEval_InitThreads, + _PyEval_MergeCompilerFlags, _PyEval_ReInitThreads, _PyEval_ReleaseLock, + _PyEval_ReleaseThread, _PyEval_RestoreThread, _PyEval_SaveThread, + _PyEval_SetProfile, _PyEval_SetTrace, _PyEval_ThreadsInitialized, + _PyExc_ArithmeticError, _PyExc_AssertionError, _PyExc_AttributeError, + _PyExc_BaseException, _PyExc_BufferError, _PyExc_BytesWarning, + _PyExc_DeprecationWarning, _PyExc_EOFError, _PyExc_EnvironmentError, + _PyExc_Exception, _PyExc_FloatingPointError, _PyExc_FutureWarning, + _PyExc_GeneratorExit, _PyExc_IOError, _PyExc_ImportError, + _PyExc_ImportWarning, _PyExc_IndentationError, _PyExc_IndexError, + _PyExc_KeyError, _PyExc_KeyboardInterrupt, _PyExc_LookupError, + _PyExc_MemoryError, _PyExc_MemoryErrorInst, _PyExc_NameError, + _PyExc_NotImplementedError, _PyExc_OSError, _PyExc_OverflowError, + _PyExc_PendingDeprecationWarning, _PyExc_RecursionErrorInst, + _PyExc_ReferenceError, _PyExc_RuntimeError, _PyExc_RuntimeWarning, + _PyExc_StandardError, _PyExc_StopIteration, _PyExc_SyntaxError, + _PyExc_SyntaxWarning, _PyExc_SystemError, _PyExc_SystemExit, + _PyExc_TabError, _PyExc_TypeError, _PyExc_UnboundLocalError, + _PyExc_UnicodeDecodeError, _PyExc_UnicodeEncodeError, _PyExc_UnicodeError, + _PyExc_UnicodeTranslateError, _PyExc_UnicodeWarning, _PyExc_UserWarning, + _PyExc_ValueError, _PyExc_Warning, _PyExc_ZeroDivisionError, + _PyFPE_dummy, _PyFile_AsFile, _PyFile_DecUseCount, _PyFile_FromFile, + _PyFile_FromString, _PyFile_GetLine, _PyFile_IncUseCount, + _PyFile_Name, _PyFile_SetBufSize, _PyFile_SetEncoding, _PyFile_SetEncodingAndErrors, + _PyFile_SoftSpace, _PyFile_Type, _PyFile_WriteObject, _PyFile_WriteString, + _PyFloat_AsDouble, _PyFloat_AsReprString, _PyFloat_AsString, + _PyFloat_ClearFreeList, _PyFloat_Fini, _PyFloat_FromDouble, + _PyFloat_FromString, _PyFloat_GetInfo, _PyFloat_GetMax, _PyFloat_GetMin, + _PyFloat_Type, _PyFrame_BlockPop, _PyFrame_BlockSetup, _PyFrame_ClearFreeList, + _PyFrame_FastToLocals, _PyFrame_Fini, _PyFrame_GetLineNumber, + _PyFrame_LocalsToFast, _PyFrame_New, _PyFrame_Type, _PyFrozenSet_New, + _PyFrozenSet_Type, _PyFunction_GetClosure, _PyFunction_GetCode, + _PyFunction_GetDefaults, _PyFunction_GetGlobals, _PyFunction_GetModule, + _PyFunction_New, _PyFunction_SetClosure, _PyFunction_SetDefaults, + _PyFunction_Type, _PyFuture_FromAST, _PyGC_Collect, _PyGILState_Ensure, + _PyGILState_GetThisThreadState, _PyGILState_Release, _PyGen_NeedsFinalizing, + _PyGen_New, _PyGen_Type, _PyGetSetDescr_Type, _PyGrammar_AddAccelerators, + _PyGrammar_FindDFA, _PyGrammar_LabelRepr, _PyGrammar_RemoveAccelerators, + _PyImport_AddModule, _PyImport_AppendInittab, _PyImport_Cleanup, + _PyImport_ExecCodeModule, _PyImport_ExecCodeModuleEx, _PyImport_ExtendInittab, + _PyImport_FrozenModules, _PyImport_GetImporter, _PyImport_GetMagicNumber, + _PyImport_GetModuleDict, _PyImport_Import, _PyImport_ImportFrozenModule, + _PyImport_ImportModule, _PyImport_ImportModuleLevel, _PyImport_ImportModuleNoBlock, + _PyImport_Inittab, _PyImport_ReloadModule, _PyInstance_New, + _PyInstance_NewRaw, _PyInstance_Type, _PyInt_AsLong, _PyInt_AsSsize_t, + _PyInt_AsUnsignedLongLongMask, _PyInt_AsUnsignedLongMask, + _PyInt_ClearFreeList, _PyInt_Fini, _PyInt_FromLong, _PyInt_FromSize_t, + _PyInt_FromSsize_t, _PyInt_FromString, _PyInt_FromUnicode, + _PyInt_GetMax, _PyInt_Type, _PyInterpreterState_Clear, _PyInterpreterState_Delete, + _PyInterpreterState_Head, _PyInterpreterState_New, _PyInterpreterState_Next, + _PyInterpreterState_ThreadHead, _PyIter_Next, _PyListIter_Type, + _PyListRevIter_Type, _PyList_Append, _PyList_AsTuple, _PyList_Fini, + _PyList_GetItem, _PyList_GetSlice, _PyList_Insert, _PyList_New, + _PyList_Reverse, _PyList_SetItem, _PyList_SetSlice, _PyList_Size, + _PyList_Sort, _PyList_Type, _PyLong_AsDouble, _PyLong_AsLong, + _PyLong_AsLongAndOverflow, _PyLong_AsLongLong, _PyLong_AsLongLongAndOverflow, + _PyLong_AsSsize_t, _PyLong_AsUnsignedLong, _PyLong_AsUnsignedLongLong, + _PyLong_AsUnsignedLongLongMask, _PyLong_AsUnsignedLongMask, + _PyLong_AsVoidPtr, _PyLong_FromDouble, _PyLong_FromLong, _PyLong_FromLongLong, + _PyLong_FromSize_t, _PyLong_FromSsize_t, _PyLong_FromString, + _PyLong_FromUnicode, _PyLong_FromUnsignedLong, _PyLong_FromUnsignedLongLong, + _PyLong_FromVoidPtr, _PyLong_GetInfo, _PyLong_Type, _PyMacGluePtr_AEDesc_Convert, + _PyMacGluePtr_AEDesc_New, _PyMacGluePtr_AEDesc_NewBorrowed, + _PyMacGluePtr_BMObj_Convert, _PyMacGluePtr_BMObj_New, _PyMacGluePtr_CFArrayRefObj_Convert, + _PyMacGluePtr_CFArrayRefObj_New, _PyMacGluePtr_CFDictionaryRefObj_Convert, + _PyMacGluePtr_CFDictionaryRefObj_New, _PyMacGluePtr_CFMutableArrayRefObj_Convert, + _PyMacGluePtr_CFMutableArrayRefObj_New, _PyMacGluePtr_CFMutableDictionaryRefObj_Convert, + _PyMacGluePtr_CFMutableDictionaryRefObj_New, _PyMacGluePtr_CFMutableStringRefObj_Convert, + _PyMacGluePtr_CFMutableStringRefObj_New, _PyMacGluePtr_CFObj_Convert, + _PyMacGluePtr_CFObj_New, _PyMacGluePtr_CFStringRefObj_Convert, + _PyMacGluePtr_CFStringRefObj_New, _PyMacGluePtr_CFTypeRefObj_Convert, + _PyMacGluePtr_CFTypeRefObj_New, _PyMacGluePtr_CFURLRefObj_Convert, + _PyMacGluePtr_CFURLRefObj_New, _PyMacGluePtr_CmpInstObj_Convert, + _PyMacGluePtr_CmpInstObj_New, _PyMacGluePtr_CmpObj_Convert, + _PyMacGluePtr_CmpObj_New, _PyMacGluePtr_CtlObj_Convert, _PyMacGluePtr_CtlObj_New, + _PyMacGluePtr_DlgObj_Convert, _PyMacGluePtr_DlgObj_New, _PyMacGluePtr_DlgObj_WhichDialog, + _PyMacGluePtr_DragObj_Convert, _PyMacGluePtr_DragObj_New, + _PyMacGluePtr_GWorldObj_Convert, _PyMacGluePtr_GWorldObj_New, + _PyMacGluePtr_GrafObj_Convert, _PyMacGluePtr_GrafObj_New, + _PyMacGluePtr_ListObj_Convert, _PyMacGluePtr_ListObj_New, + _PyMacGluePtr_MenuObj_Convert, _PyMacGluePtr_MenuObj_New, + _PyMacGluePtr_OptResObj_Convert, _PyMacGluePtr_OptResObj_New, + _PyMacGluePtr_OptionalCFURLRefObj_Convert, _PyMacGluePtr_PyMac_BuildFSRef, + _PyMacGluePtr_PyMac_BuildFSSpec, _PyMacGluePtr_PyMac_GetFSRef, + _PyMacGluePtr_PyMac_GetFSSpec, _PyMacGluePtr_QdRGB_Convert, + _PyMacGluePtr_QdRGB_New, _PyMacGluePtr_ResObj_Convert, _PyMacGluePtr_ResObj_New, + _PyMacGluePtr_TEObj_Convert, _PyMacGluePtr_TEObj_New, _PyMacGluePtr_WinObj_Convert, + _PyMacGluePtr_WinObj_New, _PyMacGluePtr_WinObj_WhichWindow, + _PyMac_BuildEventRecord, _PyMac_BuildFSRef, _PyMac_BuildFSSpec, + _PyMac_BuildFixed, _PyMac_BuildNumVersion, _PyMac_BuildOSType, + _PyMac_BuildOptStr255, _PyMac_BuildPoint, _PyMac_BuildRect, + _PyMac_BuildStr255, _PyMac_Buildwide, _PyMac_Error, _PyMac_GetEventRecord, + _PyMac_GetFSRef, _PyMac_GetFSSpec, _PyMac_GetFixed, _PyMac_GetOSErrException, + _PyMac_GetOSType, _PyMac_GetPoint, _PyMac_GetRect, _PyMac_GetStr255, + _PyMac_Getwide, _PyMac_OSErrException, _PyMac_StrError, _PyMapping_Check, + _PyMapping_GetItemString, _PyMapping_HasKey, _PyMapping_HasKeyString, + _PyMapping_Length, _PyMapping_SetItemString, _PyMapping_Size, + _PyMarshal_Init, _PyMarshal_ReadLastObjectFromFile, _PyMarshal_ReadLongFromFile, + _PyMarshal_ReadObjectFromFile, _PyMarshal_ReadObjectFromString, + _PyMarshal_ReadShortFromFile, _PyMarshal_WriteLongToFile, + _PyMarshal_WriteObjectToFile, _PyMarshal_WriteObjectToString, + _PyMem_Free, _PyMem_Malloc, _PyMem_Realloc, _PyMemberDescr_Type, + _PyMember_Get, _PyMember_GetOne, _PyMember_Set, _PyMember_SetOne, + _PyMemoryView_FromBuffer, _PyMemoryView_FromObject, _PyMemoryView_GetContiguous, + _PyMemoryView_Type, _PyMethod_Class, _PyMethod_ClearFreeList, + _PyMethod_Fini, _PyMethod_Function, _PyMethod_New, _PyMethod_Self, + _PyMethod_Type, _PyModule_AddIntConstant, _PyModule_AddObject, + _PyModule_AddStringConstant, _PyModule_GetDict, _PyModule_GetFilename, + _PyModule_GetName, _PyModule_GetWarningsModule, _PyModule_New, + _PyModule_Type, _PyNode_AddChild, _PyNode_Compile, _PyNode_Free, + _PyNode_ListTree, _PyNode_New, _PyNullImporter_Type, _PyNumber_Absolute, + _PyNumber_Add, _PyNumber_And, _PyNumber_AsSsize_t, _PyNumber_Check, + _PyNumber_Coerce, _PyNumber_CoerceEx, _PyNumber_Divide, _PyNumber_Divmod, + _PyNumber_Float, _PyNumber_FloorDivide, _PyNumber_InPlaceAdd, + _PyNumber_InPlaceAnd, _PyNumber_InPlaceDivide, _PyNumber_InPlaceFloorDivide, + _PyNumber_InPlaceLshift, _PyNumber_InPlaceMultiply, _PyNumber_InPlaceOr, + _PyNumber_InPlacePower, _PyNumber_InPlaceRemainder, _PyNumber_InPlaceRshift, + _PyNumber_InPlaceSubtract, _PyNumber_InPlaceTrueDivide, _PyNumber_InPlaceXor, + _PyNumber_Index, _PyNumber_Int, _PyNumber_Invert, _PyNumber_Long, + _PyNumber_Lshift, _PyNumber_Multiply, _PyNumber_Negative, + _PyNumber_Or, _PyNumber_Positive, _PyNumber_Power, _PyNumber_Remainder, + _PyNumber_Rshift, _PyNumber_Subtract, _PyNumber_ToBase, _PyNumber_TrueDivide, + _PyNumber_Xor, _PyOS_AfterFork, _PyOS_FiniInterrupts, _PyOS_InitInterrupts, + _PyOS_InputHook, _PyOS_InterruptOccurred, _PyOS_Readline, + _PyOS_ReadlineFunctionPointer, _PyOS_StdioReadline, _PyOS_ascii_atof, + _PyOS_ascii_formatd, _PyOS_ascii_strtod, _PyOS_double_to_string, + _PyOS_getsig, _PyOS_mystricmp, _PyOS_mystrnicmp, _PyOS_setsig, + _PyOS_snprintf, _PyOS_string_to_double, _PyOS_strtol, _PyOS_strtoul, + _PyOS_vsnprintf, _PyObject_AsCharBuffer, _PyObject_AsFileDescriptor, + _PyObject_AsReadBuffer, _PyObject_AsWriteBuffer, _PyObject_Call, + _PyObject_CallFunction, _PyObject_CallFunctionObjArgs, _PyObject_CallMethod, + _PyObject_CallMethodObjArgs, _PyObject_CallObject, _PyObject_CheckReadBuffer, + _PyObject_ClearWeakRefs, _PyObject_Cmp, _PyObject_Compare, + _PyObject_CopyData, _PyObject_DelItem, _PyObject_DelItemString, + _PyObject_Dir, _PyObject_Format, _PyObject_Free, _PyObject_GC_Del, + _PyObject_GC_Track, _PyObject_GC_UnTrack, _PyObject_GenericGetAttr, + _PyObject_GenericSetAttr, _PyObject_GetAttr, _PyObject_GetAttrString, + _PyObject_GetBuffer, _PyObject_GetItem, _PyObject_GetIter, + _PyObject_HasAttr, _PyObject_HasAttrString, _PyObject_Hash, + _PyObject_HashNotImplemented, _PyObject_Init, _PyObject_InitVar, + _PyObject_IsInstance, _PyObject_IsSubclass, _PyObject_IsTrue, + _PyObject_Length, _PyObject_Malloc, _PyObject_Not, _PyObject_Print, + _PyObject_Realloc, _PyObject_Repr, _PyObject_RichCompare, + _PyObject_RichCompareBool, _PyObject_SelfIter, _PyObject_SetAttr, + _PyObject_SetAttrString, _PyObject_SetItem, _PyObject_Size, + _PyObject_Str, _PyObject_Type, _PyObject_Unicode, _PyParser_ASTFromFile, + _PyParser_ASTFromString, _PyParser_AddToken, _PyParser_Delete, + _PyParser_New, _PyParser_ParseFile, _PyParser_ParseFileFlags, + _PyParser_ParseFileFlagsEx, _PyParser_ParseString, _PyParser_ParseStringFlags, + _PyParser_ParseStringFlagsFilename, _PyParser_ParseStringFlagsFilenameEx, + _PyParser_SetError, _PyParser_SimpleParseFile, _PyParser_SimpleParseFileFlags, + _PyParser_SimpleParseString, _PyParser_SimpleParseStringFilename, + _PyParser_SimpleParseStringFlags, _PyParser_SimpleParseStringFlagsFilename, + _PyProperty_Type, _PyRange_Type, _PyReversed_Type, _PyRun_AnyFile, + _PyRun_AnyFileEx, _PyRun_AnyFileExFlags, _PyRun_AnyFileFlags, + _PyRun_File, _PyRun_FileEx, _PyRun_FileExFlags, _PyRun_FileFlags, + _PyRun_InteractiveLoop, _PyRun_InteractiveLoopFlags, _PyRun_InteractiveOne, + _PyRun_InteractiveOneFlags, _PyRun_SimpleFile, _PyRun_SimpleFileEx, + _PyRun_SimpleFileExFlags, _PyRun_SimpleString, _PyRun_SimpleStringFlags, + _PyRun_String, _PyRun_StringFlags, _PySTEntry_Type, _PyST_GetScope, + _PySeqIter_New, _PySeqIter_Type, _PySequence_Check, _PySequence_Concat, + _PySequence_Contains, _PySequence_Count, _PySequence_DelItem, + _PySequence_DelSlice, _PySequence_Fast, _PySequence_GetItem, + _PySequence_GetSlice, _PySequence_In, _PySequence_InPlaceConcat, + _PySequence_InPlaceRepeat, _PySequence_Index, _PySequence_Length, + _PySequence_List, _PySequence_Repeat, _PySequence_SetItem, + _PySequence_SetSlice, _PySequence_Size, _PySequence_Tuple, + _PySet_Add, _PySet_Clear, _PySet_Contains, _PySet_Discard, + _PySet_Fini, _PySet_New, _PySet_Pop, _PySet_Size, _PySet_Type, + _PySignal_SetWakeupFd, _PySlice_GetIndices, _PySlice_GetIndicesEx, + _PySlice_New, _PySlice_Type, _PyStaticMethod_New, _PyStaticMethod_Type, + _PyString_AsDecodedObject, _PyString_AsDecodedString, _PyString_AsEncodedObject, + _PyString_AsEncodedString, _PyString_AsString, _PyString_AsStringAndSize, + _PyString_Concat, _PyString_ConcatAndDel, _PyString_Decode, + _PyString_DecodeEscape, _PyString_Encode, _PyString_Fini, + _PyString_Format, _PyString_FromFormat, _PyString_FromFormatV, + _PyString_FromString, _PyString_FromStringAndSize, _PyString_InternFromString, + _PyString_InternImmortal, _PyString_InternInPlace, _PyString_Repr, + _PyString_Size, _PyString_Type, _PyStructSequence_InitType, + _PyStructSequence_New, _PyStructSequence_UnnamedField, _PySuper_Type, + _PySymtable_Build, _PySymtable_Free, _PySymtable_Lookup, _PySys_AddWarnOption, + _PySys_GetFile, _PySys_GetObject, _PySys_HasWarnOptions, _PySys_ResetWarnOptions, + _PySys_SetArgv, _PySys_SetArgvEx, _PySys_SetObject, _PySys_SetPath, + _PySys_WriteStderr, _PySys_WriteStdout, _PyThreadState_Clear, + _PyThreadState_Delete, _PyThreadState_DeleteCurrent, _PyThreadState_Get, + _PyThreadState_GetDict, _PyThreadState_New, _PyThreadState_Next, + _PyThreadState_SetAsyncExc, _PyThreadState_Swap, _PyThread_ReInitTLS, + _PyThread_acquire_lock, _PyThread_allocate_lock, _PyThread_create_key, + _PyThread_delete_key, _PyThread_delete_key_value, _PyThread_exit_thread, + _PyThread_free_lock, _PyThread_get_key_value, _PyThread_get_stacksize, + _PyThread_get_thread_ident, _PyThread_init_thread, _PyThread_release_lock, + _PyThread_set_key_value, _PyThread_set_stacksize, _PyThread_start_new_thread, + _PyToken_OneChar, _PyToken_ThreeChars, _PyToken_TwoChars, + _PyTokenizer_Free, _PyTokenizer_FromFile, _PyTokenizer_FromString, + _PyTokenizer_Get, _PyTokenizer_RestoreEncoding, _PyTraceBack_Here, + _PyTraceBack_Print, _PyTraceBack_Type, _PyTupleIter_Type, + _PyTuple_ClearFreeList, _PyTuple_Fini, _PyTuple_GetItem, _PyTuple_GetSlice, + _PyTuple_New, _PyTuple_Pack, _PyTuple_SetItem, _PyTuple_Size, + _PyTuple_Type, _PyType_ClearCache, _PyType_GenericAlloc, _PyType_GenericNew, + _PyType_IsSubtype, _PyType_Modified, _PyType_Ready, _PyType_Type, + _PyUnicodeDecodeError_Create, _PyUnicodeDecodeError_GetEncoding, + _PyUnicodeDecodeError_GetEnd, _PyUnicodeDecodeError_GetObject, + _PyUnicodeDecodeError_GetReason, _PyUnicodeDecodeError_GetStart, + _PyUnicodeDecodeError_SetEnd, _PyUnicodeDecodeError_SetReason, + _PyUnicodeDecodeError_SetStart, _PyUnicodeEncodeError_Create, + _PyUnicodeEncodeError_GetEncoding, _PyUnicodeEncodeError_GetEnd, + _PyUnicodeEncodeError_GetObject, _PyUnicodeEncodeError_GetReason, + _PyUnicodeEncodeError_GetStart, _PyUnicodeEncodeError_SetEnd, + _PyUnicodeEncodeError_SetReason, _PyUnicodeEncodeError_SetStart, + _PyUnicodeTranslateError_Create, _PyUnicodeTranslateError_GetEnd, + _PyUnicodeTranslateError_GetObject, _PyUnicodeTranslateError_GetReason, + _PyUnicodeTranslateError_GetStart, _PyUnicodeTranslateError_SetEnd, + _PyUnicodeTranslateError_SetReason, _PyUnicodeTranslateError_SetStart, + _PyUnicodeUCS2_AsASCIIString, _PyUnicodeUCS2_AsCharmapString, + _PyUnicodeUCS2_AsEncodedObject, _PyUnicodeUCS2_AsEncodedString, + _PyUnicodeUCS2_AsLatin1String, _PyUnicodeUCS2_AsRawUnicodeEscapeString, + _PyUnicodeUCS2_AsUTF16String, _PyUnicodeUCS2_AsUTF32String, + _PyUnicodeUCS2_AsUTF8String, _PyUnicodeUCS2_AsUnicode, _PyUnicodeUCS2_AsUnicodeEscapeString, + _PyUnicodeUCS2_AsWideChar, _PyUnicodeUCS2_ClearFreelist, _PyUnicodeUCS2_Compare, + _PyUnicodeUCS2_Concat, _PyUnicodeUCS2_Contains, _PyUnicodeUCS2_Count, + _PyUnicodeUCS2_Decode, _PyUnicodeUCS2_DecodeASCII, _PyUnicodeUCS2_DecodeCharmap, + _PyUnicodeUCS2_DecodeLatin1, _PyUnicodeUCS2_DecodeRawUnicodeEscape, + _PyUnicodeUCS2_DecodeUTF16, _PyUnicodeUCS2_DecodeUTF16Stateful, + _PyUnicodeUCS2_DecodeUTF32, _PyUnicodeUCS2_DecodeUTF32Stateful, + _PyUnicodeUCS2_DecodeUTF8, _PyUnicodeUCS2_DecodeUTF8Stateful, + _PyUnicodeUCS2_DecodeUnicodeEscape, _PyUnicodeUCS2_Encode, + _PyUnicodeUCS2_EncodeASCII, _PyUnicodeUCS2_EncodeCharmap, + _PyUnicodeUCS2_EncodeDecimal, _PyUnicodeUCS2_EncodeLatin1, + _PyUnicodeUCS2_EncodeRawUnicodeEscape, _PyUnicodeUCS2_EncodeUTF16, + _PyUnicodeUCS2_EncodeUTF32, _PyUnicodeUCS2_EncodeUTF8, _PyUnicodeUCS2_EncodeUnicodeEscape, + _PyUnicodeUCS2_Find, _PyUnicodeUCS2_Format, _PyUnicodeUCS2_FromEncodedObject, + _PyUnicodeUCS2_FromFormat, _PyUnicodeUCS2_FromFormatV, _PyUnicodeUCS2_FromObject, + _PyUnicodeUCS2_FromOrdinal, _PyUnicodeUCS2_FromString, _PyUnicodeUCS2_FromStringAndSize, + _PyUnicodeUCS2_FromUnicode, _PyUnicodeUCS2_FromWideChar, _PyUnicodeUCS2_GetDefaultEncoding, + _PyUnicodeUCS2_GetMax, _PyUnicodeUCS2_GetSize, _PyUnicodeUCS2_Join, + _PyUnicodeUCS2_Partition, _PyUnicodeUCS2_RPartition, _PyUnicodeUCS2_RSplit, + _PyUnicodeUCS2_Replace, _PyUnicodeUCS2_Resize, _PyUnicodeUCS2_RichCompare, + _PyUnicodeUCS2_SetDefaultEncoding, _PyUnicodeUCS2_Split, _PyUnicodeUCS2_Splitlines, + _PyUnicodeUCS2_Tailmatch, _PyUnicodeUCS2_Translate, _PyUnicodeUCS2_TranslateCharmap, + _PyUnicode_AsDecodedObject, _PyUnicode_BuildEncodingMap, _PyUnicode_DecodeUTF7, + _PyUnicode_DecodeUTF7Stateful, _PyUnicode_EncodeUTF7, _PyUnicode_Type, + _PyWeakref_GetObject, _PyWeakref_NewProxy, _PyWeakref_NewRef, + _PyWrapperDescr_Type, _PyWrapper_New, _Py_AddPendingCall, + _Py_AtExit, _Py_BuildValue, _Py_BytesWarningFlag, _Py_CompileString, + _Py_CompileStringFlags, _Py_DebugFlag, _Py_DecRef, _Py_DivisionWarningFlag, + _Py_DontWriteBytecodeFlag, _Py_EndInterpreter, _Py_Exit, _Py_FatalError, + _Py_FdIsInteractive, _Py_FileSystemDefaultEncoding, _Py_Finalize, + _Py_FindMethod, _Py_FindMethodInChain, _Py_FlushLine, _Py_FrozenFlag, + _Py_FrozenMain, _Py_GetArgcArgv, _Py_GetBuildInfo, _Py_GetCompiler, + _Py_GetCopyright, _Py_GetExecPrefix, _Py_GetPath, _Py_GetPlatform, + _Py_GetPrefix, _Py_GetProgramFullPath, _Py_GetProgramName, + _Py_GetPythonHome, _Py_GetRecursionLimit, _Py_GetVersion, + _Py_HashRandomizationFlag, _Py_IgnoreEnvironmentFlag, _Py_IncRef, + _Py_InitModule4_64, _Py_Initialize, _Py_InitializeEx, _Py_InspectFlag, + _Py_InteractiveFlag, _Py_IsInitialized, _Py_Main, _Py_MakePendingCalls, + _Py_NewInterpreter, _Py_NoSiteFlag, _Py_NoUserSiteDirectory, + _Py_OptimizeFlag, _Py_Py3kWarningFlag, _Py_ReprEnter, _Py_ReprLeave, + _Py_SetProgramName, _Py_SetPythonHome, _Py_SetRecursionLimit, + _Py_SubversionRevision, _Py_SubversionShortBranch, _Py_SymtableString, + _Py_TabcheckFlag, _Py_UnicodeFlag, _Py_UniversalNewlineFgets, + _Py_UniversalNewlineFread, _Py_UseClassExceptionsFlag, _Py_VaBuildValue, + _Py_VerboseFlag, _Py_meta_grammar, _Py_pgen, _QdRGB_Convert, + _QdRGB_New, _ResObj_Convert, _ResObj_New, _TEObj_Convert, + _TEObj_New, _WinObj_Convert, _WinObj_New, _WinObj_WhichWindow, + __PyArg_NoKeywords, __PyArg_ParseTupleAndKeywords_SizeT, __PyArg_ParseTuple_SizeT, + __PyArg_Parse_SizeT, __PyArg_VaParseTupleAndKeywords_SizeT, + __PyArg_VaParse_SizeT, __PyBuiltin_Init, __PyByteArray_empty_string, + __PyBytes_FormatAdvanced, __PyCode_CheckLineNumber, __PyCode_ConstantKey, + __PyCodecInfo_GetIncrementalDecoder, __PyCodecInfo_GetIncrementalEncoder, + __PyCodec_DecodeText, __PyCodec_EncodeText, __PyCodec_Lookup, + __PyCodec_LookupTextEncoding, __PyComplex_FormatAdvanced, + __PyDict_Contains, __PyDict_DelItemIf, __PyDict_GetItemWithError, + __PyDict_MaybeUntrack, __PyDict_NewPresized, __PyDict_Next, + __PyErr_BadInternalCall, __PyErr_ReplaceException, __PyEval_CallTracing, + __PyEval_SliceIndex, __PyEval_SliceIndexNotNone, __PyExc_Fini, + __PyExc_Init, __PyFile_SanitizeMode, __PyFloat_FormatAdvanced, + __PyFloat_Init, __PyFloat_Pack4, __PyFloat_Pack8, __PyFloat_Unpack4, + __PyFloat_Unpack8, __PyFrame_Init, __PyGC_Dump, __PyGC_generation0, + __PyGILState_Fini, __PyGILState_Init, __PyImportHooks_Init, + __PyImport_AcquireLock, __PyImport_DynLoadFiletab, __PyImport_Filetab, + __PyImport_FindExtension, __PyImport_FindModule, __PyImport_Fini, + __PyImport_FixupExtension, __PyImport_GetDynLoadFunc, __PyImport_Init, + __PyImport_Inittab, __PyImport_IsScript, __PyImport_LoadDynamicModule, + __PyImport_ReInitLock, __PyImport_ReleaseLock, __PyInstance_Lookup, + __PyInt_AsInt, __PyInt_Format, __PyInt_FormatAdvanced, __PyInt_FromGid, + __PyInt_FromUid, __PyInt_Init, __PyList_Extend, __PyLong_AsByteArray, + __PyLong_AsInt, __PyLong_Copy, __PyLong_DigitValue, __PyLong_Format, + __PyLong_FormatAdvanced, __PyLong_Frexp, __PyLong_FromByteArray, + __PyLong_Init, __PyLong_New, __PyLong_NumBits, __PyLong_Sign, + __PyModule_Clear, __PyNode_SizeOf, __PyNumber_ConvertIntegralToInt, + __PyOS_GetOpt, __PyOS_ReadlineTState, __PyOS_ResetGetOpt, + __PyOS_URandom, __PyOS_ascii_formatd, __PyOS_ascii_strtod, + __PyOS_mystrnicmp_hack, __PyOS_optarg, __PyOS_opterr, __PyOS_optind, + __PyObject_CallFunction_SizeT, __PyObject_CallMethod_SizeT, + __PyObject_Del, __PyObject_Dump, __PyObject_GC_Del, __PyObject_GC_Malloc, + __PyObject_GC_New, __PyObject_GC_NewVar, __PyObject_GC_Resize, + __PyObject_GC_Track, __PyObject_GC_UnTrack, __PyObject_GenericGetAttrWithDict, + __PyObject_GenericSetAttrWithDict, __PyObject_GetDictPtr, + __PyObject_LengthHint, __PyObject_LookupSpecial, __PyObject_New, + __PyObject_NewVar, __PyObject_NextNotImplemented, __PyObject_RealIsInstance, + __PyObject_RealIsSubclass, __PyObject_SlotCompare, __PyObject_Str, + __PyParser_Grammar, __PyParser_TokenNames, __PyRandom_Fini, + __PyRandom_Init, __PySequence_IterSearch, __PySet_Next, __PySet_NextEntry, + __PySet_Update, __PySlice_AdjustIndices, __PySlice_FromIndices, + __PySlice_Unpack, __PyString_Eq, __PyString_FormatLong, __PyString_InsertThousandsGrouping, + __PyString_Join, __PyString_Resize, __PySys_GetSizeOf, __PySys_Init, + __PyThreadState_Current, __PyThreadState_GetFrame, __PyThreadState_Init, + __PyThreadState_Prealloc, __PyThread_CurrentFrames, __PyTrash_delete_later, + __PyTrash_delete_nesting, __PyTrash_deposit_object, __PyTrash_destroy_chain, + __PyTrash_thread_deposit_object, __PyTrash_thread_destroy_chain, + __PyTuple_MaybeUntrack, __PyTuple_Resize, __PyType_Lookup, + __PyUnicodeUCS2_AsDefaultEncodedString, __PyUnicodeUCS2_Fini, + __PyUnicodeUCS2_Init, __PyUnicodeUCS2_IsAlpha, __PyUnicodeUCS2_IsDecimalDigit, + __PyUnicodeUCS2_IsDigit, __PyUnicodeUCS2_IsLinebreak, __PyUnicodeUCS2_IsLowercase, + __PyUnicodeUCS2_IsNumeric, __PyUnicodeUCS2_IsTitlecase, __PyUnicodeUCS2_IsUppercase, + __PyUnicodeUCS2_IsWhitespace, __PyUnicodeUCS2_ToDecimalDigit, + __PyUnicodeUCS2_ToDigit, __PyUnicodeUCS2_ToLowercase, __PyUnicodeUCS2_ToNumeric, + __PyUnicodeUCS2_ToTitlecase, __PyUnicodeUCS2_ToUppercase, + __PyUnicode_DecodeUnicodeInternal, __PyUnicode_FormatAdvanced, + __PyUnicode_TypeRecords, __PyUnicode_XStrip, __PyWarnings_Init, + __PyWeakref_CallableProxyType, __PyWeakref_ClearRef, __PyWeakref_GetWeakrefCount, + __PyWeakref_ProxyType, __PyWeakref_RefType, __Py_Assert, __Py_Assign, + __Py_Attribute, __Py_AugAssign, __Py_BinOp, __Py_BoolOp, __Py_Break, + __Py_BuildValue_SizeT, __Py_Call, __Py_CheckInterval, __Py_CheckRecursionLimit, + __Py_CheckRecursiveCall, __Py_ClassDef, __Py_Compare, __Py_Continue, + __Py_Delete, __Py_Dict, __Py_DictComp, __Py_DisplaySourceLine, + __Py_Ellipsis, __Py_EllipsisObject, __Py_ExceptHandler, __Py_Exec, + __Py_Expr, __Py_Expression, __Py_ExtSlice, __Py_For, __Py_FunctionDef, + __Py_GeneratorExp, __Py_Gid_Converter, __Py_Global, __Py_HashDouble, + __Py_HashPointer, __Py_HashSecret, __Py_If, __Py_IfExp, __Py_Import, + __Py_ImportFrom, __Py_Index, __Py_InsertThousandsGroupingLocale, + __Py_Interactive, __Py_Lambda, __Py_List, __Py_ListComp, __Py_Mangle, + __Py_Module, __Py_Name, __Py_NoneStruct, __Py_NotImplementedStruct, + __Py_Num, __Py_PackageContext, __Py_Pass, __Py_Print, __Py_QnewFlag, + __Py_Raise, __Py_ReadyTypes, __Py_ReleaseInternedStrings, + __Py_Repr, __Py_Return, __Py_Set, __Py_SetComp, __Py_Slice, + __Py_Str, __Py_Subscript, __Py_Suite, __Py_SwappedOp, __Py_Ticker, + __Py_TrueStruct, __Py_TryExcept, __Py_TryFinally, __Py_Tuple, + __Py_Uid_Converter, __Py_UnaryOp, __Py_VaBuildValue_SizeT, + __Py_While, __Py_With, __Py_Yield, __Py_ZeroStruct, __Py_abstract_hack, + __Py_add_one_to_index_C, __Py_add_one_to_index_F, __Py_addarc, + __Py_addbit, __Py_adddfa, __Py_addfirstsets, __Py_addlabel, + __Py_addstate, __Py_alias, __Py_arguments, __Py_ascii_whitespace, + __Py_bytes_capitalize, __Py_bytes_isalnum, __Py_bytes_isalpha, + __Py_bytes_isdigit, __Py_bytes_islower, __Py_bytes_isspace, + __Py_bytes_istitle, __Py_bytes_isupper, __Py_bytes_lower, + __Py_bytes_swapcase, __Py_bytes_title, __Py_bytes_upper, __Py_c_abs, + __Py_c_diff, __Py_c_neg, __Py_c_pow, __Py_c_prod, __Py_c_quot, + __Py_c_sum, __Py_capitalize__doc__, __Py_capsule_hack, __Py_cobject_hack, + __Py_comprehension, __Py_ctype_table, __Py_ctype_tolower, + __Py_ctype_toupper, __Py_delbitset, __Py_dg_dtoa, __Py_dg_freedtoa, + __Py_dg_strtod, __Py_double_round, __Py_findlabel, __Py_freegrammar, + __Py_gitidentifier, __Py_gitversion, __Py_isalnum__doc__, + __Py_isalpha__doc__, __Py_isdigit__doc__, __Py_islower__doc__, + __Py_isspace__doc__, __Py_istitle__doc__, __Py_isupper__doc__, + __Py_keyword, __Py_lower__doc__, __Py_mergebitset, __Py_meta_grammar, + __Py_newbitset, __Py_newgrammar, __Py_parse_inf_or_nan, __Py_pgen, + __Py_samebitset, __Py_swapcase__doc__, __Py_title__doc__, + __Py_translatelabels, __Py_upper__doc__, _asdl_int_seq_new, + _asdl_seq_new, _init_ast, _init_codecs, _init_sre, _init_symtable, + _init_weakref, _initerrno, _initgc, _initimp, _initposix, + _initpwd, _initsignal, _initthread, _initxxsubtype, _initzipimport ] +... diff --git a/libpython3.tbd b/libpython3.tbd new file mode 100644 index 0000000..a527a87 --- /dev/null +++ b/libpython3.tbd @@ -0,0 +1,552 @@ +--- !tapi-tbd +tbd-version: 4 +targets: [ arm64-macos ] +install-name: '@executable_path/libpython3.link.dylib' +current-version: 3.9 +compatibility-version: 3.9 +exports: + - targets: [ arm64-macos ] + symbols: [ _PyAST_CompileEx, _PyAST_CompileObject, _PyAST_FromNode, _PyAST_FromNodeObject, + _PyAST_Validate, _PyArena_AddPyObject, _PyArena_Free, _PyArena_Malloc, + _PyArena_New, _PyArg_Parse, _PyArg_ParseTuple, _PyArg_ParseTupleAndKeywords, + _PyArg_UnpackTuple, _PyArg_VaParse, _PyArg_VaParseTupleAndKeywords, + _PyArg_ValidateKeywordArguments, _PyAsyncGen_New, _PyAsyncGen_Type, + _PyBaseObject_Type, _PyBool_FromLong, _PyBool_Type, _PyBuffer_FillContiguousStrides, + _PyBuffer_FillInfo, _PyBuffer_FromContiguous, _PyBuffer_GetPointer, + _PyBuffer_IsContiguous, _PyBuffer_Release, _PyBuffer_SizeFromFormat, + _PyBuffer_ToContiguous, _PyByteArrayIter_Type, _PyByteArray_AsString, + _PyByteArray_Concat, _PyByteArray_FromObject, _PyByteArray_FromStringAndSize, + _PyByteArray_Resize, _PyByteArray_Size, _PyByteArray_Type, + _PyBytesIter_Type, _PyBytes_AsString, _PyBytes_AsStringAndSize, + _PyBytes_Concat, _PyBytes_ConcatAndDel, _PyBytes_DecodeEscape, + _PyBytes_FromFormat, _PyBytes_FromFormatV, _PyBytes_FromObject, + _PyBytes_FromString, _PyBytes_FromStringAndSize, _PyBytes_Repr, + _PyBytes_Size, _PyBytes_Type, _PyCFunction_Call, _PyCFunction_GetFlags, + _PyCFunction_GetFunction, _PyCFunction_GetSelf, _PyCFunction_NewEx, + _PyCFunction_Type, _PyCMethod_New, _PyCMethod_Type, _PyCallIter_New, + _PyCallIter_Type, _PyCallable_Check, _PyCapsule_GetContext, + _PyCapsule_GetDestructor, _PyCapsule_GetName, _PyCapsule_GetPointer, + _PyCapsule_Import, _PyCapsule_IsValid, _PyCapsule_New, _PyCapsule_SetContext, + _PyCapsule_SetDestructor, _PyCapsule_SetName, _PyCapsule_SetPointer, + _PyCapsule_Type, _PyCell_Get, _PyCell_New, _PyCell_Set, _PyCell_Type, + _PyClassMethodDescr_Type, _PyClassMethod_New, _PyClassMethod_Type, + _PyCode_Addr2Line, _PyCode_New, _PyCode_NewEmpty, _PyCode_NewWithPosOnlyArgs, + _PyCode_Optimize, _PyCode_Type, _PyCodec_BackslashReplaceErrors, + _PyCodec_Decode, _PyCodec_Decoder, _PyCodec_Encode, _PyCodec_Encoder, + _PyCodec_IgnoreErrors, _PyCodec_IncrementalDecoder, _PyCodec_IncrementalEncoder, + _PyCodec_KnownEncoding, _PyCodec_LookupError, _PyCodec_NameReplaceErrors, + _PyCodec_Register, _PyCodec_RegisterError, _PyCodec_ReplaceErrors, + _PyCodec_StreamReader, _PyCodec_StreamWriter, _PyCodec_StrictErrors, + _PyCodec_XMLCharRefReplaceErrors, _PyCompile_OpcodeStackEffect, + _PyCompile_OpcodeStackEffectWithJump, _PyComplex_AsCComplex, + _PyComplex_FromCComplex, _PyComplex_FromDoubles, _PyComplex_ImagAsDouble, + _PyComplex_RealAsDouble, _PyComplex_Type, _PyConfig_Clear, + _PyConfig_InitIsolatedConfig, _PyConfig_InitPythonConfig, + _PyConfig_Read, _PyConfig_SetArgv, _PyConfig_SetBytesArgv, + _PyConfig_SetBytesString, _PyConfig_SetString, _PyConfig_SetWideStringList, + _PyContextToken_Type, _PyContextVar_Get, _PyContextVar_New, + _PyContextVar_Reset, _PyContextVar_Set, _PyContextVar_Type, + _PyContext_Copy, _PyContext_CopyCurrent, _PyContext_Enter, + _PyContext_Exit, _PyContext_New, _PyContext_Type, _PyCoro_New, + _PyCoro_Type, _PyDescr_NewClassMethod, _PyDescr_NewGetSet, + _PyDescr_NewMember, _PyDescr_NewMethod, _PyDescr_NewWrapper, + _PyDictItems_Type, _PyDictIterItem_Type, _PyDictIterKey_Type, + _PyDictIterValue_Type, _PyDictKeys_Type, _PyDictProxy_New, + _PyDictProxy_Type, _PyDictRevIterItem_Type, _PyDictRevIterKey_Type, + _PyDictRevIterValue_Type, _PyDictValues_Type, _PyDict_Clear, + _PyDict_Contains, _PyDict_Copy, _PyDict_DelItem, _PyDict_DelItemString, + _PyDict_GetItem, _PyDict_GetItemString, _PyDict_GetItemWithError, + _PyDict_Items, _PyDict_Keys, _PyDict_Merge, _PyDict_MergeFromSeq2, + _PyDict_New, _PyDict_Next, _PyDict_SetDefault, _PyDict_SetItem, + _PyDict_SetItemString, _PyDict_Size, _PyDict_Type, _PyDict_Update, + _PyDict_Values, _PyEllipsis_Type, _PyEnum_Type, _PyErr_BadArgument, + _PyErr_BadInternalCall, _PyErr_CheckSignals, _PyErr_Clear, + _PyErr_Display, _PyErr_ExceptionMatches, _PyErr_Fetch, _PyErr_Format, + _PyErr_FormatV, _PyErr_GetExcInfo, _PyErr_GivenExceptionMatches, + _PyErr_NewException, _PyErr_NewExceptionWithDoc, _PyErr_NoMemory, + _PyErr_NormalizeException, _PyErr_Occurred, _PyErr_Print, + _PyErr_PrintEx, _PyErr_ProgramText, _PyErr_ProgramTextObject, + _PyErr_ResourceWarning, _PyErr_Restore, _PyErr_SetExcInfo, + _PyErr_SetFromErrno, _PyErr_SetFromErrnoWithFilename, _PyErr_SetFromErrnoWithFilenameObject, + _PyErr_SetFromErrnoWithFilenameObjects, _PyErr_SetImportError, + _PyErr_SetImportErrorSubclass, _PyErr_SetInterrupt, _PyErr_SetNone, + _PyErr_SetObject, _PyErr_SetString, _PyErr_SyntaxLocation, + _PyErr_SyntaxLocationEx, _PyErr_SyntaxLocationObject, _PyErr_WarnEx, + _PyErr_WarnExplicit, _PyErr_WarnExplicitFormat, _PyErr_WarnExplicitObject, + _PyErr_WarnFormat, _PyErr_WriteUnraisable, _PyEval_AcquireLock, + _PyEval_AcquireThread, _PyEval_CallFunction, _PyEval_CallMethod, + _PyEval_CallObjectWithKeywords, _PyEval_EvalCode, _PyEval_EvalCodeEx, + _PyEval_EvalFrame, _PyEval_EvalFrameEx, _PyEval_GetBuiltins, + _PyEval_GetFrame, _PyEval_GetFuncDesc, _PyEval_GetFuncName, + _PyEval_GetGlobals, _PyEval_GetLocals, _PyEval_InitThreads, + _PyEval_MergeCompilerFlags, _PyEval_ReleaseLock, _PyEval_ReleaseThread, + _PyEval_RestoreThread, _PyEval_SaveThread, _PyEval_SetProfile, + _PyEval_SetTrace, _PyEval_ThreadsInitialized, _PyExc_ArithmeticError, + _PyExc_AssertionError, _PyExc_AttributeError, _PyExc_BaseException, + _PyExc_BlockingIOError, _PyExc_BrokenPipeError, _PyExc_BufferError, + _PyExc_BytesWarning, _PyExc_ChildProcessError, _PyExc_ConnectionAbortedError, + _PyExc_ConnectionError, _PyExc_ConnectionRefusedError, _PyExc_ConnectionResetError, + _PyExc_DeprecationWarning, _PyExc_EOFError, _PyExc_EnvironmentError, + _PyExc_Exception, _PyExc_FileExistsError, _PyExc_FileNotFoundError, + _PyExc_FloatingPointError, _PyExc_FutureWarning, _PyExc_GeneratorExit, + _PyExc_IOError, _PyExc_ImportError, _PyExc_ImportWarning, + _PyExc_IndentationError, _PyExc_IndexError, _PyExc_InterruptedError, + _PyExc_IsADirectoryError, _PyExc_KeyError, _PyExc_KeyboardInterrupt, + _PyExc_LookupError, _PyExc_MemoryError, _PyExc_ModuleNotFoundError, + _PyExc_NameError, _PyExc_NotADirectoryError, _PyExc_NotImplementedError, + _PyExc_OSError, _PyExc_OverflowError, _PyExc_PendingDeprecationWarning, + _PyExc_PermissionError, _PyExc_ProcessLookupError, _PyExc_RecursionError, + _PyExc_ReferenceError, _PyExc_ResourceWarning, _PyExc_RuntimeError, + _PyExc_RuntimeWarning, _PyExc_StopAsyncIteration, _PyExc_StopIteration, + _PyExc_SyntaxError, _PyExc_SyntaxWarning, _PyExc_SystemError, + _PyExc_SystemExit, _PyExc_TabError, _PyExc_TimeoutError, _PyExc_TypeError, + _PyExc_UnboundLocalError, _PyExc_UnicodeDecodeError, _PyExc_UnicodeEncodeError, + _PyExc_UnicodeError, _PyExc_UnicodeTranslateError, _PyExc_UnicodeWarning, + _PyExc_UserWarning, _PyExc_ValueError, _PyExc_Warning, _PyExc_ZeroDivisionError, + _PyExceptionClass_Name, _PyException_GetCause, _PyException_GetContext, + _PyException_GetTraceback, _PyException_SetCause, _PyException_SetContext, + _PyException_SetTraceback, _PyFile_FromFd, _PyFile_GetLine, + _PyFile_NewStdPrinter, _PyFile_OpenCode, _PyFile_OpenCodeObject, + _PyFile_SetOpenCodeHook, _PyFile_WriteObject, _PyFile_WriteString, + _PyFilter_Type, _PyFloat_AsDouble, _PyFloat_FromDouble, _PyFloat_FromString, + _PyFloat_GetInfo, _PyFloat_GetMax, _PyFloat_GetMin, _PyFloat_Type, + _PyFrame_BlockPop, _PyFrame_BlockSetup, _PyFrame_FastToLocals, + _PyFrame_FastToLocalsWithError, _PyFrame_GetBack, _PyFrame_GetCode, + _PyFrame_GetLineNumber, _PyFrame_LocalsToFast, _PyFrame_New, + _PyFrame_Type, _PyFrozenSet_New, _PyFrozenSet_Type, _PyFunction_GetAnnotations, + _PyFunction_GetClosure, _PyFunction_GetCode, _PyFunction_GetDefaults, + _PyFunction_GetGlobals, _PyFunction_GetKwDefaults, _PyFunction_GetModule, + _PyFunction_New, _PyFunction_NewWithQualName, _PyFunction_SetAnnotations, + _PyFunction_SetClosure, _PyFunction_SetDefaults, _PyFunction_SetKwDefaults, + _PyFunction_Type, _PyFuture_FromAST, _PyFuture_FromASTObject, + _PyGC_Collect, _PyGILState_Check, _PyGILState_Ensure, _PyGILState_GetThisThreadState, + _PyGILState_Release, _PyGen_New, _PyGen_NewWithQualName, _PyGen_Type, + _PyGetSetDescr_Type, _PyHash_GetFuncDef, _PyImport_AddModule, + _PyImport_AddModuleObject, _PyImport_AppendInittab, _PyImport_ExecCodeModule, + _PyImport_ExecCodeModuleEx, _PyImport_ExecCodeModuleObject, + _PyImport_ExecCodeModuleWithPathnames, _PyImport_ExtendInittab, + _PyImport_FrozenModules, _PyImport_GetImporter, _PyImport_GetMagicNumber, + _PyImport_GetMagicTag, _PyImport_GetModule, _PyImport_GetModuleDict, + _PyImport_Import, _PyImport_ImportFrozenModule, _PyImport_ImportFrozenModuleObject, + _PyImport_ImportModule, _PyImport_ImportModuleLevel, _PyImport_ImportModuleLevelObject, + _PyImport_ImportModuleNoBlock, _PyImport_Inittab, _PyImport_ReloadModule, + _PyIndex_Check, _PyInit__abc, _PyInit__ast, _PyInit__codecs, + _PyInit__collections, _PyInit__functools, _PyInit__imp, _PyInit__io, + _PyInit__locale, _PyInit__operator, _PyInit__peg_parser, _PyInit__signal, + _PyInit__sre, _PyInit__stat, _PyInit__string, _PyInit__symtable, + _PyInit__thread, _PyInit__tracemalloc, _PyInit__weakref, _PyInit_atexit, + _PyInit_errno, _PyInit_faulthandler, _PyInit_gc, _PyInit_itertools, + _PyInit_posix, _PyInit_pwd, _PyInit_time, _PyInit_xxsubtype, + _PyInstanceMethod_Function, _PyInstanceMethod_New, _PyInstanceMethod_Type, + _PyInterpreterState_Clear, _PyInterpreterState_Delete, _PyInterpreterState_Get, + _PyInterpreterState_GetDict, _PyInterpreterState_GetID, _PyInterpreterState_Head, + _PyInterpreterState_Main, _PyInterpreterState_New, _PyInterpreterState_Next, + _PyInterpreterState_ThreadHead, _PyIter_Check, _PyIter_Next, + _PyListIter_Type, _PyListRevIter_Type, _PyList_Append, _PyList_AsTuple, + _PyList_GetItem, _PyList_GetSlice, _PyList_Insert, _PyList_New, + _PyList_Reverse, _PyList_SetItem, _PyList_SetSlice, _PyList_Size, + _PyList_Sort, _PyList_Type, _PyLongRangeIter_Type, _PyLong_AsDouble, + _PyLong_AsLong, _PyLong_AsLongAndOverflow, _PyLong_AsLongLong, + _PyLong_AsLongLongAndOverflow, _PyLong_AsSize_t, _PyLong_AsSsize_t, + _PyLong_AsUnsignedLong, _PyLong_AsUnsignedLongLong, _PyLong_AsUnsignedLongLongMask, + _PyLong_AsUnsignedLongMask, _PyLong_AsVoidPtr, _PyLong_FromDouble, + _PyLong_FromLong, _PyLong_FromLongLong, _PyLong_FromSize_t, + _PyLong_FromSsize_t, _PyLong_FromString, _PyLong_FromUnicode, + _PyLong_FromUnicodeObject, _PyLong_FromUnsignedLong, _PyLong_FromUnsignedLongLong, + _PyLong_FromVoidPtr, _PyLong_GetInfo, _PyLong_Type, _PyMap_Type, + _PyMapping_Check, _PyMapping_GetItemString, _PyMapping_HasKey, + _PyMapping_HasKeyString, _PyMapping_Items, _PyMapping_Keys, + _PyMapping_Length, _PyMapping_SetItemString, _PyMapping_Size, + _PyMapping_Values, _PyMarshal_Init, _PyMarshal_ReadLastObjectFromFile, + _PyMarshal_ReadLongFromFile, _PyMarshal_ReadObjectFromFile, + _PyMarshal_ReadObjectFromString, _PyMarshal_ReadShortFromFile, + _PyMarshal_WriteLongToFile, _PyMarshal_WriteObjectToFile, + _PyMarshal_WriteObjectToString, _PyMem_Calloc, _PyMem_Free, + _PyMem_GetAllocator, _PyMem_Malloc, _PyMem_RawCalloc, _PyMem_RawFree, + _PyMem_RawMalloc, _PyMem_RawRealloc, _PyMem_Realloc, _PyMem_SetAllocator, + _PyMem_SetupDebugHooks, _PyMemberDescr_Type, _PyMember_GetOne, + _PyMember_SetOne, _PyMemoryView_FromBuffer, _PyMemoryView_FromMemory, + _PyMemoryView_FromObject, _PyMemoryView_GetContiguous, _PyMemoryView_Type, + _PyMethodDescr_Type, _PyMethod_Function, _PyMethod_New, _PyMethod_Self, + _PyMethod_Type, _PyModuleDef_Init, _PyModuleDef_Type, _PyModule_AddFunctions, + _PyModule_AddIntConstant, _PyModule_AddObject, _PyModule_AddStringConstant, + _PyModule_AddType, _PyModule_Create2, _PyModule_ExecDef, _PyModule_FromDefAndSpec2, + _PyModule_GetDef, _PyModule_GetDict, _PyModule_GetFilename, + _PyModule_GetFilenameObject, _PyModule_GetName, _PyModule_GetNameObject, + _PyModule_GetState, _PyModule_New, _PyModule_NewObject, _PyModule_SetDocString, + _PyModule_Type, _PyNode_AddChild, _PyNode_Compile, _PyNode_Free, + _PyNode_ListTree, _PyNode_New, _PyNumber_Absolute, _PyNumber_Add, + _PyNumber_And, _PyNumber_AsSsize_t, _PyNumber_Check, _PyNumber_Divmod, + _PyNumber_Float, _PyNumber_FloorDivide, _PyNumber_InPlaceAdd, + _PyNumber_InPlaceAnd, _PyNumber_InPlaceFloorDivide, _PyNumber_InPlaceLshift, + _PyNumber_InPlaceMatrixMultiply, _PyNumber_InPlaceMultiply, + _PyNumber_InPlaceOr, _PyNumber_InPlacePower, _PyNumber_InPlaceRemainder, + _PyNumber_InPlaceRshift, _PyNumber_InPlaceSubtract, _PyNumber_InPlaceTrueDivide, + _PyNumber_InPlaceXor, _PyNumber_Index, _PyNumber_Invert, _PyNumber_Long, + _PyNumber_Lshift, _PyNumber_MatrixMultiply, _PyNumber_Multiply, + _PyNumber_Negative, _PyNumber_Or, _PyNumber_Positive, _PyNumber_Power, + _PyNumber_Remainder, _PyNumber_Rshift, _PyNumber_Subtract, + _PyNumber_ToBase, _PyNumber_TrueDivide, _PyNumber_Xor, _PyODictItems_Type, + _PyODictIter_Type, _PyODictKeys_Type, _PyODictValues_Type, + _PyODict_DelItem, _PyODict_New, _PyODict_SetItem, _PyODict_Type, + _PyOS_AfterFork, _PyOS_AfterFork_Child, _PyOS_AfterFork_Parent, + _PyOS_BeforeFork, _PyOS_FSPath, _PyOS_InitInterrupts, _PyOS_InputHook, + _PyOS_InterruptOccurred, _PyOS_Readline, _PyOS_ReadlineFunctionPointer, + _PyOS_double_to_string, _PyOS_getsig, _PyOS_mystricmp, _PyOS_mystrnicmp, + _PyOS_setsig, _PyOS_snprintf, _PyOS_string_to_double, _PyOS_strtol, + _PyOS_strtoul, _PyOS_vsnprintf, _PyObject_ASCII, _PyObject_AsCharBuffer, + _PyObject_AsFileDescriptor, _PyObject_AsReadBuffer, _PyObject_AsWriteBuffer, + _PyObject_Bytes, _PyObject_Call, _PyObject_CallFinalizer, + _PyObject_CallFinalizerFromDealloc, _PyObject_CallFunction, + _PyObject_CallFunctionObjArgs, _PyObject_CallMethod, _PyObject_CallMethodObjArgs, + _PyObject_CallNoArgs, _PyObject_CallObject, _PyObject_Calloc, + _PyObject_CheckBuffer, _PyObject_CheckReadBuffer, _PyObject_ClearWeakRefs, + _PyObject_CopyData, _PyObject_DelItem, _PyObject_DelItemString, + _PyObject_Dir, _PyObject_Format, _PyObject_Free, _PyObject_GC_Del, + _PyObject_GC_IsFinalized, _PyObject_GC_IsTracked, _PyObject_GC_Track, + _PyObject_GC_UnTrack, _PyObject_GET_WEAKREFS_LISTPTR, _PyObject_GenericGetAttr, + _PyObject_GenericGetDict, _PyObject_GenericSetAttr, _PyObject_GenericSetDict, + _PyObject_GetArenaAllocator, _PyObject_GetAttr, _PyObject_GetAttrString, + _PyObject_GetBuffer, _PyObject_GetItem, _PyObject_GetIter, + _PyObject_HasAttr, _PyObject_HasAttrString, _PyObject_Hash, + _PyObject_HashNotImplemented, _PyObject_IS_GC, _PyObject_Init, + _PyObject_InitVar, _PyObject_IsInstance, _PyObject_IsSubclass, + _PyObject_IsTrue, _PyObject_Length, _PyObject_LengthHint, + _PyObject_Malloc, _PyObject_Not, _PyObject_Print, _PyObject_Realloc, + _PyObject_Repr, _PyObject_RichCompare, _PyObject_RichCompareBool, + _PyObject_SelfIter, _PyObject_SetArenaAllocator, _PyObject_SetAttr, + _PyObject_SetAttrString, _PyObject_SetItem, _PyObject_Size, + _PyObject_Str, _PyObject_Type, _PyObject_VectorcallDict, _PyObject_VectorcallMethod, + _PyParser_ASTFromFile, _PyParser_ASTFromFileObject, _PyParser_ASTFromString, + _PyParser_ASTFromStringObject, _PyParser_ClearError, _PyParser_ParseFile, + _PyParser_ParseFileFlags, _PyParser_ParseFileFlagsEx, _PyParser_ParseFileObject, + _PyParser_ParseString, _PyParser_ParseStringFlags, _PyParser_ParseStringFlagsFilename, + _PyParser_ParseStringFlagsFilenameEx, _PyParser_ParseStringObject, + _PyParser_SetError, _PyParser_SimpleParseFile, _PyParser_SimpleParseFileFlags, + _PyParser_SimpleParseString, _PyParser_SimpleParseStringFlags, + _PyParser_SimpleParseStringFlagsFilename, _PyPegen_ASTFromFileObject, + _PyPegen_ASTFromFilename, _PyPegen_ASTFromString, _PyPegen_ASTFromStringObject, + _PyPickleBuffer_FromObject, _PyPickleBuffer_GetBuffer, _PyPickleBuffer_Release, + _PyPickleBuffer_Type, _PyPreConfig_InitIsolatedConfig, _PyPreConfig_InitPythonConfig, + _PyProperty_Type, _PyRangeIter_Type, _PyRange_Type, _PyReversed_Type, + _PyRun_AnyFile, _PyRun_AnyFileEx, _PyRun_AnyFileExFlags, _PyRun_AnyFileFlags, + _PyRun_File, _PyRun_FileEx, _PyRun_FileExFlags, _PyRun_FileFlags, + _PyRun_InteractiveLoop, _PyRun_InteractiveLoopFlags, _PyRun_InteractiveOne, + _PyRun_InteractiveOneFlags, _PyRun_InteractiveOneObject, _PyRun_SimpleFile, + _PyRun_SimpleFileEx, _PyRun_SimpleFileExFlags, _PyRun_SimpleString, + _PyRun_SimpleStringFlags, _PyRun_String, _PyRun_StringFlags, + _PySTEntry_Type, _PyST_GetScope, _PySeqIter_New, _PySeqIter_Type, + _PySequence_Check, _PySequence_Concat, _PySequence_Contains, + _PySequence_Count, _PySequence_DelItem, _PySequence_DelSlice, + _PySequence_Fast, _PySequence_GetItem, _PySequence_GetSlice, + _PySequence_In, _PySequence_InPlaceConcat, _PySequence_InPlaceRepeat, + _PySequence_Index, _PySequence_Length, _PySequence_List, _PySequence_Repeat, + _PySequence_SetItem, _PySequence_SetSlice, _PySequence_Size, + _PySequence_Tuple, _PySetIter_Type, _PySet_Add, _PySet_Clear, + _PySet_Contains, _PySet_Discard, _PySet_New, _PySet_Pop, _PySet_Size, + _PySet_Type, _PySlice_AdjustIndices, _PySlice_GetIndices, + _PySlice_GetIndicesEx, _PySlice_New, _PySlice_Type, _PySlice_Unpack, + _PyState_AddModule, _PyState_FindModule, _PyState_RemoveModule, + _PyStaticMethod_New, _PyStaticMethod_Type, _PyStatus_Error, + _PyStatus_Exception, _PyStatus_Exit, _PyStatus_IsError, _PyStatus_IsExit, + _PyStatus_NoMemory, _PyStatus_Ok, _PyStdPrinter_Type, _PyStructSequence_GetItem, + _PyStructSequence_InitType, _PyStructSequence_InitType2, _PyStructSequence_New, + _PyStructSequence_NewType, _PyStructSequence_SetItem, _PySuper_Type, + _PySymtable_Build, _PySymtable_BuildObject, _PySymtable_Free, + _PySymtable_Lookup, _PySys_AddAuditHook, _PySys_AddWarnOption, + _PySys_AddWarnOptionUnicode, _PySys_AddXOption, _PySys_Audit, + _PySys_FormatStderr, _PySys_FormatStdout, _PySys_GetObject, + _PySys_GetXOptions, _PySys_HasWarnOptions, _PySys_ResetWarnOptions, + _PySys_SetArgv, _PySys_SetArgvEx, _PySys_SetObject, _PySys_SetPath, + _PySys_WriteStderr, _PySys_WriteStdout, _PyThreadState_Clear, + _PyThreadState_Delete, _PyThreadState_DeleteCurrent, _PyThreadState_Get, + _PyThreadState_GetDict, _PyThreadState_GetFrame, _PyThreadState_GetID, + _PyThreadState_GetInterpreter, _PyThreadState_New, _PyThreadState_Next, + _PyThreadState_SetAsyncExc, _PyThreadState_Swap, _PyThread_GetInfo, + _PyThread_ReInitTLS, _PyThread_acquire_lock, _PyThread_acquire_lock_timed, + _PyThread_allocate_lock, _PyThread_create_key, _PyThread_delete_key, + _PyThread_delete_key_value, _PyThread_exit_thread, _PyThread_free_lock, + _PyThread_get_key_value, _PyThread_get_stacksize, _PyThread_get_thread_ident, + _PyThread_get_thread_native_id, _PyThread_init_thread, _PyThread_release_lock, + _PyThread_set_key_value, _PyThread_set_stacksize, _PyThread_start_new_thread, + _PyThread_tss_alloc, _PyThread_tss_create, _PyThread_tss_delete, + _PyThread_tss_free, _PyThread_tss_get, _PyThread_tss_is_created, + _PyThread_tss_set, _PyToken_OneChar, _PyToken_ThreeChars, + _PyToken_TwoChars, _PyTraceBack_Here, _PyTraceBack_Print, + _PyTraceBack_Type, _PyTraceMalloc_Track, _PyTraceMalloc_Untrack, + _PyTupleIter_Type, _PyTuple_GetItem, _PyTuple_GetSlice, _PyTuple_New, + _PyTuple_Pack, _PyTuple_SetItem, _PyTuple_Size, _PyTuple_Type, + _PyType_ClearCache, _PyType_FromModuleAndSpec, _PyType_FromSpec, + _PyType_FromSpecWithBases, _PyType_GenericAlloc, _PyType_GenericNew, + _PyType_GetFlags, _PyType_GetModule, _PyType_GetModuleState, + _PyType_GetSlot, _PyType_IsSubtype, _PyType_Modified, _PyType_Ready, + _PyType_Type, _PyUnicodeDecodeError_Create, _PyUnicodeDecodeError_GetEncoding, + _PyUnicodeDecodeError_GetEnd, _PyUnicodeDecodeError_GetObject, + _PyUnicodeDecodeError_GetReason, _PyUnicodeDecodeError_GetStart, + _PyUnicodeDecodeError_SetEnd, _PyUnicodeDecodeError_SetReason, + _PyUnicodeDecodeError_SetStart, _PyUnicodeEncodeError_Create, + _PyUnicodeEncodeError_GetEncoding, _PyUnicodeEncodeError_GetEnd, + _PyUnicodeEncodeError_GetObject, _PyUnicodeEncodeError_GetReason, + _PyUnicodeEncodeError_GetStart, _PyUnicodeEncodeError_SetEnd, + _PyUnicodeEncodeError_SetReason, _PyUnicodeEncodeError_SetStart, + _PyUnicodeIter_Type, _PyUnicodeTranslateError_Create, _PyUnicodeTranslateError_GetEnd, + _PyUnicodeTranslateError_GetObject, _PyUnicodeTranslateError_GetReason, + _PyUnicodeTranslateError_GetStart, _PyUnicodeTranslateError_SetEnd, + _PyUnicodeTranslateError_SetReason, _PyUnicodeTranslateError_SetStart, + _PyUnicode_Append, _PyUnicode_AppendAndDel, _PyUnicode_AsASCIIString, + _PyUnicode_AsCharmapString, _PyUnicode_AsDecodedObject, _PyUnicode_AsDecodedUnicode, + _PyUnicode_AsEncodedObject, _PyUnicode_AsEncodedString, _PyUnicode_AsEncodedUnicode, + _PyUnicode_AsLatin1String, _PyUnicode_AsRawUnicodeEscapeString, + _PyUnicode_AsUCS4, _PyUnicode_AsUCS4Copy, _PyUnicode_AsUTF16String, + _PyUnicode_AsUTF32String, _PyUnicode_AsUTF8, _PyUnicode_AsUTF8AndSize, + _PyUnicode_AsUTF8String, _PyUnicode_AsUnicode, _PyUnicode_AsUnicodeAndSize, + _PyUnicode_AsUnicodeCopy, _PyUnicode_AsUnicodeEscapeString, + _PyUnicode_AsWideChar, _PyUnicode_AsWideCharString, _PyUnicode_BuildEncodingMap, + _PyUnicode_Compare, _PyUnicode_CompareWithASCIIString, _PyUnicode_Concat, + _PyUnicode_Contains, _PyUnicode_CopyCharacters, _PyUnicode_Count, + _PyUnicode_Decode, _PyUnicode_DecodeASCII, _PyUnicode_DecodeCharmap, + _PyUnicode_DecodeFSDefault, _PyUnicode_DecodeFSDefaultAndSize, + _PyUnicode_DecodeLatin1, _PyUnicode_DecodeLocale, _PyUnicode_DecodeLocaleAndSize, + _PyUnicode_DecodeRawUnicodeEscape, _PyUnicode_DecodeUTF16, + _PyUnicode_DecodeUTF16Stateful, _PyUnicode_DecodeUTF32, _PyUnicode_DecodeUTF32Stateful, + _PyUnicode_DecodeUTF7, _PyUnicode_DecodeUTF7Stateful, _PyUnicode_DecodeUTF8, + _PyUnicode_DecodeUTF8Stateful, _PyUnicode_DecodeUnicodeEscape, + _PyUnicode_Encode, _PyUnicode_EncodeASCII, _PyUnicode_EncodeCharmap, + _PyUnicode_EncodeDecimal, _PyUnicode_EncodeFSDefault, _PyUnicode_EncodeLatin1, + _PyUnicode_EncodeLocale, _PyUnicode_EncodeRawUnicodeEscape, + _PyUnicode_EncodeUTF16, _PyUnicode_EncodeUTF32, _PyUnicode_EncodeUTF7, + _PyUnicode_EncodeUTF8, _PyUnicode_EncodeUnicodeEscape, _PyUnicode_FSConverter, + _PyUnicode_FSDecoder, _PyUnicode_Fill, _PyUnicode_Find, _PyUnicode_FindChar, + _PyUnicode_Format, _PyUnicode_FromEncodedObject, _PyUnicode_FromFormat, + _PyUnicode_FromFormatV, _PyUnicode_FromKindAndData, _PyUnicode_FromObject, + _PyUnicode_FromOrdinal, _PyUnicode_FromString, _PyUnicode_FromStringAndSize, + _PyUnicode_FromUnicode, _PyUnicode_FromWideChar, _PyUnicode_GetDefaultEncoding, + _PyUnicode_GetLength, _PyUnicode_GetMax, _PyUnicode_GetSize, + _PyUnicode_InternFromString, _PyUnicode_InternImmortal, _PyUnicode_InternInPlace, + _PyUnicode_IsIdentifier, _PyUnicode_Join, _PyUnicode_New, + _PyUnicode_Partition, _PyUnicode_RPartition, _PyUnicode_RSplit, + _PyUnicode_ReadChar, _PyUnicode_Replace, _PyUnicode_Resize, + _PyUnicode_RichCompare, _PyUnicode_Split, _PyUnicode_Splitlines, + _PyUnicode_Substring, _PyUnicode_Tailmatch, _PyUnicode_TransformDecimalToASCII, + _PyUnicode_Translate, _PyUnicode_TranslateCharmap, _PyUnicode_Type, + _PyUnicode_WriteChar, _PyVectorcall_Call, _PyWeakref_GetObject, + _PyWeakref_NewProxy, _PyWeakref_NewRef, _PyWideStringList_Append, + _PyWideStringList_Insert, _PyWrapperDescr_Type, _PyWrapper_New, + _PyZip_Type, _Py_AddPendingCall, _Py_AtExit, _Py_BuildValue, + _Py_BytesMain, _Py_BytesWarningFlag, _Py_CompileString, _Py_CompileStringExFlags, + _Py_CompileStringFlags, _Py_CompileStringObject, _Py_DebugFlag, + _Py_DecRef, _Py_DecodeLocale, _Py_DontWriteBytecodeFlag, _Py_EncodeLocale, + _Py_EndInterpreter, _Py_EnterRecursiveCall, _Py_Exit, _Py_ExitStatusException, + _Py_FatalError, _Py_FdIsInteractive, _Py_FileSystemDefaultEncodeErrors, + _Py_FileSystemDefaultEncoding, _Py_Finalize, _Py_FinalizeEx, + _Py_FrozenFlag, _Py_GenericAlias, _Py_GenericAliasType, _Py_GetArgcArgv, + _Py_GetBuildInfo, _Py_GetCompiler, _Py_GetCopyright, _Py_GetExecPrefix, + _Py_GetPath, _Py_GetPlatform, _Py_GetPrefix, _Py_GetProgramFullPath, + _Py_GetProgramName, _Py_GetPythonHome, _Py_GetRecursionLimit, + _Py_GetVersion, _Py_HasFileSystemDefaultEncoding, _Py_HashRandomizationFlag, + _Py_IgnoreEnvironmentFlag, _Py_IncRef, _Py_Initialize, _Py_InitializeEx, + _Py_InitializeFromConfig, _Py_InspectFlag, _Py_InteractiveFlag, + _Py_IsInitialized, _Py_IsolatedFlag, _Py_LeaveRecursiveCall, + _Py_Main, _Py_MakePendingCalls, _Py_NewInterpreter, _Py_NoSiteFlag, + _Py_NoUserSiteDirectory, _Py_OptimizeFlag, _Py_PreInitialize, + _Py_PreInitializeFromArgs, _Py_PreInitializeFromBytesArgs, + _Py_QuietFlag, _Py_ReprEnter, _Py_ReprLeave, _Py_RunMain, + _Py_SetPath, _Py_SetProgramName, _Py_SetPythonHome, _Py_SetRecursionLimit, + _Py_SetStandardStreamEncoding, _Py_SymtableString, _Py_SymtableStringObject, + _Py_UNICODE_strcat, _Py_UNICODE_strchr, _Py_UNICODE_strcmp, + _Py_UNICODE_strcpy, _Py_UNICODE_strlen, _Py_UNICODE_strncmp, + _Py_UNICODE_strncpy, _Py_UNICODE_strrchr, _Py_UTF8Mode, _Py_UnbufferedStdioFlag, + _Py_UniversalNewlineFgets, _Py_VaBuildValue, _Py_VerboseFlag, + _Py_hexdigits, __PyAST_GetDocString, __PyAST_Optimize, __PyAccu_Accumulate, + __PyAccu_Destroy, __PyAccu_Finish, __PyAccu_FinishAsList, + __PyAccu_Init, __PyArg_BadArgument, __PyArg_CheckPositional, + __PyArg_NoKeywords, __PyArg_NoKwnames, __PyArg_NoPositional, + __PyArg_ParseStack, __PyArg_ParseStackAndKeywords, __PyArg_ParseStackAndKeywords_SizeT, + __PyArg_ParseStack_SizeT, __PyArg_ParseTupleAndKeywordsFast, + __PyArg_ParseTupleAndKeywordsFast_SizeT, __PyArg_ParseTupleAndKeywords_SizeT, + __PyArg_ParseTuple_SizeT, __PyArg_Parse_SizeT, __PyArg_UnpackKeywords, + __PyArg_UnpackStack, __PyArg_VaParseTupleAndKeywordsFast, + __PyArg_VaParseTupleAndKeywordsFast_SizeT, __PyArg_VaParseTupleAndKeywords_SizeT, + __PyArg_VaParse_SizeT, __PyArgv_AsWstrList, __PyAsyncGenASend_Type, + __PyAsyncGenAThrow_Type, __PyAsyncGenWrappedValue_Type, __PyByteArray_empty_string, + __PyBytesIOBuffer_Type, __PyBytesWriter_Alloc, __PyBytesWriter_Dealloc, + __PyBytesWriter_Finish, __PyBytesWriter_Init, __PyBytesWriter_Prepare, + __PyBytesWriter_Resize, __PyBytesWriter_WriteBytes, __PyBytes_DecodeEscape, + __PyBytes_FormatEx, __PyBytes_FromHex, __PyBytes_Join, __PyBytes_Resize, + __PyCode_CheckLineNumber, __PyCode_ConstantKey, __PyCode_GetExtra, + __PyCode_SetExtra, __PyCodecInfo_GetIncrementalDecoder, __PyCodecInfo_GetIncrementalEncoder, + __PyCodec_DecodeText, __PyCodec_EncodeText, __PyCodec_Forget, + __PyCodec_Lookup, __PyCodec_LookupTextEncoding, __PyComplex_FormatAdvancedWriter, + __PyConfig_InitCompatConfig, __PyContext_NewHamtForTests, + __PyCoroWrapper_Type, __PyCrossInterpreterData_Lookup, __PyCrossInterpreterData_NewObject, + __PyCrossInterpreterData_RegisterClass, __PyCrossInterpreterData_Release, + __PyDebugAllocatorStats, __PyDictView_Intersect, __PyDictView_New, + __PyDict_CheckConsistency, __PyDict_Contains, __PyDict_DebugMallocStats, + __PyDict_DelItemId, __PyDict_DelItemIf, __PyDict_DelItem_KnownHash, + __PyDict_GetItemId, __PyDict_GetItemIdWithError, __PyDict_GetItemStringWithError, + __PyDict_GetItem_KnownHash, __PyDict_HasOnlyStringKeys, __PyDict_MaybeUntrack, + __PyDict_MergeEx, __PyDict_NewPresized, __PyDict_Next, __PyDict_Pop, + __PyDict_SetItemId, __PyDict_SetItem_KnownHash, __PyDict_SizeOf, + __PyErr_BadInternalCall, __PyErr_ChainExceptions, __PyErr_ChainStackItem, + __PyErr_CheckSignals, __PyErr_CheckSignalsTstate, __PyErr_Clear, + __PyErr_Display, __PyErr_ExceptionMatches, __PyErr_Fetch, + __PyErr_Format, __PyErr_FormatFromCause, __PyErr_FormatFromCauseTstate, + __PyErr_GetExcInfo, __PyErr_GetTopmostException, __PyErr_NoMemory, + __PyErr_NormalizeException, __PyErr_Print, __PyErr_Restore, + __PyErr_SetKeyError, __PyErr_SetNone, __PyErr_SetObject, __PyErr_SetString, + __PyErr_TrySetFromCause, __PyErr_WriteUnraisableMsg, __PyEval_AddPendingCall, + __PyEval_CallTracing, __PyEval_EvalCodeWithName, __PyEval_EvalFrameDefault, + __PyEval_GetAsyncGenFinalizer, __PyEval_GetAsyncGenFirstiter, + __PyEval_GetBuiltinId, __PyEval_GetCoroutineOriginTrackingDepth, + __PyEval_GetSwitchInterval, __PyEval_RequestCodeExtraIndex, + __PyEval_SetAsyncGenFinalizer, __PyEval_SetAsyncGenFirstiter, + __PyEval_SetCoroutineOriginTrackingDepth, __PyEval_SetProfile, + __PyEval_SetSwitchInterval, __PyEval_SetTrace, __PyEval_SignalAsyncExc, + __PyEval_SignalReceived, __PyEval_SliceIndex, __PyEval_SliceIndexNotNone, + __PyFloat_DebugMallocStats, __PyFloat_FormatAdvancedWriter, + __PyFloat_Pack2, __PyFloat_Pack4, __PyFloat_Pack8, __PyFloat_Unpack2, + __PyFloat_Unpack4, __PyFloat_Unpack8, __PyFrame_DebugMallocStats, + __PyFunction_Vectorcall, __PyGC_CollectIfEnabled, __PyGC_CollectNoFail, + __PyGC_InitState, __PyGILState_GetInterpreterStateUnsafe, + __PyGILState_Reinit, __PyGen_FetchStopIterationValue, __PyGen_Finalize, + __PyGen_Send, __PyGen_SetStopIterationValue, __PyHamtItems_Type, + __PyHamtKeys_Type, __PyHamtValues_Type, __PyHamt_ArrayNode_Type, + __PyHamt_BitmapNode_Type, __PyHamt_CollisionNode_Type, __PyHamt_Type, + __PyImport_AcquireLock, __PyImport_FindExtensionObject, __PyImport_FixupBuiltin, + __PyImport_FixupExtensionObject, __PyImport_GetModuleId, __PyImport_IsInitialized, + __PyImport_ReleaseLock, __PyImport_SetModule, __PyImport_SetModuleString, + __PyInterpreterID_LookUp, __PyInterpreterID_New, __PyInterpreterID_Type, + __PyInterpreterState_DeleteExceptMain, __PyInterpreterState_Enable, + __PyInterpreterState_GetConfig, __PyInterpreterState_GetEvalFrameFunc, + __PyInterpreterState_GetIDObject, __PyInterpreterState_GetMainModule, + __PyInterpreterState_IDDecref, __PyInterpreterState_IDIncref, + __PyInterpreterState_IDInitref, __PyInterpreterState_LookUpID, + __PyInterpreterState_RequireIDRef, __PyInterpreterState_RequiresIDRef, + __PyInterpreterState_SetEvalFrameFunc, __PyList_DebugMallocStats, + __PyList_Extend, __PyLong_AsByteArray, __PyLong_AsInt, __PyLong_AsTime_t, + __PyLong_Copy, __PyLong_DigitValue, __PyLong_DivmodNear, __PyLong_Format, + __PyLong_FormatAdvancedWriter, __PyLong_FormatBytesWriter, + __PyLong_FormatWriter, __PyLong_Frexp, __PyLong_FromByteArray, + __PyLong_FromBytes, __PyLong_FromGid, __PyLong_FromNbIndexOrNbInt, + __PyLong_FromNbInt, __PyLong_FromTime_t, __PyLong_FromUid, + __PyLong_GCD, __PyLong_Lshift, __PyLong_New, __PyLong_NumBits, + __PyLong_One, __PyLong_Rshift, __PyLong_Sign, __PyLong_Size_t_Converter, + __PyLong_UnsignedInt_Converter, __PyLong_UnsignedLongLong_Converter, + __PyLong_UnsignedLong_Converter, __PyLong_UnsignedShort_Converter, + __PyLong_Zero, __PyManagedBuffer_Type, __PyMem_GetAllocatorName, + __PyMem_GetCurrentAllocatorName, __PyMem_RawStrdup, __PyMem_RawWcsdup, + __PyMem_SetDefaultAllocator, __PyMem_SetupAllocators, __PyMem_Strdup, + __PyMethodWrapper_Type, __PyModuleSpec_IsInitializing, __PyModule_Clear, + __PyModule_ClearDict, __PyModule_CreateInitialized, __PyNamespace_New, + __PyNamespace_Type, __PyNode_SizeOf, __PyNone_Type, __PyNotImplemented_Type, + __PyOS_InterruptOccurred, __PyOS_IsMainThread, __PyOS_ReadlineTState, + __PyOS_URandom, __PyOS_URandomNonblock, __PyObject_AssertFailed, + __PyObject_Call, __PyObject_CallFunction_SizeT, __PyObject_CallMethodId, + __PyObject_CallMethodIdObjArgs, __PyObject_CallMethodId_SizeT, + __PyObject_CallMethod_SizeT, __PyObject_Call_Prepend, __PyObject_CheckConsistency, + __PyObject_CheckCrossInterpreterData, __PyObject_DebugMallocStats, + __PyObject_DebugTypeStats, __PyObject_Dump, __PyObject_FastCallDictTstate, + __PyObject_FunctionStr, __PyObject_GC_Calloc, __PyObject_GC_Malloc, + __PyObject_GC_New, __PyObject_GC_NewVar, __PyObject_GC_Resize, + __PyObject_GenericGetAttrWithDict, __PyObject_GenericSetAttrWithDict, + __PyObject_GetAttrId, __PyObject_GetCrossInterpreterData, + __PyObject_GetDictPtr, __PyObject_GetMethod, __PyObject_HasAttrId, + __PyObject_HasLen, __PyObject_IsAbstract, __PyObject_IsFreed, + __PyObject_LookupAttr, __PyObject_LookupAttrId, __PyObject_LookupSpecial, + __PyObject_MakeTpCall, __PyObject_New, __PyObject_NewVar, + __PyObject_NextNotImplemented, __PyObject_RealIsInstance, + __PyObject_RealIsSubclass, __PyObject_SetAttrId, __PyParser_Grammar, + __PyParser_TokenNames, __PyPreConfig_InitCompatConfig, __PyRuntime, + __PyRuntimeState_Fini, __PyRuntimeState_Init, __PyRuntimeState_ReInitThreads, + __PyRuntime_Finalize, __PyRuntime_Initialize, __PySequence_BytesToCharpArray, + __PySequence_IterSearch, __PySet_Dummy, __PySet_NextEntry, + __PySet_Update, __PySignal_AfterFork, __PySlice_FromIndices, + __PySlice_GetLongIndices, __PyStack_AsDict, __PyState_AddModule, + __PySys_GetObjectId, __PySys_GetSizeOf, __PySys_SetObjectId, + __PyThreadState_DeleteCurrent, __PyThreadState_DeleteExcept, + __PyThreadState_GetDict, __PyThreadState_Init, __PyThreadState_Prealloc, + __PyThreadState_Swap, __PyThreadState_UncheckedGet, __PyThread_CurrentFrames, + __PyThread_at_fork_reinit, __PyTime_AsMicroseconds, __PyTime_AsMilliseconds, + __PyTime_AsNanosecondsObject, __PyTime_AsSecondsDouble, __PyTime_AsTimespec, + __PyTime_AsTimeval, __PyTime_AsTimevalTime_t, __PyTime_AsTimeval_noraise, + __PyTime_FromMillisecondsObject, __PyTime_FromNanoseconds, + __PyTime_FromNanosecondsObject, __PyTime_FromSeconds, __PyTime_FromSecondsObject, + __PyTime_FromTimespec, __PyTime_FromTimeval, __PyTime_GetMonotonicClock, + __PyTime_GetMonotonicClockWithInfo, __PyTime_GetPerfCounter, + __PyTime_GetPerfCounterWithInfo, __PyTime_GetSystemClock, + __PyTime_GetSystemClockWithInfo, __PyTime_Init, __PyTime_MulDiv, + __PyTime_ObjectToTime_t, __PyTime_ObjectToTimespec, __PyTime_ObjectToTimeval, + __PyTime_gmtime, __PyTime_localtime, __PyTraceMalloc_GetTraceback, + __PyTraceMalloc_NewReference, __PyTraceback_Add, __PyTrash_begin, + __PyTrash_deposit_object, __PyTrash_destroy_chain, __PyTrash_end, + __PyTrash_thread_deposit_object, __PyTrash_thread_destroy_chain, + __PyTuple_DebugMallocStats, __PyTuple_MaybeUntrack, __PyTuple_Resize, + __PyType_CalculateMetaclass, __PyType_CheckConsistency, __PyType_GetDocFromInternalDoc, + __PyType_GetTextSignatureFromInternalDoc, __PyType_Lookup, + __PyType_LookupId, __PyType_Name, __PyUnicodeTranslateError_Create, + __PyUnicodeWriter_Dealloc, __PyUnicodeWriter_Finish, __PyUnicodeWriter_Init, + __PyUnicodeWriter_PrepareInternal, __PyUnicodeWriter_PrepareKindInternal, + __PyUnicodeWriter_WriteASCIIString, __PyUnicodeWriter_WriteChar, + __PyUnicodeWriter_WriteLatin1String, __PyUnicodeWriter_WriteStr, + __PyUnicodeWriter_WriteSubstring, __PyUnicode_AsASCIIString, + __PyUnicode_AsLatin1String, __PyUnicode_AsUTF8String, __PyUnicode_AsUnicode, + __PyUnicode_CheckConsistency, __PyUnicode_Copy, __PyUnicode_DecodeUnicodeEscape, + __PyUnicode_EQ, __PyUnicode_EncodeCharmap, __PyUnicode_EncodeUTF16, + __PyUnicode_EncodeUTF32, __PyUnicode_EncodeUTF7, __PyUnicode_EqualToASCIIId, + __PyUnicode_EqualToASCIIString, __PyUnicode_FastCopyCharacters, + __PyUnicode_FastFill, __PyUnicode_FindMaxChar, __PyUnicode_FormatAdvancedWriter, + __PyUnicode_FormatLong, __PyUnicode_FromASCII, __PyUnicode_FromId, + __PyUnicode_InsertThousandsGrouping, __PyUnicode_IsAlpha, + __PyUnicode_IsCaseIgnorable, __PyUnicode_IsCased, __PyUnicode_IsDecimalDigit, + __PyUnicode_IsDigit, __PyUnicode_IsLinebreak, __PyUnicode_IsLowercase, + __PyUnicode_IsNumeric, __PyUnicode_IsPrintable, __PyUnicode_IsTitlecase, + __PyUnicode_IsUppercase, __PyUnicode_IsWhitespace, __PyUnicode_IsXidContinue, + __PyUnicode_IsXidStart, __PyUnicode_JoinArray, __PyUnicode_Ready, + __PyUnicode_ScanIdentifier, __PyUnicode_ToDecimalDigit, __PyUnicode_ToDigit, + __PyUnicode_ToFoldedFull, __PyUnicode_ToLowerFull, __PyUnicode_ToLowercase, + __PyUnicode_ToNumeric, __PyUnicode_ToTitleFull, __PyUnicode_ToTitlecase, + __PyUnicode_ToUpperFull, __PyUnicode_ToUppercase, __PyUnicode_TransformDecimalAndSpaceToASCII, + __PyUnicode_XStrip, __PyWarnings_Init, __PyWeakref_CallableProxyType, + __PyWeakref_ClearRef, __PyWeakref_GetWeakrefCount, __PyWeakref_ProxyType, + __PyWeakref_RefType, __PyWideStringList_AsList, __PyWideStringList_Clear, + __PyWideStringList_Copy, __PyWideStringList_Extend, __Py_BreakPoint, + __Py_BuildValue_SizeT, __Py_CheckFunctionResult, __Py_CheckRecursionLimit, + __Py_CheckRecursiveCall, __Py_ClearArgcArgv, __Py_ClearStandardStreamEncoding, + __Py_CoerceLegacyLocale, __Py_Dealloc, __Py_DecodeLocaleEx, + __Py_DecodeUTF8Ex, __Py_DecodeUTF8_surrogateescape, __Py_DisplaySourceLine, + __Py_EllipsisObject, __Py_EncodeLocaleEx, __Py_EncodeLocaleRaw, + __Py_EncodeUTF8Ex, __Py_FalseStruct, __Py_FatalErrorFormat, + __Py_FatalErrorFunc, __Py_FatalError_TstateNULL, __Py_FreeCharPArray, + __Py_GetAllocatedBlocks, __Py_GetConfig, __Py_GetConfigsAsDict, + __Py_GetEnv, __Py_GetErrorHandler, __Py_GetForceASCII, __Py_GetLocaleconvNumeric, + __Py_Gid_Converter, __Py_HandleSystemExit, __Py_HashBytes, + __Py_HashDouble, __Py_HashPointer, __Py_HashPointerRaw, __Py_HashSecret, + __Py_InitializeMain, __Py_IsCoreInitialized, __Py_IsFinalizing, + __Py_IsLocaleCoercionTarget, __Py_LegacyLocaleDetected, __Py_Mangle, + __Py_NewInterpreter, __Py_NewReference, __Py_NoneStruct, __Py_NotImplementedStruct, + __Py_PackageContext, __Py_PreInitializeFromConfig, __Py_PreInitializeFromPyArgv, + __Py_PyAtExit, __Py_ResetForceASCII, __Py_RestoreSignals, + __Py_SetLocaleFromEnv, __Py_SetProgramFullPath, __Py_Sigset_Converter, + __Py_SourceAsString, __Py_SwappedOp, __Py_SymtableStringObjectFlags, + __Py_TrueStruct, __Py_Uid_Converter, __Py_UnhandledKeyboardInterrupt, + __Py_VaBuildStack, __Py_VaBuildStack_SizeT, __Py_VaBuildValue_SizeT, + __Py_abspath, __Py_add_one_to_index_C, __Py_add_one_to_index_F, + __Py_ascii_whitespace, __Py_bit_length, __Py_c_abs, __Py_c_diff, + __Py_c_neg, __Py_c_pow, __Py_c_prod, __Py_c_quot, __Py_c_sum, + __Py_convert_optional_to_ssize_t, __Py_ctype_table, __Py_ctype_tolower, + __Py_ctype_toupper, __Py_device_encoding, __Py_dg_dtoa, __Py_dg_freedtoa, + __Py_dg_infinity, __Py_dg_stdnan, __Py_dg_strtod, __Py_dup, + __Py_fopen, __Py_fopen_obj, __Py_fstat, __Py_fstat_noraise, + __Py_get_blocking, __Py_get_env_flag, __Py_get_inheritable, + __Py_get_xoption, __Py_gitidentifier, __Py_gitversion, __Py_hashtable_clear, + __Py_hashtable_compare_direct, __Py_hashtable_destroy, __Py_hashtable_foreach, + __Py_hashtable_get, __Py_hashtable_hash_ptr, __Py_hashtable_new, + __Py_hashtable_new_full, __Py_hashtable_set, __Py_hashtable_size, + __Py_hashtable_steal, __Py_isabs, __Py_open, __Py_open_noraise, + __Py_parse_inf_or_nan, __Py_path_config, __Py_read, __Py_set_blocking, + __Py_set_inheritable, __Py_set_inheritable_async_safe, __Py_stat, + __Py_str_to_int, __Py_strhex, __Py_strhex_bytes, __Py_strhex_bytes_with_sep, + __Py_strhex_with_sep, __Py_string_to_number_with_underscores, + __Py_tracemalloc_config, __Py_wfopen, __Py_wgetcwd, __Py_wreadlink, + __Py_wrealpath, __Py_write, __Py_write_noraise ] +... diff --git a/makefile b/makefile index f039fa5..307aa1c 100644 --- a/makefile +++ b/makefile @@ -24,8 +24,8 @@ include ../../allmake.mak #---------------------------------------------------------------------- # default goals -.PHONY: configs modules pyfiles deployed_modules idapython_modules api_contents pydoc_injections pyqt sip bins public_tree test_idc docs -all: configs modules pyfiles deployed_modules idapython_modules api_contents pydoc_injections pyqt sip bins # public_tree test_idc docs +.PHONY: configs modules pyfiles deployed_modules idapython_modules api_contents pydoc_injections pyqt sip bins public_tree test_idc docs tbd examples_index +all: configs modules pyfiles deployed_modules idapython_modules api_contents pydoc_injections pyqt sip bins examples_index # public_tree test_idc docs ifeq ($(OUT_OF_TREE_BUILD),) BINS += $(IDAPYSWITCH) @@ -127,6 +127,17 @@ else endif endif +#---------------------------------------------------------------------- +ifdef __APPLE_SILICON__ + # set up a stub .tbd library to link against, see tbd.readme + TBD_FILE = libpython$(PYTHON_VERSION_MAJOR).tbd + # note: this path must be compatible with -L$(R) -lpython(2|3) in pyplg.mak + TBD_MODULE_DEP = $(R)$(TBD_FILE) + # idapyswitch must be told that we're working with Python2 + ifeq ($(PYTHON_VERSION_MAJOR),2) + TBD_IDAPYSWITCH_ARGS = --use-python2 + endif +endif #---------------------------------------------------------------------- # we explicitly added our module targets @@ -143,7 +154,7 @@ include ../pyplg.mak #---------------------------------------------------------------------- PYTHON_OBJS += $(F)idapython$(O) $(MODULE): MODULE_OBJS += $(PYTHON_OBJS) -$(MODULE): $(PYTHON_OBJS) $(IDAPYSWITCH_MODULE_DEP) +$(MODULE): $(PYTHON_OBJS) $(IDAPYSWITCH_MODULE_DEP) $(TBD_MODULE_DEP) ifdef __NT__ $(MODULE): LDFLAGS += /DEF:$(IDAPYTHON_IMPLIB_DEF) /IMPLIB:$(IDAPYTHON_IMPLIB_PATH) endif @@ -177,6 +188,7 @@ ifdef DO_IDAMAKE_SIMPLIFY QUPDATE_SDK = @echo $(call qcolor,update_sdk) $< && # QSPLIT_HEXRAYS_TEMPLATES = @echo $(call qcolor,split_hexrays_templates) $< && # QPYDOC_INJECTIONS = @echo $(call qcolor,check_injections) $@ && # + QGEN_EXAMPLES_INDEX = @echo $(call qcolor,gen_examples_index) $@ && # endif #---------------------------------------------------------------------- @@ -226,7 +238,7 @@ ifeq ($(OUT_OF_TREE_BUILD),) SDK_SOURCES+=$(IDA_INCLUDE)/hexrays.hpp endif SDK_SOURCES+=$(IDA_INCLUDE)/lumina.hpp - SDK_SOURCES+=$(IDA_INCLUDE)/dirtree.hpp + SDK_SOURCES+=$(IDA_INCLUDE)/srclang.hpp else SDK_SOURCES=$(wildcard $(IDA_INCLUDE)/*.h) $(wildcard $(IDA_INCLUDE)/*.hpp) endif @@ -273,6 +285,7 @@ MODULES_NAMES += bitrange MODULES_NAMES += bytes MODULES_NAMES += dbg MODULES_NAMES += diskio +MODULES_NAMES += dirtree MODULES_NAMES += entry MODULES_NAMES += enum MODULES_NAMES += expr @@ -287,15 +300,12 @@ MODULES_NAMES += idaapi MODULES_NAMES += idc MODULES_NAMES += idd MODULES_NAMES += idp +MODULES_NAMES += ieee MODULES_NAMES += kernwin MODULES_NAMES += lines MODULES_NAMES += loader ifdef TESTABLE_BUILD MODULES_NAMES += lumina - # when dirtree.hpp makes it into the SDK, add all relevant scripts - # that are currently in tests/ui/, into plugins/idapython/examples/. - # Grep for 'dirtree' and 'dirspec' to spot those. - MODULES_NAMES += dirtree endif MODULES_NAMES += moves MODULES_NAMES += nalt @@ -309,6 +319,9 @@ MODULES_NAMES += registry MODULES_NAMES += search MODULES_NAMES += segment MODULES_NAMES += segregs +ifdef TESTABLE_BUILD + MODULES_NAMES += srclang +endif MODULES_NAMES += strlist MODULES_NAMES += struct MODULES_NAMES += tryblks @@ -420,6 +433,18 @@ ifeq ($(OUT_OF_TREE_BUILD),) $(Q)$(CP) $? $@ DEST_SIP += $(DEST_SIP39_PYDLL) $(DEST_SIP39_PYI) + # sip for Python [3.10, ... + DEST_SIP310_DIR:=$(DEST_PYQT_DIR)/python_3.10 + $(DEST_SIP310_DIR): + -$(Q)if [ ! -d "$(DEST_SIP310_DIR)" ] ; then mkdir -p 2>/dev/null $(DEST_SIP310_DIR) ; fi + DEST_SIP310_PYDLL:=$(DEST_SIP310_DIR)/$(SIP_PYDLL_FNAME) + DEST_SIP310_PYI:=$(DEST_SIP310_DIR)/$(SIP_PYI_FNAME) + $(DEST_SIP310_PYDLL): $(wildcard $(SIP310_TREE)/lib/python*/PyQt5/$(SIP_PYDLL_FNAME)) | $(DEST_SIP310_DIR) + $(Q)$(CP) $? $@ + $(DEST_SIP310_PYI): $(wildcard $(SIP310_TREE)/lib/python*/PyQt5/$(SIP_PYI_FNAME)) | $(DEST_SIP310_DIR) + $(Q)$(CP) $? $@ + DEST_SIP += $(DEST_SIP310_PYDLL) $(DEST_SIP310_PYI) + else # sip for Python 2.7 DEST_SIP27_DIR:=$(DEST_PYQT_DIR) @@ -680,16 +705,14 @@ SWIG_IFACE_dbg=idd SWIG_IFACE_frame=range SWIG_IFACE_funcs=range SWIG_IFACE_gdl=range -SWIG_IFACE_hexrays=pro typeinf xref +SWIG_IFACE_graph=gdl +SWIG_IFACE_hexrays=pro typeinf xref gdl SWIG_IFACE_idd=range SWIG_IFACE_idp=bitrange SWIG_IFACE_segment=range SWIG_IFACE_segregs=range SWIG_IFACE_typeinf=idp SWIG_IFACE_tryblks=range -# ifdef TESTABLE_BUILD -# SWIG_IFACE_kernwin=dirtree -# endif MODULE_LIFECYCLE_bytes=--lifecycle-aware MODULE_LIFECYCLE_hexrays=--lifecycle-aware @@ -806,7 +829,7 @@ endif # See Python's dynload_win.c:GetPythonImport() for more details. $(_IDA_X_SO): STDLIBS += $(LINKIDAPYTHON) $(_IDA_X_SO): LDFLAGS += $(PYTHON_LDFLAGS) $(PYTHON_LDFLAGS_RPATH_MODULE) $(OUTMAP)$(F)$(@F).map -$(F)_ida_%$(PYDLL_EXT): $(F)%$(O) $(MODULE) $(IDAPYTHON_IMPLIB_DEF) $(IDAPYSWITCH_MODULE_DEP) +$(F)_ida_%$(PYDLL_EXT): $(F)%$(O) $(MODULE) $(IDAPYTHON_IMPLIB_DEF) $(IDAPYSWITCH_MODULE_DEP) $(TBD_MODULE_DEP) $(call link_dll, $<, $(LINKIDA)) ifdef __NT__ $(Q)$(RM) $(@:$(PYDLL_EXT)=.exp) $(@:$(PYDLL_EXT)=.lib) @@ -863,7 +886,7 @@ endif PYDOC_INJECTIONS_IDAT_CMD=$(USE_PYTHON2_ENVVAR) $(IDAT_CMD) $(BATCH_SWITCH) "-OIDAPython:AUTOIMPORT_COMPAT_IDA695=NO" -S"$< $@ $(ST_WRAP) $(DUMPDOC_IS_64)" -t -L$(F)dumpdoc.log >/dev/null pydoc_injections: $(ST_PYDOC_INJECTIONS) $(ST_PYDOC_INJECTIONS): tools/dumpdoc.py $(IDAPYTHON_MODULES) $(PYTHON_BINARY_MODULES) -ifeq ($(or $(__CODE_CHECKER__),$(NO_CMP_API),$(__ASAN__),$(IDAHOME)),) +ifeq ($(or $(__CODE_CHECKER__),$(NO_CMP_API),$(__ASAN__),$(IDAHOME),$(DEMO_OR_FREE)),) $(QPYDOC_INJECTIONS)$(PYDOC_INJECTIONS_IDAT_CMD) || \ (echo "Command \"$(PYDOC_INJECTIONS_IDAT_CMD)\" failed. Check \"$(F)dumpdoc.log\" for details." && false) $(Q)(diff -w $(PYDOC_INJECTIONS) $(ST_PYDOC_INJECTIONS)) > /dev/null || \ @@ -889,8 +912,7 @@ endif # the demo version of ida does not have the -B command line option ifeq ($(OUT_OF_TREE_BUILD),) - ISDEMO=$(shell grep "define DEMO$$" $(IDA_INCLUDE)/commerc.hpp) - ifeq ($(ISDEMO),) + ifndef DEMO_OR_FREE BATCH_SWITCH=-B endif endif @@ -938,6 +960,17 @@ ifdef __NT__ endif $(R)idapyswitch$(B): $(call dumb_target, pro, $(IDAPYSWITCH_OBJS)) +#---------------------------------------------------------------------- +ifdef __APPLE_SILICON__ +tbd: $(TBD_MODULE_DEP) +# copy the tbd library to idabin, and instruct idapyswitch to create the symlink to libpython +$(TBD_MODULE_DEP): $(TBD_FILE) $(IDAPYSWITCH) + $(Q)$(CP) $< $@ + cd $(R) && $(IDAPYSWITCH) $(TBD_IDAPYSWITCH_ARGS) --force-path $(shell $(PYTHON)-config --prefix)/Python +else +tbd: ; +endif + #---------------------------------------------------------------------- # the 'echo_modules' target must be called explicitly # Note: used by ida/build/pkgbin.py @@ -948,14 +981,56 @@ echo_modules: clean:: rm -rf obj/ +ifdef __CODE_CHECKER__ + examples_index: ; +else + EXAMPLES := $(wildcard examples/**/*.py) + GEN_EXAMPLES_TOOL := tools/gen_examples_index.py + + ST_EXAMPLES_INDEX_HTML := $(F)examples/index.html + ST_EXAMPLES_INDEX_MD := $(F)examples/index.md + + define make-examples-index-rules + + $(eval EXAMPLES_INDEX := examples/index.$(1)) + $(eval ST_EXAMPLES_INDEX := $(2)) + $(eval EXAMPLES_TEMPLATE := tools/examples_index_template.$(1)) + + .PRECIOUS: $(ST_EXAMPLES_INDEX) + + $(eval EXAMPLES_INDEX_CMD := $(PYTHON) $(GEN_EXAMPLES_TOOL) \ + -t $(EXAMPLES_TEMPLATE) \ + -e examples \ + -o $(ST_EXAMPLES_INDEX) \ + ) + + $(ST_EXAMPLES_INDEX): $(GEN_EXAMPLES_TOOL) $(EXAMPLES_TEMPLATE) $(EXAMPLES) + -$(Q)if [ ! -d "$(F)examples" ] ; then mkdir -p 2>/dev/null $(F)examples ; fi + $(QGEN_EXAMPLES_INDEX)$(EXAMPLES_INDEX_CMD) \ + || echo FAILED: $(EXAMPLES_INDEX_CMD) + $(Q)diff -w $(EXAMPLES_INDEX) $(ST_EXAMPLES_INDEX) > /dev/null \ + || (echo "EXAMPLES INDEX CHANGED! update $(EXAMPLES_INDEX)" \ + && echo "(New examples: $(ST_EXAMPLES_INDEX)) ***" \ + && diff -U 1 -w $(EXAMPLES_INDEX) $(ST_EXAMPLES_INDEX) \ + && false) + endef + + $(eval $(call make-examples-index-rules,html,$(ST_EXAMPLES_INDEX_HTML))) + $(eval $(call make-examples-index-rules,md,$(ST_EXAMPLES_INDEX_MD))) + + examples_index: $(ST_EXAMPLES_INDEX_HTML) $(ST_EXAMPLES_INDEX_MD) + +endif + $(MODULE): LDFLAGS += $(PYTHON_LDFLAGS) $(PYTHON_LDFLAGS_RPATH_MAIN) # MAKEDEP dependency list ------------------ $(F)idapyswitch$(O): $(I)auto.hpp $(I)bitrange.hpp $(I)bytes.hpp \ $(I)config.hpp $(I)diskio.hpp $(I)entry.hpp $(I)err.h \ $(I)exehdr.h $(I)fixup.hpp $(I)fpro.h $(I)funcs.hpp \ - $(I)ida.hpp $(I)idp.hpp $(I)kernwin.hpp $(I)lines.hpp \ - $(I)llong.hpp $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp \ + $(I)ida.hpp $(I)idp.hpp $(I)ieee.h $(I)kernwin.hpp \ + $(I)lines.hpp $(I)llong.hpp $(I)loader.hpp $(I)lzfse.h \ + $(I)lzvn_decode_base.h $(I)nalt.hpp $(I)name.hpp \ $(I)netnode.hpp $(I)network.hpp $(I)offset.hpp $(I)pro.h \ $(I)prodir.h $(I)range.hpp $(I)segment.hpp \ $(I)segregs.hpp $(I)ua.hpp $(I)xref.hpp \ @@ -972,12 +1047,14 @@ $(F)idapyswitch$(O): $(I)auto.hpp $(I)bitrange.hpp $(I)bytes.hpp \ ../../ldr/mach-o/h/i386/_types.h \ ../../ldr/mach-o/h/i386/eflags.h \ ../../ldr/mach-o/h/libkern/OSByteOrder.h \ + ../../ldr/mach-o/h/libkern/arm/OSByteOrder.h \ ../../ldr/mach-o/h/libkern/i386/OSByteOrder.h \ ../../ldr/mach-o/h/libkern/i386/_OSByteOrder.h \ ../../ldr/mach-o/h/libkern/machine/OSByteOrder.h \ ../../ldr/mach-o/h/mach-o/arm/reloc.h \ ../../ldr/mach-o/h/mach-o/arm64/reloc.h \ ../../ldr/mach-o/h/mach-o/fat.h \ + ../../ldr/mach-o/h/mach-o/fixup-chains.h \ ../../ldr/mach-o/h/mach-o/hppa/reloc.h \ ../../ldr/mach-o/h/mach-o/i860/reloc.h \ ../../ldr/mach-o/h/mach-o/loader.h \ @@ -1011,19 +1088,13 @@ $(F)idapyswitch$(O): $(I)auto.hpp $(I)bitrange.hpp $(I)bytes.hpp \ ../../ldr/mach-o/h/mach/machine/vm_types.h \ ../../ldr/mach-o/h/mach/message.h \ ../../ldr/mach-o/h/mach/port.h \ - ../../ldr/mach-o/h/mach/ppc/_structs.h \ - ../../ldr/mach-o/h/mach/ppc/boolean.h \ - ../../ldr/mach-o/h/mach/ppc/kern_return.h \ - ../../ldr/mach-o/h/mach/ppc/thread_status.h \ - ../../ldr/mach-o/h/mach/ppc/vm_param.h \ - ../../ldr/mach-o/h/mach/ppc/vm_types.h \ ../../ldr/mach-o/h/mach/vm_prot.h \ ../../ldr/mach-o/h/mach/vm_types.h \ - ../../ldr/mach-o/h/ppc/_types.h \ ../../ldr/mach-o/h/sys/_posix_availability.h \ ../../ldr/mach-o/h/sys/_symbol_aliasing.h \ ../../ldr/mach-o/h/sys/cdefs.h \ - ../../ldr/mach-o/macho_node.h ../../ldr/pe/../idaldr.h \ + ../../ldr/mach-o/macho_node.h \ + ../../ldr/mach-o/uncompress.cpp ../../ldr/pe/../idaldr.h \ ../../ldr/pe/common.cpp ../../ldr/pe/common.h \ ../../ldr/pe/pe.h idapyswitch.cpp idapyswitch_linux.cpp \ idapyswitch_mac.cpp idapyswitch_win.cpp diff --git a/out_of_tree/parsed_notifications.zip b/out_of_tree/parsed_notifications.zip index 787f79f..d097065 100644 Binary files a/out_of_tree/parsed_notifications.zip and b/out_of_tree/parsed_notifications.zip differ diff --git a/pydoc_injections2.txt b/pydoc_injections2.txt index 60ed8ed..0e94cdd 100644 --- a/pydoc_injections2.txt +++ b/pydoc_injections2.txt @@ -584,14 +584,12 @@ bin_flag(*args) Help on function bin_search in module ida_bytes: bin_search(*args) - bin_search(start_ea, end_ea, image, imask, step, flags) -> ea_t + bin_search(start_ea, end_ea, data, flags) -> ea_t Search for a set of bytes in the program @param start_ea: linear address, start of range to search @param end_ea: linear address, end of range to search (exclusive) - @param image: the set of bytes to search for - @param imask: a bitfield representing the mask in 'image' (can be None) - @param step: either BIN_SEARCH_FORWARD, or BIN_SEARCH_BACKWARD + @param data: the prepared data to search for (see parse_binpat_str()) @param flags: combination of BIN_SEARCH_* flags @return: the address of a match, or ida_idaapi.BADADDR if not found @@ -611,12 +609,12 @@ bytesize(*args) Help on function calc_def_align in module ida_bytes: calc_def_align(*args) - Calculate default alignment. + Calculate the default alignment exponent. calc_def_align(ea, mina, maxa) -> int - @param ea (C++: ea_t) - @param mina (C++: int) - @param maxa (C++: int) + @param ea: linear address (C++: ea_t) + @param mina: minimal possible alignment exponent. (C++: int) + @param maxa: minimal possible alignment exponent. (C++: int) Help on function calc_dflags in module ida_bytes: @@ -628,10 +626,11 @@ calc_dflags(*args) Help on function calc_max_align in module ida_bytes: calc_max_align(*args) - Returns: 0..32. + Calculate the maximal possible alignment exponent. calc_max_align(endea) -> int - @param endea (C++: ea_t) + @param endea: end address of the alignment item. (C++: ea_t) + @return: a value in the 0..32 range Help on function calc_max_item_end in module ida_bytes: @@ -649,10 +648,11 @@ calc_max_item_end(*args) Help on function calc_min_align in module ida_bytes: calc_min_align(*args) - Returns: 1..32. + Calculate the minimal possible alignment exponent. calc_min_align(length) -> int - @param length (C++: asize_t) + @param length: size of the item in bytes. (C++: asize_t) + @return: a value in the 1..32 range Help on function can_define_item in module ida_bytes: @@ -736,10 +736,226 @@ Help on function code_flag in module ida_bytes: code_flag(*args) 'FF_CODE' +Help on class compiled_binpat_t in module ida_bytes: + +class compiled_binpat_t(__builtin__.object) + | Proxy of C++ compiled_binpat_t class. + | + | Methods defined here: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: compiled_binpat_t const & + | + | __init__(self, *args) + | __init__(self) -> compiled_binpat_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: compiled_binpat_t const & + | + | __repr__ = _swig_repr(self) + | + | all_bytes_defined(self, *args) + | all_bytes_defined(self) -> bool + | + | qclear(self, *args) + | qclear(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | compiled_binpat_t_bytes_get(self) -> bytevec_t * + | + | encidx + | compiled_binpat_t_encidx_get(self) -> int + | + | mask + | compiled_binpat_t_mask_get(self) -> bytevec_t * + | + | strlits + | compiled_binpat_t_strlits_get(self) -> rangevec_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_compiled_binpat_t(self) + +Help on class compiled_binpat_vec_t in module ida_bytes: + +class compiled_binpat_vec_t(__builtin__.object) + | Proxy of C++ qvector< compiled_binpat_t > class. + | + | Methods defined here: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: qvector< compiled_binpat_t > const & + | + | __getitem__(self, *args) + | __getitem__(self, i) -> compiled_binpat_t + | i: size_t + | + | __init__(self, *args) + | __init__(self) -> compiled_binpat_vec_t + | x: qvector< compiled_binpat_t > const & + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: qvector< compiled_binpat_t > const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: compiled_binpat_t const & + | + | _del(self, *args) + | _del(self, x) -> bool + | x: compiled_binpat_t const & + | + | add_unique(self, *args) + | add_unique(self, x) -> bool + | x: compiled_binpat_t const & + | + | at(self, *args) + | at(self, _idx) -> compiled_binpat_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) + | begin(self) -> compiled_binpat_t + | begin(self) -> compiled_binpat_t + | + | capacity(self, *args) + | capacity(self) -> size_t + | + | clear(self, *args) + | clear(self) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> compiled_binpat_t + | end(self) -> compiled_binpat_t + | + | erase(self, *args) + | erase(self, it) -> compiled_binpat_t + | it: qvector< compiled_binpat_t >::iterator + | + | + | erase(self, first, last) -> compiled_binpat_t + | first: qvector< compiled_binpat_t >::iterator + | last: qvector< compiled_binpat_t >::iterator + | + | extract(self, *args) + | extract(self) -> compiled_binpat_t + | + | find(self, *args) + | find(self, x) -> compiled_binpat_t + | x: compiled_binpat_t const & + | + | + | find(self, x) -> compiled_binpat_t + | x: compiled_binpat_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) + | grow(self, x=compiled_binpat_t()) + | x: compiled_binpat_t const & + | + | has(self, *args) + | has(self, x) -> bool + | x: compiled_binpat_t const & + | + | inject(self, *args) + | inject(self, s, len) + | s: compiled_binpat_t * + | len: size_t + | + | insert(self, *args) + | insert(self, it, x) -> compiled_binpat_t + | it: qvector< compiled_binpat_t >::iterator + | x: compiled_binpat_t const & + | + | pop_back(self, *args) + | pop_back(self) + | + | push_back(self, *args) + | push_back(self, x) + | x: compiled_binpat_t const & + | + | qclear(self, *args) + | qclear(self) + | + | reserve(self, *args) + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) + | resize(self, _newsize, x) + | _newsize: size_t + | x: compiled_binpat_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) + | size(self) -> size_t + | + | swap(self, *args) + | swap(self, r) + | r: qvector< compiled_binpat_t > & + | + | truncate(self, *args) + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_compiled_binpat_vec_t(self) + Help on function create_16bit_data in module ida_bytes: create_16bit_data(*args) - Convert to 16-bit quantity (take byte size into account) + Convert to 16-bit quantity (take the byte size into account) create_16bit_data(ea, length) -> bool @param ea (C++: ea_t) @@ -748,7 +964,7 @@ create_16bit_data(*args) Help on function create_32bit_data in module ida_bytes: create_32bit_data(*args) - Convert to 32-bit quantity (take byte size into account) + Convert to 32-bit quantity (take the byte size into account) create_32bit_data(ea, length) -> bool @param ea (C++: ea_t) @@ -757,12 +973,17 @@ create_32bit_data(*args) Help on function create_align in module ida_bytes: create_align(*args) - Alignment: 0 or 2..32. If it is 0, is will be calculated. + Create an alignment item. create_align(ea, length, alignment) -> bool - @param ea (C++: ea_t) - @param length (C++: asize_t) - @param alignment (C++: int) + @param ea: linear address (C++: ea_t) + @param length: size of the item in bytes. 0 means to infer from + ALIGNMENT (C++: asize_t) + @param alignment: alignment exponent. Example: 3 means align to 8 + bytes. 0 means to infer from LENGTH It is forbidden + to specify both LENGTH and ALIGNMENT as 0. (C++: + int) + @return: success Help on function create_byte in module ida_bytes: @@ -2310,9 +2531,12 @@ is_align(*args) Help on function is_attached_custom_data_format in module ida_bytes: is_attached_custom_data_format(*args) + Is the custom data format attached to the custom data type? + is_attached_custom_data_format(dtid, dfid) -> bool - @param dtid (C++: int) - @param dfid (C++: int) + @param dtid: data type id (C++: int) + @param dfid: data format id (C++: int) + @return: true or false Help on function is_bnot in module ida_bytes: @@ -3130,6 +3354,45 @@ Help on function packreal_flag in module ida_bytes: packreal_flag(*args) Get a flags_t representing a packed decimal real. +Help on function parse_binpat_str in module ida_bytes: + +parse_binpat_str(*args) + Convert user-specified binary string to internal representation. The + 'in' parameter contains space-separated tokens: + + - numbers (numeric base is determined by 'radix') + - if value of number fits a byte, it is considered as a byte + - if value of number fits a word, it is considered as 2 bytes + - if value of number fits a dword,it is considered as 4 bytes + - "..." string constants + - 'x' single-character constants + - ? variable bytes + + Note that string constants are surrounded with double quotes.Here are + a few examples (assuming base 16): + + CD 21 - bytes 0xCD, 0x21 + 21CD - bytes 0xCD, 0x21 (little endian ) or 0x21, 0xCD (big-endian) + "Hello", 0 - the null terminated string "Hello" + L"Hello" - 'H', 0, 'e', 0, 'l', 0, 'l', 0, 'o', 0 + B8 ? ? ? ? 90 - byte 0xB8, 4 bytes with any value, byte 0x90 + + parse_binpat_str(out, ea, _in, radix, strlits_encoding=0) -> str + @param out: a vector of compiled binary patterns, for use with + bin_search2() (C++: compiled_binpat_vec_t *) + @param ea: linear address to convert for (the conversion depends on + the address, because the number of bits in a byte depend on + the segment type) (C++: ea_t) + in: char const * + @param radix: numeric base of numbers (8,10,16) (C++: int) + @param strlits_encoding: the target encoding into which the string + literals present in 'in', should be encoded. + Can be any from [1, get_encoding_qty() ), or + the special values PBSENC_* (C++: int) + @return: false either in case of parsing error, or if at least one + requested target encoding couldn't encode the string literals + present in "in". + Help on function patch_byte in module ida_bytes: patch_byte(*args) @@ -4143,7 +4406,7 @@ have hotkey markers part of the name ida_bytes.PSTF_TBRIEF """ -use brief name (e.g., in the 'Strings window') +use brief name (e.g., in the 'Strings' window) """ ida_bytes.PSTF_TINLIN @@ -5858,9 +6121,9 @@ load_debugger(*args) Help on function load_trace_file in module ida_dbg: load_trace_file(*args) - Load a recorded trace file in the trace window. If the call succeeds - and 'buf' is not null, the description of the trace stored in the - binary trace file will be returned in 'buf' + Load a recorded trace file in the 'Tracing' window. If the call + succeeds and 'buf' is not null, the description of the trace stored in + the binary trace file will be returned in 'buf' load_trace_file(filename) -> str @param filename (C++: const char *) @@ -7316,6 +7579,11 @@ ida_dbg.DOPT_EXCDLG exception dialogs: """ +ida_dbg.DOPT_FAST_STEP +""" +prevent debugger memory refreshes when single-stepping +""" + ida_dbg.DOPT_INFO_BPT """ break on debugging information @@ -7726,25 +7994,33 @@ class dirspec_t(__builtin__.object) | @param inode (C++: inode_t) | | get_inode(self, *args) - | get_inode(self, name) -> inode_t + | get the entry inode in the specified directory + | + | get_inode(self, diridx, name) -> inode_t + | @param diridx (C++: diridx_t) | @param name (C++: const char *) + | @return: the entry inode | | get_name(self, *args) + | get the entry name. for example, the structure name + | | get_name(self, inode) -> bool | @param inode (C++: inode_t) - | - | get_size(self, *args) - | get_size(self, inode) -> ssize_t - | @param inode (C++: inode_t) + | @return: false if the entry does not exist. | | rename_inode(self, *args) + | rename the entry + | | rename_inode(self, inode, newname) -> bool | @param inode (C++: inode_t) | @param newname (C++: const char *) + | @return: success | | unlink_inode(self, *args) - | unlink_inode(self, arg0) - | arg0: inode_t + | event: unlinked an inode + | + | unlink_inode(self, inode) + | @param inode (C++: inode_t) | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -8246,14 +8522,14 @@ class dirtree_t(__builtin__.object) | change_rank(self, path, rank_delta) -> dterr_t | @param path: path to the item (C++: const char *) | @param rank_delta (C++: ssize_t) - | @return: dterr_t error code + | @return: dterr_t error code | | chdir(self, *args) | Change current directory | | chdir(self, path) -> dterr_t | @param path: new current directory (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | findfirst(self, *args) | Start iterating over files in a directory @@ -8283,6 +8559,13 @@ class dirtree_t(__builtin__.object) | relpath: char const * | @return: path. empty path means wrong directory part of RELPATH | + | get_dir_size(self, *args) + | Get dir size + | + | get_dir_size(self, diridx) -> ssize_t + | @param diridx: directory index (C++: diridx_t) + | @return: number of entries under this directory; if error, return -1 + | | get_entry_attrs(self, *args) | Get entry attributes | @@ -8297,14 +8580,6 @@ class dirtree_t(__builtin__.object) | @param de: directory entry (C++: const direntry_t &) | @return: name | - | get_entry_size(self, *args) - | Get entry size - | - | get_entry_size(self, de) -> ssize_t - | @param de: directory entry (C++: const direntry_t &) - | @return: for directories: number of items, for files: item size. if - | error, return -1 - | | get_nodename(self, *args) | netnode name | @@ -8356,12 +8631,12 @@ class dirtree_t(__builtin__.object) | | link(self, path) -> dterr_t | @param path: path to item to add to a directory (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | | link(self, inode) -> dterr_t | inode: inode_t - | @return: dterr_t error code + | @return: dterr_t error code | | load(self, *args) | Load the tree structure from the netnode. If dirspec_t::nodename is @@ -8374,7 +8649,7 @@ class dirtree_t(__builtin__.object) | | mkdir(self, path) -> dterr_t | @param path: directory to create (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | notify_dirtree(self, *args) | Notify dirtree about a change of an inode. @@ -8389,7 +8664,7 @@ class dirtree_t(__builtin__.object) | rename(self, _from, to) -> dterr_t | @param _from: source path (C++: const char *) | @param to: destination path (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | resolve_cursor(self, *args) | Resolve cursorsee also 'get_abspath()' @@ -8411,7 +8686,7 @@ class dirtree_t(__builtin__.object) | | rmdir(self, path) -> dterr_t | @param path: directory to delete (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | save(self, *args) | Save the tree structure to the netnode.dirspec_t::nodename. @@ -8425,12 +8700,12 @@ class dirtree_t(__builtin__.object) | | unlink(self, path) -> dterr_t | @param path: path to item remove from a directory (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | | unlink(self, inode) -> dterr_t | inode: inode_t - | @return: dterr_t error code + | @return: dterr_t error code | | ---------------------------------------------------------------------- | Static methods defined here: @@ -9739,7 +10014,7 @@ exec_system_script(*args) exec_system_script(file, complain_if_no_file=True) -> bool @param file: file name with IDC function(s). The file will be searched - in the idc subdir of ida (C++: const char *) + using get_idc_filename() . (C++: const char *) @param complain_if_no_file: 1: display warning if the file is not found 0: don't complain if file doesn't exist (C++: bool) @@ -9794,7 +10069,7 @@ Help on function get_idc_filename in module ida_expr: get_idc_filename(*args) Get full name of IDC file name. Search for file in list of include - directories, IDCPATH directory and the current directory. + directories, IDCPATH directory and system directories. get_idc_filename(file) -> str @param file: file name without full path (C++: const char *) @@ -9949,9 +10224,6 @@ class idc_value_t(__builtin__.object) | _create_empty_string(self, *args) | _create_empty_string(self) | - | _idc_value_t__get_e = __get_e(self, *args) - | __get_e(self) -> wrapped_array_t< ushort,6 > - | | c_str(self, *args) | 'VT_STR' | @@ -9976,7 +10248,7 @@ class idc_value_t(__builtin__.object) | | set_float(self, *args) | set_float(self, f) - | f: ushort const [6] + | f: fpvalue_t const & | | set_int64(self, *args) | set_int64(self, v) @@ -10018,7 +10290,7 @@ class idc_value_t(__builtin__.object) | list of weak references to the object (if defined) | | e - | __get_e(self) -> wrapped_array_t< ushort,6 > + | idc_value_t_e_get(self) -> fpvalue_t | | funcidx | idc_value_t_funcidx_get(self) -> int @@ -10784,6 +11056,24 @@ get_prev_fixup_ea(*args) @param ea: current address (C++: ea_t) @return: the previous address with fixup information, or BADADDR +Help on function handle_fixups_in_macro in module ida_fixup: + +handle_fixups_in_macro(*args) + Handle two fixups in a macro. We often combine two instruction that + load parts of a value into one macro instruction. For example: ARM: + ADRP X0, #var@PAGE ADD X0, X0, #var@PAGEOFF --> ADRL X0, var MIPS: lui + $v0, hi(var) addiu $v0, $v0, lo(var) --> la $v0, var When applying the + fixups that fall inside such a macro, we should convert them to one + refinfo. This function does exactly that. It should be called from the + apply() callback of a custom fixup. + + handle_fixups_in_macro(ri, ea, other, macro_reft_and_flags) -> bool + @param ri (C++: refinfo_t *) + @param ea (C++: ea_t) + @param other (C++: fixup_type_t) + @param macro_reft_and_flags (C++: uint32) + @return: success ('false' means that RI was not changed) + Help on function is_fixup_custom in module ida_fixup: is_fixup_custom(*args) @@ -11202,6 +11492,12 @@ frame_off_savregs(*args) frame_off_savregs(pfn) -> ea_t @param pfn (C++: const func_t *) +Help on function free_regvar in module ida_frame: + +free_regvar(*args) + free_regvar(v) + @param v (C++: struct regvar_t *) + Help on function get_effective_spd in module ida_frame: get_effective_spd(*args) @@ -11367,9 +11663,14 @@ class regvar_t(ida_range.range_t) | | __init__(self, *args) | __init__(self) -> regvar_t + | r: regvar_t const & | | __repr__ = _swig_repr(self) | + | swap(self, *args) + | swap(self, r) + | @param r (C++: regvar_t &) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -12339,6 +12640,12 @@ find_func_bounds(*args) @param flags: Find function bounds flags (C++: int) @return: Find function bounds result codes +Help on function free_regarg in module ida_funcs: + +free_regarg(*args) + free_regarg(v) + @param v (C++: struct regarg_t *) + Help on function func_contains in module ida_funcs: func_contains(*args) @@ -13237,9 +13544,14 @@ class regarg_t(__builtin__.object) | | __init__(self, *args) | __init__(self) -> regarg_t + | r: regarg_t const & | | __repr__ = _swig_repr(self) | + | swap(self, *args) + | swap(self, r) + | @param r (C++: regarg_t &) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -13646,6 +13958,143 @@ class FlowChart(__builtin__.object) | | size +Help on class cancellable_graph_t in module ida_gdl: + +class cancellable_graph_t(gdl_graph_t) + | Proxy of C++ cancellable_graph_t class. + | + | Method resolution order: + | cancellable_graph_t + | gdl_graph_t + | __builtin__.object + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> cancellable_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | cancelled + | cancellable_graph_t_cancelled_get(self) -> bool + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_cancellable_graph_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from gdl_graph_t: + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + Help on function display_gdl in module ida_gdl: display_gdl(*args) @@ -13657,6 +14106,129 @@ display_gdl(*args) @param fname (C++: const char *) @return: error code from os, 0 if ok +Help on class gdl_graph_t in module ida_gdl: + +class gdl_graph_t(__builtin__.object) + | Proxy of C++ gdl_graph_t class. + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> gdl_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_gdl_graph_t(self) + Help on function gen_complex_call_chart in module ida_gdl: gen_complex_call_chart(*args) @@ -13898,9 +14470,15 @@ class qbasic_block_t(ida_range.range_t) Help on class qflow_chart_t in module ida_gdl: -class qflow_chart_t(__builtin__.object) +class qflow_chart_t(cancellable_graph_t) | Proxy of C++ qflow_chart_t class. | + | Method resolution order: + | qflow_chart_t + | cancellable_graph_t + | gdl_graph_t + | __builtin__.object + | | Methods defined here: | | __getitem__(self, *args) @@ -13941,10 +14519,8 @@ class qflow_chart_t(__builtin__.object) | @param _flags (C++: int) | | get_node_label(self, *args) - | get_node_label(self, arg2, arg3, arg4) -> char * - | arg2: char * - | arg3: int - | arg4: int + | get_node_label(self, n) -> char * + | @param n (C++: int) | | is_noret_block(self, *args) | is_noret_block(self, blknum) -> bool @@ -13971,9 +14547,9 @@ class qflow_chart_t(__builtin__.object) | print_names(self) -> bool | | print_node_attributes(self, *args) - | print_node_attributes(self, arg2, arg3) - | arg2: FILE * - | arg3: int + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) | | refresh(self, *args) | refresh(self) @@ -13989,12 +14565,6 @@ class qflow_chart_t(__builtin__.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | bounds | qflow_chart_t_bounds_get(self) -> range_t | @@ -14018,6 +14588,89 @@ class qflow_chart_t(__builtin__.object) | | __swig_destroy__ = | delete_qflow_chart_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from cancellable_graph_t: + | + | __disown__(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from cancellable_graph_t: + | + | cancelled + | cancellable_graph_t_cancelled_get(self) -> bool + | + | ---------------------------------------------------------------------- + | Methods inherited from gdl_graph_t: + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) === ida_gdl EPYDOC INJECTIONS === ida_gdl.CHART_FOLLOW_DIRECTION @@ -14404,6 +15057,183 @@ class TPointDouble(__builtin__.object) | __swig_destroy__ = | delete_TPointDouble(self) +Help on class abstract_graph_t in module ida_graph: + +class abstract_graph_t(ida_gdl.gdl_graph_t) + | Proxy of C++ abstract_graph_t class. + | + | Method resolution order: + | abstract_graph_t + | ida_gdl.gdl_graph_t + | __builtin__.object + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> abstract_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | create_circle_layout(self, *args) + | create_circle_layout(self, p, radius) -> bool + | @param p (C++: point_t) + | @param radius (C++: int) + | + | create_tree_layout(self, *args) + | create_tree_layout(self) -> bool + | + | get_edge(self, *args) + | get_edge(self, e) -> edge_info_t + | @param e (C++: edge_t) + | + | grcall(self, *args) + | grcall(self, code) -> ssize_t + | @param code (C++: int) + | + | nrect(self, *args) + | nrect(self, n) -> rect_t + | @param n (C++: int) + | + | set_callback(self, *args) + | set_callback(self, _callback, _ud) + | @param _callback (C++: hook_cb_t *) + | @param _ud (C++: void *) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | callback_ud + | abstract_graph_t_callback_ud_get(self) -> void * + | + | circle_center + | abstract_graph_t_circle_center_get(self) -> point_t + | + | circle_radius + | abstract_graph_t_circle_radius_get(self) -> int + | + | current_layout + | abstract_graph_t_current_layout_get(self) -> layout_type_t + | + | rect_edges_made + | abstract_graph_t_rect_edges_made_get(self) -> bool + | + | thisown + | The membership flag + | + | title + | abstract_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_abstract_graph_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + Help on function calc_dist in module ida_graph: calc_dist(*args) @@ -15065,57 +15895,93 @@ class interval_t(__builtin__.object) Help on class mutable_graph_t in module ida_graph: -class mutable_graph_t(__builtin__.object) +class mutable_graph_t(abstract_graph_t) | Proxy of C++ mutable_graph_t class. | - | Methods defined here: + | Method resolution order: + | mutable_graph_t + | abstract_graph_t + | ida_gdl.gdl_graph_t + | __builtin__.object | - | __disown__(self) + | Methods defined here: | | __init__(self, *args, **kwargs) | | __repr__ = _swig_repr(self) | + | add_edge(self, *args) + | add_edge(self, i, j, ei) -> bool + | @param i (C++: int) + | @param j (C++: int) + | @param ei (C++: const edge_info_t *) + | + | add_node(self, *args) + | Add a node, possibly with a specific geometry + | + | add_node(self, r) -> int + | @param r: the node geometry (can be nullptr) (C++: const rect_t *) + | @return: the new node + | | calc_group_ea(self, *args) - | calc_group_ea(self, arg0) -> ea_t - | arg0: intvec_t const & + | calc_group_ea(self, arg2) -> ea_t + | arg2: intvec_t const & | | change_group_visibility(self, *args) + | Expand/collapse a group node + | | change_group_visibility(self, group, expand) -> bool - | @param group (C++: int) - | @param expand (C++: bool) - | - | clear(self, *args) - | clear(self) + | @param group: the group node (C++: int) + | @param expand: whether to expand or collapse (C++: bool) + | @return: success | | create_digraph_layout(self, *args) | create_digraph_layout(self) -> bool | | create_group(self, *args) + | Create a new group node, that will contain all the nodes in 'nodes'. + | | create_group(self, nodes) -> int - | @param nodes (C++: const intvec_t &) + | @param nodes: the nodes that will be part of the group (C++: const + | intvec_t &) + | @return: the group node, or -1 in case of error | | del_custom_layout(self, *args) | del_custom_layout(self) | + | del_edge(self, *args) + | del_edge(self, i, j) -> bool + | @param i (C++: int) + | @param j (C++: int) + | + | del_node(self, *args) + | Delete a node + | + | del_node(self, n) -> ssize_t + | @param n: the node to delete (C++: int) + | @return: the number of deleted edges + | | delete_group(self, *args) + | Delete a group node.This deletes the group node only; it does not + | delete nodes that are part of the group. + | | delete_group(self, group) -> bool - | @param group (C++: int) + | @param group: the group node (C++: int) + | @return: success | | empty(self, *args) - | empty(self) -> bool + | Is the graph (visually) empty? | | exists(self, *args) + | Is the node visible? + | | exists(self, node) -> bool - | @param node (C++: int) + | @param node: the node number (C++: int) + | @return: success | | get_custom_layout(self, *args) | get_custom_layout(self) -> bool | - | get_edge(self, *args) - | get_edge(self, e) -> edge_info_t - | @param e (C++: edge_t) - | | get_first_subgraph_node(self, *args) | get_first_subgraph_node(self, group) -> int | @param group (C++: int) @@ -15133,8 +15999,15 @@ class mutable_graph_t(__builtin__.object) | @param node (C++: int) | | get_node_representative(self, *args) + | Get the node that currently visually represents 'node'. This will find + | the "closest" parent group node that's visible, by attempting to walk + | up the group nodes that contain 'node', and will stop when it finds a + | node that is currently visible.See also get_group_node() + | | get_node_representative(self, node) -> int - | @param node (C++: int) + | @param node: the node (C++: int) + | @return: the node that represents 'node', or 'node' if it's not part + | of any group | | is_collapsed_node(self, *args) | is_collapsed_node(self, node) -> bool @@ -15172,24 +16045,21 @@ class mutable_graph_t(__builtin__.object) | is_user_graph(self) -> bool | | is_visible_node(self, *args) + | Is the node currently visible?An invisible node is a node that's part + | of a group that's currently collapsed. + | | is_visible_node(self, node) -> bool - | @param node (C++: int) + | @param node: the node (C++: int) + | @return: success | | node_qty(self, *args) - | node_qty(self) -> int + | Get the number of visible nodes (the list can be retrieved using + | 'gdl.hpp' 's 'node_iterator' )See also size() | | npred(self, *args) | npred(self, b) -> int | @param b (C++: int) | - | nrect(self, *args) - | nrect(self, n) -> rect_t - | @param n (C++: int) - | - | - | nrect(self, n) -> rect_t - | @param n (C++: int) - | | nsucc(self, *args) | nsucc(self, b) -> int | @param b (C++: int) @@ -15203,9 +16073,38 @@ class mutable_graph_t(__builtin__.object) | predset(self, b) -> intvec_t const & | @param b (C++: int) | + | redo_layout(self, *args) + | Recompute the layout, according to the value of 'current_layout'. + | + | refresh(self, *args) + | Refresh the graphA graph needs refreshing when it's "backing data". + | E.g., if the number (or contents) of the objects in the above example, + | change.Let's say the user's plugin ends up finding a 5th piece of + | scattered data. It should then add it to its internal list of known + | objects, and tell IDA that the graph needs to be refreshed, using + | 'refresh_viewer()' . This will cause IDA to:discard all its internal + | rendering information,call 'mutable_graph_t::refresh()' on the graph + | so that the user's plugin has a chance to "sync" the number of nodes & + | edges that this graph contains, to the information that the plugin has + | collected so farre-create internal rendering information, andrepaint + | the view + | + | replace_edge(self, *args) + | replace_edge(self, i, j, x, y) -> bool + | @param i (C++: int) + | @param j (C++: int) + | @param x (C++: int) + | @param y (C++: int) + | | reset(self, *args) | reset(self) | + | resize(self, *args) + | Resize the graph to 'n' nodes + | + | resize(self, n) + | @param n: the new size (C++: int) + | | set_custom_layout(self, *args) | set_custom_layout(self) | @@ -15226,8 +16125,14 @@ class mutable_graph_t(__builtin__.object) | @param node (C++: int) | @param group (C++: int) | + | set_nrect(self, *args) + | set_nrect(self, n, r) -> bool + | @param n (C++: int) + | @param r (C++: const rect_t &) + | | size(self, *args) - | size(self) -> int + | Get the total number of nodes (including group nodes, and including + | hidden nodes.)See also node_qty() | | succ(self, *args) | succ(self, b, i) -> int @@ -15241,12 +16146,6 @@ class mutable_graph_t(__builtin__.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | belongs | mutable_graph_t_belongs_get(self) -> intvec_t * | @@ -15263,16 +16162,16 @@ class mutable_graph_t(__builtin__.object) | mutable_graph_t_nodes_get(self) -> node_layout_t | | org_preds - | mutable_graph_t_org_preds_get(self) -> array_of_intvec_t + | mutable_graph_t_org_preds_get(self) -> array_of_intvec_t * | | org_succs - | mutable_graph_t_org_succs_get(self) -> array_of_intvec_t + | mutable_graph_t_org_succs_get(self) -> array_of_intvec_t * | | preds - | mutable_graph_t_preds_get(self) -> array_of_intvec_t + | mutable_graph_t_preds_get(self) -> array_of_intvec_t * | | succs - | mutable_graph_t_succs_get(self) -> array_of_intvec_t + | mutable_graph_t_succs_get(self) -> array_of_intvec_t * | | thisown | The membership flag @@ -15282,6 +16181,128 @@ class mutable_graph_t(__builtin__.object) | | __swig_destroy__ = | delete_mutable_graph_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from abstract_graph_t: + | + | __disown__(self) + | + | create_circle_layout(self, *args) + | create_circle_layout(self, p, radius) -> bool + | @param p (C++: point_t) + | @param radius (C++: int) + | + | create_tree_layout(self, *args) + | create_tree_layout(self) -> bool + | + | get_edge(self, *args) + | get_edge(self, e) -> edge_info_t + | @param e (C++: edge_t) + | + | grcall(self, *args) + | grcall(self, code) -> ssize_t + | @param code (C++: int) + | + | nrect(self, *args) + | nrect(self, n) -> rect_t + | @param n (C++: int) + | + | set_callback(self, *args) + | set_callback(self, _callback, _ud) + | @param _callback (C++: hook_cb_t *) + | @param _ud (C++: void *) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from abstract_graph_t: + | + | callback_ud + | abstract_graph_t_callback_ud_get(self) -> void * + | + | circle_center + | abstract_graph_t_circle_center_get(self) -> point_t + | + | circle_radius + | abstract_graph_t_circle_radius_get(self) -> int + | + | current_layout + | abstract_graph_t_current_layout_get(self) -> layout_type_t + | + | rect_edges_made + | abstract_graph_t_rect_edges_made_get(self) -> bool + | + | title + | abstract_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on class node_info_t in module ida_graph: @@ -15522,10 +16543,18 @@ class node_ordering_t(__builtin__.object) | clear(self, *args) | clear(self) | + | clr(self, *args) + | clr(self, _node) -> bool + | @param _node (C++: int) + | | node(self, *args) | node(self, _order) -> int | @param _order (C++: size_t) | + | order(self, *args) + | order(self, _node) -> int + | @param _node (C++: int) + | | resize(self, *args) | resize(self, n) | @param n (C++: int) @@ -16629,7 +17658,7 @@ Help on function viewer_create_groups in module ida_graph: viewer_create_groups(*args) This will perform an operation similar to what happens when a user manually selects a set of nodes, right-clicks and selects "Create - group". This is a wrapper around mutable_graph_t::create_group that + group". This is a wrapper around 'mutable_graph_t::create_group' that will, in essence:clone the current graphfor each 'group_crinfo_t' , attempt creating group in that new graphif all were successful, animate to that new graph.this accepts parameters that allow creating @@ -16653,9 +17682,9 @@ viewer_del_node_info(*args) Help on function viewer_delete_groups in module ida_graph: viewer_delete_groups(*args) - Wrapper around mutable_graph_t::delete_group. This function will:clone - the current graphattempt deleting the groups in that new graphif - successful, animate to that new graph. + Wrapper around 'mutable_graph_t::delete_group' . This function + will:clone the current graphattempt deleting the groups in that new + graphif successful, animate to that new graph. viewer_delete_groups(gv, groups, new_current=-1) -> bool @param gv (C++: graph_viewer_t *) @@ -16724,7 +17753,7 @@ viewer_set_gli(*args) Help on function viewer_set_groups_visibility in module ida_graph: viewer_set_groups_visibility(*args) - Wrapper around mutable_graph_t::change_visibility. This function + Wrapper around 'mutable_graph_t::change_visibility' . This function will:clone the current graphattempt changing visibility of the groups in that new graphif successful, animate to that new graph. @@ -16888,6 +17917,17 @@ class Hexrays_Hooks(__builtin__.object) | | __repr__ = _swig_repr(self) | + | build_callinfo(self, *args) + | Analyzing a call instruction. + | + | build_callinfo(self, blk, type, callinfo) -> int + | @param blk: blk->tail is the call. (C++: mblock_t *) + | @param type: buffer for the output type. (C++: tinfo_t *) + | @param callinfo: prepared callinfo. Should return: 1 if the function + | type has been determined. The plugin should either + | specify the function type, either allocate and return + | a new mcallinfo_t object. (C++: mcallinfo_t **) + | | close_pseudocode(self, *args) | Pseudocode view is being closed. | @@ -16911,10 +17951,12 @@ class Hexrays_Hooks(__builtin__.object) | a preceding one (C++: minsn_t *) | | create_hint(self, *args) - | Create a hint for the current item. + | Create a hint for the current item. 'ui_get_custom_viewer_hint' | | create_hint(self, vu) -> PyObject * | @param vu (C++: vdui_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | curpos(self, *args) | Current cursor position has been changed. (for example, by left- @@ -16942,7 +17984,8 @@ class Hexrays_Hooks(__builtin__.object) | | func_printed(self, *args) | Function text has been generated. Plugins may modify the text in - | 'cfunc_t::sv' . + | 'cfunc_t::sv' . The text uses regular color codes (see 'lines.hpp' ) + | COLOR_ADDR is used to store pointers to ctree elements. | | func_printed(self, cfunc) -> int | @param cfunc (C++: cfunc_t *) @@ -17065,7 +18108,8 @@ class Hexrays_Hooks(__builtin__.object) | | print_func(self, cfunc, vp) -> int | @param cfunc (C++: cfunc_t *) - | @param vp: Returns: 1 if text has been generated by the plugin (C++: + | @param vp: Returns: 1 if text has been generated by the plugin It is + | forbidden to modify ctree at this event. (C++: | vc_printer_t *) | | prolog(self, *args) @@ -17123,9 +18167,9 @@ class Hexrays_Hooks(__builtin__.object) | Decompiled text is ready. | | text_ready(self, vu) -> int - | @param vu: This event can be used to modify the output text (sv). The - | text uses regular color codes (see lines.hpp) COLOR_ADDR is - | used to store pointers to ctree elements (C++: vdui_t *) + | @param vu: This event can be used to modify the output text (sv). + | Obsolete. Please use hxe_func_printed instead. (C++: + | vdui_t *) | | unhook(self, *args) | unhook(self) -> bool @@ -17202,6 +18246,17 @@ class __cbhooks_t(Hexrays_Hooks) | | __repr__ = _swig_repr(self) | + | build_callinfo(self, *args) + | Analyzing a call instruction. + | + | build_callinfo(self, blk, type, callinfo) -> int + | @param blk: blk->tail is the call. (C++: mblock_t *) + | @param type: buffer for the output type. (C++: tinfo_t *) + | @param callinfo: prepared callinfo. Should return: 1 if the function + | type has been determined. The plugin should either + | specify the function type, either allocate and return + | a new mcallinfo_t object. (C++: mcallinfo_t **) + | | cmt_changed(self, *args) | Comment got changed. | @@ -22066,7 +23121,8 @@ class chain_t(ida_pro.intvec_t) | append_list(self, *args) | Append the contents of the chain to the specified list of locations. | - | append_list(self, list) + | append_list(self, mba, list) + | @param mba (C++: const mba_t *) | @param list (C++: mlist_t *) | | clear_varnum(self, *args) @@ -23433,18 +24489,44 @@ class codegen_t(__builtin__.object) | gen_micro(self, *args) | Generate microcode for one instruction. The instruction is in INSN | + | load_effective_address(self, *args) + | Generate microcode to calculate the address of a memory operand. + | + | load_effective_address(self, n, flags=0) -> mreg_t + | @param n: - number of INSN operand (C++: int) + | @param flags: - reserved for future use (C++: int) + | @return: register containing the operand address. mr_none - failed + | (not a memory operand) + | | load_operand(self, *args) | Generate microcode to load one operand. | - | load_operand(self, opnum) -> mreg_t + | load_operand(self, opnum, flags=0) -> mreg_t | @param opnum (C++: int) + | @param flags: - reserved for future use (C++: int) + | @return: register containing the operand. | | microgen_completed(self, *args) | This method is called when the microcode generation is done. | | prepare_gen_micro(self, *args) - | Setup internal data to handle new instruction This method should be - | called before calling 'gen_micro()' The instruction is in INSN + | Setup internal data to handle new instruction. This method should be + | called before calling 'gen_micro()' . Usually 'gen_micro()' is called + | by the decompiler. You have to call this function explicitly only if + | you yourself call 'gen_micro()' . The instruction is in INSN + | + | store_operand(self, *args) + | Generate microcode to store an operand. In case of success an + | arbitrary number of instructions can be generated (and even no + | instruction if the source and target are the same) + | + | store_operand(self, n, mop, flags=0, outins=None) -> bool + | @param n: - number of target INSN operand (C++: int) + | @param mop: - operand to be stored (C++: const mop_t &) + | @param flags: - reserved for future use (C++: int) + | @param outins: - (OUT) the last generated instruction (C++: minsn_t + | **) + | @return: success | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -23490,6 +24572,15 @@ convert_to_user_call(*args) @return: Microcode error codes code: MERR_OK - user-defined call generated else - error (MERR_INSN == inacceptable udc.tif) +Help on function create_cfunc in module ida_hexrays: + +create_cfunc(*args) + Create a new 'cfunc_t' object. + + create_cfunc(mba) -> cfuncptr_t + @param mba: microcode object. After creating the cfunc object it takes + the ownership of MBA. (C++: mba_t *) + Help on function create_field_name in module ida_hexrays: create_field_name(*args) @@ -24417,7 +25508,8 @@ class cwhile_t(cloop_t) Help on function debug_hexrays_ctree in module ida_hexrays: debug_hexrays_ctree(*args) - debug_hexrays_ctree(msg) + debug_hexrays_ctree(level, msg) + level: int msg: char const * Help on function decompile in module ida_hexrays: @@ -24813,65 +25905,6 @@ class eamap_t(__builtin__.object) | valuetype = | Proxy of C++ qvector< cinsn_t * > class. -Help on class fnum_array in module ida_hexrays: - -class fnum_array(__builtin__.object) - | Proxy of C++ wrapped_array_t< uint16,6 > class. - | - | Methods defined here: - | - | __getitem__(self, *args) - | __getitem__(self, i) -> unsigned short const & - | i: size_t - | - | __init__(self, *args) - | __init__(self, data) -> fnum_array - | data: unsigned short (&)[6] - | - | __iter__ = _bounded_getitem_iterator(self) - | Helper function, to be set as __iter__ method for qvector-, or array-based classes. - | - | __len__(self, *args) - | __len__(self) -> size_t - | - | __repr__ = _swig_repr(self) - | - | __setitem__(self, *args) - | __setitem__(self, i, v) - | i: size_t - | v: unsigned short const & - | - | _get_bytes(self, *args) - | _get_bytes(self) -> bytevec_t - | - | _set_bytes(self, *args) - | _set_bytes(self, bts) - | bts: bytevec_t const & - | - | ---------------------------------------------------------------------- - | Data descriptors defined here: - | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | - | bytes - | _get_bytes(self) -> bytevec_t - | - | data - | fnum_array_data_get(self) -> unsigned short (&)[6] - | - | thisown - | The membership flag - | - | ---------------------------------------------------------------------- - | Data and other attributes defined here: - | - | __swig_destroy__ = - | delete_fnum_array(self) - Help on class fnumber_t in module ida_hexrays: class fnumber_t(__builtin__.object) @@ -24908,9 +25941,6 @@ class fnumber_t(__builtin__.object) | | __repr__ = _swig_repr(self) | - | _fnumber_t__get_fnum = __get_fnum(self, *args) - | __get_fnum(self) -> fnum_array - | | _print(self, *args) | _print(self) | @@ -24934,7 +25964,7 @@ class fnumber_t(__builtin__.object) | list of weak references to the object (if defined) | | fnum - | __get_fnum(self) -> fnum_array + | fnumber_t_fnum_get(self) -> fpvalue_t | | nbytes | fnumber_t_nbytes_get(self) -> int @@ -24968,6 +25998,10 @@ class gco_info_t(__builtin__.object) | @param list: list to append to (C++: mlist_t *) | @param mba: microcode object (C++: const mba_t *) | + | cvt_to_ivl(self, *args) + | Convert operand info to VIVL. The returned VIVL can be used, for + | example, in a call of get_valranges(). + | | is_def(self, *args) | is_def(self) -> bool | @@ -25926,14 +26960,13 @@ class history_t(qvector_history_t) Help on function init_hexrays_plugin in module ida_hexrays: init_hexrays_plugin(*args) - 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. + Check that your plugin is compatible with hex-rays decompiler. This + function must be called before calling any other decompiler function. init_hexrays_plugin(flags=0) -> bool @param flags: reserved, must be 0 (C++: int) - @return: true if the decompiler exists and the dispatcher pointer is - ready to use. + @return: true if the decompiler exists and is compatible with your + plugin Help on function install_hexrays_callback in module ida_hexrays: @@ -26621,6 +27654,19 @@ Help on function lnot in module ida_hexrays: lnot(e) +Help on function locate_lvar in module ida_hexrays: + +locate_lvar(*args) + Find a variable by name. + + locate_lvar(out, func_ea, varname) -> bool + @param out: output buffer for the variable locator (C++: + lvar_locator_t *) + @param func_ea: function start address (C++: ea_t) + @param varname: variable name (C++: const char *) + @return: success Since VARNAME is not always enough to find the + variable, it may decompile the function. + Help on class lvar_locator_t in module ida_hexrays: class lvar_locator_t(__builtin__.object) @@ -27011,6 +28057,9 @@ class lvar_saved_info_t(__builtin__.object) | clr_noptr_lvar(self, *args) | clr_noptr_lvar(self) | + | clr_unused_lvar(self, *args) + | clr_unused_lvar(self) + | | has_info(self, *args) | has_info(self) -> bool | @@ -27026,6 +28075,9 @@ class lvar_saved_info_t(__builtin__.object) | is_noptr_lvar(self, *args) | is_noptr_lvar(self) -> bool | + | is_unused_lvar(self, *args) + | is_unused_lvar(self) -> bool + | | set_forced_lvar(self, *args) | set_forced_lvar(self) | @@ -27038,6 +28090,9 @@ class lvar_saved_info_t(__builtin__.object) | set_noptr_lvar(self, *args) | set_noptr_lvar(self) | + | set_unused_lvar(self, *args) + | set_unused_lvar(self) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -27260,7 +28315,8 @@ class lvar_t(lvar_locator_t) | append_list(self, *args) | Append local variable to mlist. | - | append_list(self, lst, pad_if_scattered=False) + | append_list(self, mba, lst, pad_if_scattered=False) + | @param mba: ptr to the current mba_t (C++: const mba_t *) | @param lst: list to append to (C++: mlist_t *) | @param pad_if_scattered (C++: bool) | @@ -27273,6 +28329,9 @@ class lvar_t(lvar_locator_t) | clr_automapped(self, *args) | clr_automapped(self) | + | clr_decl_unused(self, *args) + | clr_decl_unused(self) + | | clr_dummy_arg(self, *args) | clr_dummy_arg(self) | @@ -27337,6 +28396,9 @@ class lvar_t(lvar_locator_t) | has_regname(self, *args) | Has a register name? (like _RAX) | + | in_asm(self, *args) + | Is variable used in an instruction translated into __asm? + | | is_aliasable(self, *args) | Is the variable aliasable? | @@ -27348,6 +28410,9 @@ class lvar_t(lvar_locator_t) | is_automapped(self, *args) | Was the variable automatically mapped to another variable? | + | is_decl_unused(self, *args) + | Was declared as __unused by the user? See CVAR_UNUSED. + | | is_dummy_arg(self, *args) | Is a dummy argument (added to fill a hole in the argument list) | @@ -27372,6 +28437,9 @@ class lvar_t(lvar_locator_t) | set_automapped(self, *args) | set_automapped(self) | + | set_decl_unused(self, *args) + | set_decl_unused(self) + | | set_dummy_arg(self, *args) | set_dummy_arg(self) | @@ -27622,6 +28690,9 @@ class lvar_uservec_t(__builtin__.object) | clear(self, *args) | clear(self) | + | empty(self, *args) + | empty(self) -> bool + | | find_info(self, *args) | find saved user settings for given var | @@ -28122,7 +29193,7 @@ class mba_t(__builtin__.object) | | combine_blocks(self, *args) | Combine blocks. This function merges blocks constituting linear flow. - | It calls 'remove_empty_blocks()' as well. + | It calls 'remove_empty_and_unreachable_blocks()' as well. | | common_stkvars_stkargs(self, *args) | common_stkvars_stkargs(self) -> bool @@ -28139,6 +29210,23 @@ class mba_t(__builtin__.object) | (C++: int) | @return: pointer to the new copy | + | create_helper_call(self, *args) + | Create a call of a helper function. + | + | create_helper_call(self, ea, helper, rettype=None, callargs=None, out=None) -> minsn_t + | @param ea: The desired address of the instruction (C++: ea_t) + | @param helper: The helper name (C++: const char *) + | @param rettype: The return type (NULL or empty type means 'void') + | (C++: const tinfo_t *) + | @param callargs: The helper arguments (NULL-no arguments) (C++: const + | mcallargs_t *) + | @param out: The operand where the call result should be stored. If + | this argument is not NULL, "mov helper_call(), out" will + | be generated. Otherwise "call helper()" will be generated. + | Note: the size of this operand must be equal to the + | RETTYPE size (C++: const mop_t *) + | @return: pointer to the created instruction or NULL if error + | | deleted_pairs(self, *args) | deleted_pairs(self) -> bool | @@ -28265,6 +29353,9 @@ class mba_t(__builtin__.object) | has_passregs(self, *args) | has_passregs(self) -> bool | + | has_stack_retval(self, *args) + | has_stack_retval(self) -> bool + | | idaloc2vd(self, *args) | idaloc2vd(self, loc, width) -> vdloc_t | @param loc (C++: const argloc_t &) @@ -28370,8 +29461,9 @@ class mba_t(__builtin__.object) | @return: true if at least one of the other blocks became empty or | unreachable | - | remove_empty_blocks(self, *args) - | Delete all empty blocks. + | remove_empty_and_unreachable_blocks(self, *args) + | Delete all empty and unreachable blocks. Blocks marked with MBL_KEEP + | won't be deleted. | | returns_fpval(self, *args) | returns_fpval(self) -> bool @@ -28391,6 +29483,15 @@ class mba_t(__builtin__.object) | serialize(self, *args) | Serialize mbl array into a sequence of bytes. | + | set_maturity(self, *args) + | Set maturity level. + | + | set_maturity(self, mat) -> bool + | @param mat (C++: mba_maturity_t) + | @return: true if it is time to stop analysis Plugins may use this + | function to skip some parts of the analysis. The maturity + | level cannot be decreased. + | | set_mba_flags(self, *args) | set_mba_flags(self, f) | @param f (C++: int) @@ -28490,6 +29591,9 @@ class mba_t(__builtin__.object) | consumed_argregs | mba_t_consumed_argregs_get(self) -> rlist_t | + | deprecated_idb_node + | mba_t_deprecated_idb_node_get(self) -> netnode + | | entry_ea | mba_t_entry_ea_get(self) -> ea_t | @@ -28524,7 +29628,6 @@ class mba_t(__builtin__.object) | mba_t_gotoff_stkvars_get(self) -> ivlset_t | | idb_node - | mba_t_idb_node_get(self) -> netnode | | idb_spoiled | mba_t_idb_spoiled_get(self) -> reginfovec_t @@ -28633,6 +29736,7 @@ class mbl_graph_t(simple_graph_t) | Method resolution order: | mbl_graph_t | simple_graph_t + | ida_gdl.gdl_graph_t | __builtin__.object | | Methods defined here: @@ -28703,17 +29807,121 @@ class mbl_graph_t(simple_graph_t) | ---------------------------------------------------------------------- | Data descriptors inherited from simple_graph_t: | + | colored_gdl_edges + | simple_graph_t_colored_gdl_edges_get(self) -> bool + | + | title + | simple_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | __disown__(self) + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | - | colored_gdl_edges - | simple_graph_t_colored_gdl_edges_get(self) -> bool + | ---------------------------------------------------------------------- + | Data and other attributes inherited from ida_gdl.gdl_graph_t: | - | title - | simple_graph_t_title_get(self) -> qstring * + | __swig_destroy__ = + | delete_gdl_graph_t(self) Help on class mblock_t in module ida_hexrays: @@ -28900,7 +30108,7 @@ class mblock_t(__builtin__.object) | @return: zero or the value returned by mmv.visit_mop() | | get_reginsn_qty(self, *args) - | Calculate number of register instructions in the block. Assertions are + | Calculate number of regular instructions in the block. Assertions are | skipped by this function. | | get_valranges(self, *args) @@ -29222,6 +30430,9 @@ class mcallarg_t(mop_t) | ea | mcallarg_t_ea_get(self) -> ea_t | + | flags + | mcallarg_t_flags_get(self) -> uint32 + | | name | mcallarg_t_name_get(self) -> qstring * | @@ -29567,7 +30778,8 @@ class mcallarg_t(mop_t) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) @@ -29714,6 +30926,9 @@ class mcallarg_t(mop_t) | is_one(self, *args) | is_one(self) -> bool | + | is_pcval(self, *args) + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) | is_positive_constant(self) -> bool | @@ -29861,6 +31076,11 @@ class mcallarg_t(mop_t) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) | Is it possible for the operand to use aliased memory? | @@ -29920,6 +31140,10 @@ class mcallarg_t(mop_t) | unsigned_value(self, *args) | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -30642,9 +31866,8 @@ class minsn_t(__builtin__.object) | is_noret_call(self, *args) | Is a non-returing call? | - | is_noret_call(self, ignore_noret_icall=False) -> bool - | @param ignore_noret_icall: if set, indirect calls to noret functions - | will return false (C++: bool) + | is_noret_call(self, flags=0) -> bool + | @param flags (C++: int) | | is_optional(self, *args) | is_optional(self) -> bool @@ -31179,7 +32402,7 @@ modify_user_lvar_info(*args) Modify saved local variable settings of one variable. modify_user_lvar_info(func_ea, mli_flags, info) -> bool - @param func_ea (C++: ea_t) + @param func_ea: function start address (C++: ea_t) @param mli_flags: bits that specify which attrs defined by INFO are to be set (C++: uint) @param info: local variable info attrs (C++: const lvar_saved_info_t @@ -31576,7 +32799,8 @@ class mop_addr_t(mop_t) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) @@ -31726,6 +32950,9 @@ class mop_addr_t(mop_t) | is_one(self, *args) | is_one(self) -> bool | + | is_pcval(self, *args) + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) | is_positive_constant(self) -> bool | @@ -31869,6 +33096,11 @@ class mop_addr_t(mop_t) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) | Is it possible for the operand to use aliased memory? | @@ -31928,6 +33160,10 @@ class mop_addr_t(mop_t) | unsigned_value(self, *args) | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -32380,7 +33616,8 @@ class mop_t(__builtin__.object) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) @@ -32530,6 +33767,9 @@ class mop_t(__builtin__.object) | is_one(self, *args) | is_one(self) -> bool | + | is_pcval(self, *args) + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) | is_positive_constant(self) -> bool | @@ -32677,6 +33917,11 @@ class mop_t(__builtin__.object) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) | Is it possible for the operand to use aliased memory? | @@ -32736,6 +33981,10 @@ class mop_t(__builtin__.object) | unsigned_value(self, *args) | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -33309,51 +34558,6 @@ class operand_locator_t(__builtin__.object) | __swig_destroy__ = | delete_operand_locator_t(self) -Help on class operator_info_t in module ida_hexrays: - -class operator_info_t(__builtin__.object) - | Proxy of C++ operator_info_t class. - | - | Methods defined here: - | - | __init__(self, *args) - | __init__(self) -> operator_info_t - | - | __repr__ = _swig_repr(self) - | - | ---------------------------------------------------------------------- - | Data descriptors defined here: - | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | - | fixtype - | operator_info_t_fixtype_get(self) -> uchar - | - | flags - | operator_info_t_flags_get(self) -> uchar - | - | precedence - | operator_info_t_precedence_get(self) -> uchar - | - | text - | operator_info_t_text_get(self) -> char const * - | - | thisown - | The membership flag - | - | valency - | operator_info_t_valency_get(self) -> uchar - | - | ---------------------------------------------------------------------- - | Data and other attributes defined here: - | - | __swig_destroy__ = - | delete_operator_info_t(self) - Help on class optblock_t in module ida_hexrays: class optblock_t(__builtin__.object) @@ -34432,6 +35636,18 @@ Help on function remove_hexrays_callback in module ida_hexrays: remove_hexrays_callback(callback) Deprecated. Please use Hexrays_Hooks instead +Help on function rename_lvar in module ida_hexrays: + +rename_lvar(*args) + Rename a local variable. + + rename_lvar(func_ea, oldname, newname) -> bool + @param func_ea: function start address (C++: ea_t) + @param oldname: old name of the variable (C++: const char *) + @param newname: new name of the variable (C++: const char *) + @return: success This is a convenience function. For bulk renaming + consider using modify_user_lvars. + Help on function restore_user_cmts in module ida_hexrays: restore_user_cmts(*args) @@ -34802,10 +36018,10 @@ class scif_t(vdloc_t) | Methods defined here: | | __init__(self, *args) - | __init__(self, _mba, n, tif) -> scif_t + | __init__(self, _mba, tif, n=None) -> scif_t | _mba: mba_t * - | n: qstring * | tif: tinfo_t * + | n: qstring * | | __repr__ = _swig_repr(self) | @@ -34976,6 +36192,9 @@ class scif_t(vdloc_t) | has_stkoff(self, *args) | TRUE if argloc has a stack part. | + | in_stack(self, *args) + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) | See 'ALOC_NONE' . | @@ -35159,9 +36378,14 @@ set_type(*args) Help on class simple_graph_t in module ida_hexrays: -class simple_graph_t(__builtin__.object) +class simple_graph_t(ida_gdl.gdl_graph_t) | Proxy of C++ simple_graph_t class. | + | Method resolution order: + | simple_graph_t + | ida_gdl.gdl_graph_t + | __builtin__.object + | | Methods defined here: | | __init__(self, *args, **kwargs) @@ -35171,12 +36395,6 @@ class simple_graph_t(__builtin__.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | colored_gdl_edges | simple_graph_t_colored_gdl_edges_get(self) -> bool | @@ -35185,6 +36403,116 @@ class simple_graph_t(__builtin__.object) | | title | simple_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | __disown__(self) + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | ---------------------------------------------------------------------- + | Data and other attributes inherited from ida_gdl.gdl_graph_t: + | + | __swig_destroy__ = + | delete_gdl_graph_t(self) Help on class stkvar_ref_t in module ida_hexrays: @@ -37697,6 +39025,9 @@ class var_ref_t(__builtin__.object) | compare(self, r) -> int | r: var_ref_t const & | + | getv(self, *args) + | getv(self) -> lvar_t + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -38099,6 +39430,9 @@ class vdloc_t(ida_typeinf.argloc_t) | has_stkoff(self, *args) | TRUE if argloc has a stack part. | + | in_stack(self, *args) + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) | See 'ALOC_NONE' . | @@ -38209,9 +39543,9 @@ class vdui_t(__builtin__.object) | | calc_cmt_type(self, *args) | Check if the specified line can have a comment. Due to the coordinate - | system for comments (http://www.hexblog.com/?p=60) some function lines - | cannot have comments. This function checks if a comment can be - | attached to the specified line. + | system for comments: (https://www.hex-rays.com/blog/coordinate-system- + | for-hex-rays) some function lines cannot have comments. This function + | checks if a comment can be attached to the specified line. | | calc_cmt_type(self, lnnum, cmttype) -> cmt_type_t | @param lnnum: line number (0 based) (C++: size_t) @@ -38359,13 +39693,13 @@ class vdui_t(__builtin__.object) | | rename_lvar(self, *args) | Rename local variable. This function permanently renames a local - | variable. + | variable.::rename_lvar() | | rename_lvar(self, v, name, is_user_name) -> bool | @param v: pointer to local variable (C++: lvar_t *) | @param name: new variable name (C++: const char *) - | @param is_user_name: use true to save the new name into the database - | (C++: bool) + | @param is_user_name: use true to save the new name into the database. + | use false to delete the saved name. (C++: bool) | @return: false if failed | | rename_strmem(self, *args) @@ -39053,7 +40387,7 @@ do not use function frame info (only snippet mode) ida_hexrays.DECOMP_NO_HIDE """ -do not hide display waitbox. see close_hexrays_waitboxes() +do not close display waitbox. see close_hexrays_waitboxes() """ ida_hexrays.DECOMP_NO_WAIT @@ -39146,6 +40480,11 @@ ida_hexrays.FCI_DEAD some return registers were determined dead """ +ida_hexrays.FCI_EXPLOCS +""" +all arglocs are specified explicitly +""" + ida_hexrays.FCI_FINAL """ call type is final, should not be changed @@ -39443,6 +40782,11 @@ ida_hexrays.LVINF_NOPTR variable type should not be a pointer """ +ida_hexrays.LVINF_UNUSED +""" +unused argument, corresponds to CVAR_UNUSED +""" + ida_hexrays.MBA_ASRPROP """ assertion have been propagated @@ -39633,6 +40977,11 @@ ida_hexrays.MBL_INCONST inconsistent lists: we are building them """ +ida_hexrays.MBL_KEEP +""" +do not remove even if unreachable +""" + ida_hexrays.MBL_LIST """ use/def lists are ready (not dirty) @@ -39760,7 +41109,9 @@ reuse existing window, only if the ida_hexrays.OPROP_CCFLAGS """ -condition codes register value +else: value of a condition code register (like mr_cc) + +mop_n: a pc-relative value """ ida_hexrays.OPROP_FLOAT @@ -39991,6 +41342,34 @@ class compiler_info_t(__builtin__.object) | __swig_destroy__ = | delete_compiler_info_t(self) +Help on function delinf in module ida_ida: + +delinf(*args) + undefine a program specific information + + delinf(tag) -> bool + @param tag: one of inftag_t constants (C++: inftag_t) + @return: success + +Help on function get_dbctx_id in module ida_ida: + +get_dbctx_id(*args) + Get the current database context ID + +Help on function get_dbctx_qty in module ida_ida: + +get_dbctx_qty(*args) + Get number of database contexts + +Help on function getinf_str in module ida_ida: + +getinf_str(*args) + get program specific information (a non-scalar value) + + getinf_str(tag) -> str + @param tag: one of inftag_t constants (C++: inftag_t) + @return: number of bytes stored in the buffer (<0 - not defined) + Help on class idainfo in module ida_ida: class idainfo(__builtin__.object) @@ -40332,10 +41711,9 @@ Help on function inf_get_pack_mode in module ida_ida: inf_get_pack_mode(*args) inf_get_pack_mode() -> int -Help on function inf_is_32bit in module ida_ida: +Help on function idainfo_is_32bit in module ida_ida: -inf_is_32bit(*args) - inf_is_32bit() -> bool +idainfo_is_32bit() Help on function inf_is_64bit in module ida_ida: @@ -40694,6 +42072,11 @@ Help on function inf_get_af_low in module ida_ida: inf_get_af_low(*args) Get/set low/high 16bit halves of inf.af. +Help on function inf_get_app_bitness in module ida_ida: + +inf_get_app_bitness(*args) + inf_get_app_bitness() -> uint + Help on function inf_get_appcall_options in module ida_ida: inf_get_appcall_options(*args) @@ -41062,6 +42445,21 @@ inf_inc_database_change_count(*args) inf_inc_database_change_count(cnt=1) @param cnt (C++: int) +Help on function inf_is_16bit in module ida_ida: + +inf_is_16bit(*args) + inf_is_16bit() -> bool + +Help on function inf_is_32bit_exactly in module ida_ida: + +inf_is_32bit_exactly(*args) + inf_is_32bit_exactly() -> bool + +Help on function inf_is_32bit_or_higher in module ida_ida: + +inf_is_32bit_or_higher(*args) + inf_is_32bit_or_higher() -> bool + Help on function inf_is_limiter_empty in module ida_ida: inf_is_limiter_empty(*args) @@ -42230,6 +43628,15 @@ Help on function in module ida_ida: lambda *args +Help on function switch_dbctx in module ida_ida: + +switch_dbctx(*args) + Switch to the database with the provided context ID + + switch_dbctx(idx) -> dbctx_t * + @param idx: the index of the database to switch to (C++: size_t) + @return: the current dbctx_t instance or nullptr + Help on function to_ea in module ida_ida: to_ea(*args) @@ -42268,7 +43675,8 @@ ida_ida.ABI_HUGEARG_ALIGN """ use natural type alignment for an argument even if its alignment exceeds double native word size (the default is to use double word -max). e.g. if this bit is set, __int128 has 16-byte alignment +max). e.g. if this bit is set, __int128 has 16-byte alignment. this +bit is not used by ida yet """ ida_ida.ABI_MAP_STKARGS @@ -42610,7 +44018,7 @@ pack the database? ida_ida.LFLG_PC_FLAT """ -32-bit program? +32-bit program (or higher)? """ ida_ida.LFLG_PC_FPP @@ -43298,7 +44706,7 @@ Help on function as_cstr in module ida_idaapi: as_cstr(val) Returns a C str from the passed value. The passed value can be of type refclass (returned by a call to buffer() or byref()) - It scans for the first and returns the string value up to that point. + It scans for the first \x00 and returns the string value up to that point. Help on function as_int32 in module ida_idaapi: @@ -44252,9 +45660,9 @@ class call_stack_info_t(__builtin__.object) | __swig_destroy__ = | delete_call_stack_info_t(self) -Help on class call_stack_t in module ida_idd: +Help on class call_stack_info_vec_t in module ida_idd: -class call_stack_t(__builtin__.object) +class call_stack_info_vec_t(__builtin__.object) | Proxy of C++ qvector< call_stack_info_t > class. | | Methods defined here: @@ -44268,7 +45676,7 @@ class call_stack_t(__builtin__.object) | i: size_t | | __init__(self, *args) - | __init__(self) -> call_stack_t + | __init__(self) -> call_stack_info_vec_t | x: qvector< call_stack_info_t > const & | | __iter__ = _bounded_getitem_iterator(self) @@ -44409,8 +45817,178 @@ class call_stack_t(__builtin__.object) | ---------------------------------------------------------------------- | Data and other attributes defined here: | + | __swig_destroy__ = + | delete_call_stack_info_vec_t(self) + +Help on class call_stack_t in module ida_idd: + +class call_stack_t(call_stack_info_vec_t) + | Proxy of C++ call_stack_t class. + | + | Method resolution order: + | call_stack_t + | call_stack_info_vec_t + | __builtin__.object + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> call_stack_t + | + | __repr__ = _swig_repr(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | | __swig_destroy__ = | delete_call_stack_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from call_stack_info_vec_t: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: qvector< call_stack_info_t > const & + | + | __getitem__(self, *args) + | __getitem__(self, i) -> call_stack_info_t + | i: size_t + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: qvector< call_stack_info_t > const & + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: call_stack_info_t const & + | + | _del(self, *args) + | _del(self, x) -> bool + | x: call_stack_info_t const & + | + | add_unique(self, *args) + | add_unique(self, x) -> bool + | x: call_stack_info_t const & + | + | at(self, *args) + | at(self, _idx) -> call_stack_info_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) + | begin(self) -> call_stack_info_t + | begin(self) -> call_stack_info_t + | + | capacity(self, *args) + | capacity(self) -> size_t + | + | clear(self, *args) + | clear(self) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> call_stack_info_t + | end(self) -> call_stack_info_t + | + | erase(self, *args) + | erase(self, it) -> call_stack_info_t + | it: qvector< call_stack_info_t >::iterator + | + | + | erase(self, first, last) -> call_stack_info_t + | first: qvector< call_stack_info_t >::iterator + | last: qvector< call_stack_info_t >::iterator + | + | extract(self, *args) + | extract(self) -> call_stack_info_t + | + | find(self, *args) + | find(self, x) -> call_stack_info_t + | x: call_stack_info_t const & + | + | + | find(self, x) -> call_stack_info_t + | x: call_stack_info_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) + | grow(self, x=call_stack_info_t()) + | x: call_stack_info_t const & + | + | has(self, *args) + | has(self, x) -> bool + | x: call_stack_info_t const & + | + | inject(self, *args) + | inject(self, s, len) + | s: call_stack_info_t * + | len: size_t + | + | insert(self, *args) + | insert(self, it, x) -> call_stack_info_t + | it: qvector< call_stack_info_t >::iterator + | x: call_stack_info_t const & + | + | pop_back(self, *args) + | pop_back(self) + | + | push_back(self, *args) + | push_back(self, x) + | x: call_stack_info_t const & + | + | qclear(self, *args) + | qclear(self) + | + | reserve(self, *args) + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) + | resize(self, _newsize, x) + | _newsize: size_t + | x: call_stack_info_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) + | size(self) -> size_t + | + | swap(self, *args) + | swap(self, r) + | r: qvector< call_stack_info_t > & + | + | truncate(self, *args) + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from call_stack_info_vec_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on function can_exc_continue in module ida_idd: @@ -45523,7 +47101,7 @@ class regval_t(__builtin__.object) | | set_float(self, *args) | set_float(self, x) - | x: ushort const * + | x: fpvalue_t const & | | set_int(self, *args) | set_int(self, x) @@ -45548,7 +47126,7 @@ class regval_t(__builtin__.object) | list of weak references to the object (if defined) | | fval - | regval_t_fval_get(self) -> uint16 [6] + | regval_t_fval_get(self) -> fpvalue_t | | ival | regval_t_ival_get(self) -> uint64 @@ -45885,11 +47463,12 @@ class IDB_Hooks(__builtin__.object) | bookmark_changed(self, *args) | Boomarked position changed. | - | bookmark_changed(self, index, pos, desc) + | bookmark_changed(self, index, pos, desc, operation) | @param index (C++: uint32) | @param pos (C++: const lochist_entry_t *) - | @param desc: if desc==NULL, then the bookmark was deleted. (C++: - | const char *) + | @param desc (C++: const char *) + | @param operation: 0-added, 1-updated, 2-deleted if desc==NULL, then + | the bookmark was deleted. (C++: int) | | byte_patched(self, *args) | A byte has been patched. @@ -46028,6 +47607,9 @@ class IDB_Hooks(__builtin__.object) | compiler_changed(self, *args) | The kernel has changed the compiler information. (\inf{cc} structure; | 'get_abi_name' ) + | + | compiler_changed(self, adjust_inf_fields) + | @param adjust_inf_fields: may change inf fields? (C++: bool) | | deleting_enum(self, *args) | An enum type is to be deleted. @@ -46139,6 +47721,13 @@ class IDB_Hooks(__builtin__.object) | @param dt (C++: dirtree_t *) | @param inode (C++: inode_t) | + | dirtree_segm_moved(self, *args) + | Dirtree: inodes were changed due to a segment movement or a program + | rebasing + | + | dirtree_segm_moved(self, dt) + | @param dt (C++: dirtree_t *) + | | dump_state(self, *args) | dump_state(self) -> qstring | @@ -46342,10 +47931,11 @@ class IDB_Hooks(__builtin__.object) | renamed(self, *args) | The kernel has renamed a byte. See also the \idpcode{rename} event | - | renamed(self, ea, new_name, local_name) + | renamed(self, ea, new_name, local_name, old_name) | @param ea (C++: ea_t) - | @param new_name (C++: const char *) + | @param new_name: can be nullptr (C++: const char *) | @param local_name (C++: bool) + | @param old_name: can be nullptr (C++: const char *) | | renaming_enum(self, *args) | An enum or enum member is to be renamed. @@ -46893,7 +48483,7 @@ class IDP_Hooks(__builtin__.object) | @param to (C++: ea_t) | @param may_define (C++: bool) | @param code_ea (C++: ea_t *) - | @retval: <0 - cancel dref analysis + | @retval: <0 - failed dref analysis, >0 done dref analysis | @retval: 0 - not implemented or continue | | ev_create_flat_group(self, *args) @@ -46913,6 +48503,14 @@ class IDP_Hooks(__builtin__.object) | @retval: 1 - ok | @retval: 0 - not implemented | + | ev_create_merge_handlers(self, *args) + | Create merge handlers, if needed + | + | ev_create_merge_handlers(self, md) -> int + | @param md: This event is generated immediately after opening idbs. + | (C++: merge_data_t *) + | @return: must be 0 + | | ev_create_switch_xrefs(self, *args) | Create xrefs for a custom jump table. | @@ -47137,8 +48735,8 @@ class IDP_Hooks(__builtin__.object) | underscore | | ev_get_abi_info(self, abi_names, abi_opts, comp) -> int - | @param abi_names: - all possible ABis each in form abiname- - | opt1-opt2-... (C++: qstrvec_t *) + | @param abi_names: - all possible ABis each in form + | abiname-opt1-opt2-... (C++: qstrvec_t *) | @param abi_opts: - array of all possible options in form | "opt:description" or opt:hint-line#description (C++: | qstrvec_t *) @@ -47372,6 +48970,19 @@ class IDP_Hooks(__builtin__.object) | @retval: -1 - no | @retval: 0 - not implemented or not instruction | + | ev_is_control_flow_guard(self, *args) + | Detect if an instruction is a "thunk call" to a flow guard function + | (equivalent to call reg/return/nop) + | + | ev_is_control_flow_guard(self, p_reg, insn) -> int + | @param p_reg: indirect register number, may be -1 (C++: int *) + | @param insn: call/jump instruction (C++: const insn_t *) + | @retval: -1 - no thunk detected + | @retval: 1 - indirect call + | @retval: 2 - security check routine call (NOP) + | @retval: 3 - return thunk + | @retval: 0 - not implemented + | | ev_is_far_jump(self, *args) | is indirect far jump or call instruction? meaningful only if the | processor has 'near' and 'far' reference types @@ -47393,14 +49004,7 @@ class IDP_Hooks(__builtin__.object) | @retval: 2 - yes | | ev_is_insn_table_jump(self, *args) - | Determine if instruction is a table jump or call. If 'CF_JUMP' bit - | cannot describe all kinds of table jumps, please define this callback. - | It will be called for insns with 'CF_JUMP' bit set. - | - | ev_is_insn_table_jump(self, insn) -> int - | @param insn: the instruction (C++: const insn_t*) - | @retval: 0 - yes - | @retval: <0 - no + | Reserved. | | ev_is_jump_func(self, *args) | Is the function a trivial "jump" function?. @@ -47463,7 +49067,8 @@ class IDP_Hooks(__builtin__.object) | @param insn: instruction possibly belonging to a switch (C++: const | insn_t *) | @retval: 1 - switch is found, 'si' is filled - | @retval: 0 - no switch found or not implemented + | @retval: -1 - no switch found + | @retval: 0 - not implemented | | ev_last_cb_before_loader(self, *args) | ev_last_cb_before_loader(self) -> int @@ -47681,8 +49286,10 @@ class IDP_Hooks(__builtin__.object) | Floating point -> IEEE conversion | | ev_realcvt(self, m, e, swt) -> int - | @param m: pointer to data (C++: void *) - | @param e: internal IEEE format data (C++: uint16 *) + | @param m: ptr to processor-specific floating point value (C++: void + | *) + | @param e: IDA representation of a floating point value (C++: + | fpvalue_t *) | @param swt: operation (see realcvt() in ieee.h) (C++: uint16) | @retval: 0 - not implemented | @retval: 1 - ok @@ -47793,6 +49400,28 @@ class IDP_Hooks(__builtin__.object) | @retval: 1 - do not delete srranges at the item end | @retval: 0 - srranges can be deleted | + | ev_update_call_stack(self, *args) + | Calculate the call stack trace for the given thread. This callback is + | invoked when the process is suspended and should fill the 'trace' + | object with the information about the current call stack. Note that + | this callback is NOT invoked if the current debugger backend + | implements stack tracing via + | debugger_t::event_t::ev_update_call_stack. The debugger-specific + | algorithm takes priority. Implementing this callback in the processor + | module is useful when multiple debugging platforms follow similar + | patterns, and thus the same processor-specific algorithm can be used + | for different platforms. + | + | ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int + | @param stack: result (C++: call_stack_t *) + | @param tid: thread id (C++: int) + | @param getreg: function to get register values (C++: + | processor_t::regval_getter_t *) + | @param regvalues: register values array (C++: const regval_t *) + | @retval: 1 - ok + | @retval: -1 - failed + | @retval: 0 - unimplemented + | | ev_use_arg_types(self, *args) | Use information about callee arguments. | @@ -47998,11 +49627,12 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | bookmark_changed(self, *args) | Boomarked position changed. | - | bookmark_changed(self, index, pos, desc) + | bookmark_changed(self, index, pos, desc, operation) | @param index (C++: uint32) | @param pos (C++: const lochist_entry_t *) - | @param desc: if desc==NULL, then the bookmark was deleted. (C++: - | const char *) + | @param desc (C++: const char *) + | @param operation: 0-added, 1-updated, 2-deleted if desc==NULL, then + | the bookmark was deleted. (C++: int) | | byte_patched(self, *args) | A byte has been patched. @@ -48141,6 +49771,9 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | compiler_changed(self, *args) | The kernel has changed the compiler information. (\inf{cc} structure; | 'get_abi_name' ) + | + | compiler_changed(self, adjust_inf_fields) + | @param adjust_inf_fields: may change inf fields? (C++: bool) | | deleting_enum(self, *args) | An enum type is to be deleted. @@ -48252,6 +49885,13 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | @param dt (C++: dirtree_t *) | @param inode (C++: inode_t) | + | dirtree_segm_moved(self, *args) + | Dirtree: inodes were changed due to a segment movement or a program + | rebasing + | + | dirtree_segm_moved(self, dt) + | @param dt (C++: dirtree_t *) + | | dump_state(self, *args) | dump_state(self) -> qstring | @@ -48455,10 +50095,11 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | renamed(self, *args) | The kernel has renamed a byte. See also the \idpcode{rename} event | - | renamed(self, ea, new_name, local_name) + | renamed(self, ea, new_name, local_name, old_name) | @param ea (C++: ea_t) - | @param new_name (C++: const char *) + | @param new_name: can be nullptr (C++: const char *) | @param local_name (C++: bool) + | @param old_name: can be nullptr (C++: const char *) | | renaming_enum(self, *args) | An enum or enum member is to be renamed. @@ -49708,6 +51349,14 @@ class processor_t(IDP_Hooks) | @param bitness (C++: int) | @param dataseg_sel: return value is ignored (C++: sel_t) | + | ev_create_merge_handlers(self, *args) + | Create merge handlers, if needed + | + | ev_create_merge_handlers(self, md) -> int + | @param md: This event is generated immediately after opening idbs. + | (C++: merge_data_t *) + | @return: must be 0 + | | ev_decorate_name(self, *args) | Decorate/undecorate a C symbol name. | @@ -49852,8 +51501,8 @@ class processor_t(IDP_Hooks) | underscore | | ev_get_abi_info(self, abi_names, abi_opts, comp) -> int - | @param abi_names: - all possible ABis each in form abiname- - | opt1-opt2-... (C++: qstrvec_t *) + | @param abi_names: - all possible ABis each in form + | abiname-opt1-opt2-... (C++: qstrvec_t *) | @param abi_opts: - array of all possible options in form | "opt:description" or opt:hint-line#description (C++: | qstrvec_t *) @@ -50022,6 +51671,19 @@ class processor_t(IDP_Hooks) | @retval: -1 - no | @retval: 0 - not implemented or not instruction | + | ev_is_control_flow_guard(self, *args) + | Detect if an instruction is a "thunk call" to a flow guard function + | (equivalent to call reg/return/nop) + | + | ev_is_control_flow_guard(self, p_reg, insn) -> int + | @param p_reg: indirect register number, may be -1 (C++: int *) + | @param insn: call/jump instruction (C++: const insn_t *) + | @retval: -1 - no thunk detected + | @retval: 1 - indirect call + | @retval: 2 - security check routine call (NOP) + | @retval: 3 - return thunk + | @retval: 0 - not implemented + | | ev_is_jump_func(self, *args) | Is the function a trivial "jump" function?. | @@ -50085,8 +51747,10 @@ class processor_t(IDP_Hooks) | Floating point -> IEEE conversion | | ev_realcvt(self, m, e, swt) -> int - | @param m: pointer to data (C++: void *) - | @param e: internal IEEE format data (C++: uint16 *) + | @param m: ptr to processor-specific floating point value (C++: void + | *) + | @param e: IDA representation of a floating point value (C++: + | fpvalue_t *) | @param swt: operation (see realcvt() in ieee.h) (C++: uint16) | @retval: 0 - not implemented | @retval: 1 - ok @@ -50129,6 +51793,28 @@ class processor_t(IDP_Hooks) | ev_term(self, *args) | The IDP module is being unloaded. | + | ev_update_call_stack(self, *args) + | Calculate the call stack trace for the given thread. This callback is + | invoked when the process is suspended and should fill the 'trace' + | object with the information about the current call stack. Note that + | this callback is NOT invoked if the current debugger backend + | implements stack tracing via + | debugger_t::event_t::ev_update_call_stack. The debugger-specific + | algorithm takes priority. Implementing this callback in the processor + | module is useful when multiple debugging platforms follow similar + | patterns, and thus the same processor-specific algorithm can be used + | for different platforms. + | + | ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int + | @param stack: result (C++: call_stack_t *) + | @param tid: thread id (C++: int) + | @param getreg: function to get register values (C++: + | processor_t::regval_getter_t *) + | @param regvalues: register values array (C++: const regval_t *) + | @retval: 1 - ok + | @retval: -1 - failed + | @retval: 0 - unimplemented + | | ev_use_arg_types(self, *args) | Use information about callee arguments. | @@ -51073,11 +52759,6 @@ Custom instruction codes defined by processor extension plugins must be greater than or equal to this """ -ida_idp.HKCB_AUTODEL -""" -automatically delete event listener object after uninstalling it -""" - ida_idp.HKCB_GLOBAL """ is global event listener? if true, the listener will survive database @@ -51356,6 +53037,16 @@ ida_idp.PLFM_PPC PowerPC. """ +ida_idp.PLFM_RISCV +""" +RISC-V. +""" + +ida_idp.PLFM_RL78 +""" +Renesas RL78. +""" + ida_idp.PLFM_S390 """ IBM's S390. @@ -51457,6 +53148,11 @@ ida_idp.PLFM_UNSP SunPlus unSP. """ +ida_idp.PLFM_XTENSA +""" +Tensilica Xtensa. +""" + ida_idp.PLFM_Z8 """ Z8. @@ -51635,6 +53331,316 @@ processor_t::use_regarg_type uses this bit in the return value to indicate that the register value has been spoiled """ === ida_idp EPYDOC INJECTIONS END === +Help on function ecleaz in module ida_ieee: + +ecleaz(*args) + ecleaz(x) + @param x (C++: eNI) + +Help on class fpvalue_shorts_array_t in module ida_ieee: + +class fpvalue_shorts_array_t(__builtin__.object) + | Proxy of C++ wrapped_array_t< uint16,FPVAL_NWORDS > class. + | + | Methods defined here: + | + | __getitem__(self, *args) + | __getitem__(self, i) -> unsigned short const & + | i: size_t + | + | __init__(self, *args) + | __init__(self, data) -> fpvalue_shorts_array_t + | data: unsigned short (&)[FPVAL_NWORDS] + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: unsigned short const & + | + | _get_bytes(self, *args) + | _get_bytes(self) -> bytevec_t + | + | _set_bytes(self, *args) + | _set_bytes(self, bts) + | bts: bytevec_t const & + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | _get_bytes(self) -> bytevec_t + | + | data + | fpvalue_shorts_array_t_data_get(self) -> unsigned short (&)[FPVAL_NWORDS] + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_fpvalue_shorts_array_t(self) + +Help on class fpvalue_t in module ida_ieee: + +class fpvalue_t(__builtin__.object) + | Proxy of C++ fpvalue_t class. + | + | Methods defined here: + | + | __add__(self, *args) + | __add__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: fpvalue_t const & + | + | __ge__(self, *args) + | __ge__(self, r) -> bool + | r: fpvalue_t const & + | + | __getitem__(self, i) + | + | __gt__(self, *args) + | __gt__(self, r) -> bool + | r: fpvalue_t const & + | + | __init__(self, *args) + | __init__(self) -> fpvalue_t + | in: bytevec12_t const & + | + | __iter__(self) + | + | __le__(self, *args) + | __le__(self, r) -> bool + | r: fpvalue_t const & + | + | __lt__(self, *args) + | __lt__(self, r) -> bool + | r: fpvalue_t const & + | + | __mul__(self, *args) + | __mul__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: fpvalue_t const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, i, v) + | + | __str__(self, *args) + | __str__(self) -> qstring + | + | __sub__(self, *args) + | __sub__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __truediv__(self, *args) + | __truediv__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | _get_10bytes(self, *args) + | _get_10bytes(self) + | + | _get_bytes(self, *args) + | _get_bytes(self) + | + | _get_float(self, *args) + | _get_float(self) -> double + | + | _get_shorts(self, *args) + | _get_shorts(self) -> fpvalue_shorts_array_t + | + | _set_10bytes(self, *args) + | _set_10bytes(self, _in) + | in: bytevec10_t const & + | + | _set_bytes(self, *args) + | _set_bytes(self, _in) + | in: bytevec12_t const & + | + | _set_float(self, *args) + | _set_float(self, v) + | v: double + | + | assign(self, *args) + | assign(self, r) + | r: fpvalue_t const & + | + | clear(self, *args) + | clear(self) + | + | compare(self, *args) + | compare(self, r) -> int + | r: fpvalue_t const & + | + | eabs(self, *args) + | Calculate absolute value. + | + | fadd(self, *args) + | Arithmetic operations. + | + | fadd(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | fdiv(self, *args) + | fdiv(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | fmul(self, *args) + | fmul(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | from_10bytes(self, *args) + | Conversions for 10-byte floating point values. + | + | from_10bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: const void *) + | + | from_12bytes(self, *args) + | Conversions for 12-byte floating point values. + | + | from_12bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: const void *) + | + | from_int64(self, *args) + | from_int64(self, x) + | @param x (C++: int64) + | + | from_str(self, *args) + | Convert string to IEEE. + | + | from_str(self, p) -> fpvalue_error_t + | p: char const * + | + | from_sval(self, *args) + | Convert integer to IEEE. + | + | from_sval(self, x) + | @param x (C++: sval_t) + | + | from_uint64(self, *args) + | from_uint64(self, x) + | @param x (C++: uint64) + | + | fsub(self, *args) + | fsub(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | get_kind(self, *args) + | Get value kind. + | + | is_negative(self, *args) + | Is negative value? + | + | mul_pow2(self, *args) + | Multiply by a power of 2. + | + | mul_pow2(self, power_of_2) -> fpvalue_error_t + | @param power_of_2 (C++: int32) + | + | negate(self, *args) + | Negate. + | + | to_10bytes(self, *args) + | to_10bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: void *) + | + | to_12bytes(self, *args) + | to_12bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: void *) + | + | to_int64(self, *args) + | to_int64(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | to_str(self, *args) + | Convert IEEE to string. + | + | to_str(self, mode) + | @param mode: broken down into: low byte: number of digits after '.' + | second byte: FPNUM_LENGTH third byte: FPNUM_DIGITS + | (C++: uint) + | + | to_sval(self, *args) + | Convert IEEE to integer (+-0.5 if round) + | + | to_sval(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | to_uint64(self, *args) + | to_uint64(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | _10bytes + | _get_10bytes(self) + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | _get_bytes(self) + | + | float + | _get_float(self) -> double + | + | int64 + | + | shorts + | _get_shorts(self) -> fpvalue_shorts_array_t + | + | sval + | + | thisown + | The membership flag + | + | uint64 + | + | w + | fpvalue_t_w_get(self) -> uint16 [6] + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_fpvalue_t(self) + +=== ida_ieee EPYDOC INJECTIONS === +ida_ieee.E_SPECIAL_EXP +""" +Exponent in 'fpvalue_t' for NaN and Inf. +""" + +ida_ieee.IEEE_EXONE +""" +The exponent of 1.0. +""" +=== ida_ieee EPYDOC INJECTIONS END === Help on class Choose in module ida_kernwin: class Choose(__builtin__.object) @@ -51782,6 +53788,8 @@ class Choose(__builtin__.object) | | CH_FORCE_DEFAULT = 128 | + | CH_HAS_DIFF = 268435456 + | | CH_HAS_DIRTREE = 33554432 | | CH_MODAL = 1 @@ -51810,6 +53818,8 @@ class Choose(__builtin__.object) | | CH_QFTYP_WHOLE_WORDS = 16384 | + | CH_RENAME_IS_EDIT = 262144 + | | CH_RESTORE = 131072 | | EMPTY_CHOOSER = -2 @@ -52580,6 +54590,8 @@ class PluginForm(__builtin__.object) | | WCLS_CLOSE_LATER = 8 | + | WCLS_DELETE_LATER = 8 + | | WCLS_DONT_SAVE_SIZE = 4 | | WCLS_NO_CONTEXT = 2 @@ -52604,6 +54616,8 @@ class PluginForm(__builtin__.object) | | WOPN_DP_RIGHT = 262144 | + | WOPN_DP_SZHINT = 16777216 + | | WOPN_DP_TAB = 4194304 | | WOPN_DP_TAB_BEFORE = 6291456 @@ -52686,11 +54700,22 @@ class UI_Hooks(__builtin__.object) | debugger has been selected false: debugger menu will be | removed (user switched to "No debugger") (C++: bool) | + | desktop_applied(self, *args) + | a desktop has been applied + | + | desktop_applied(self, name, from_idb, type) + | @param name: the desktop name (C++: const char *) + | @param from_idb: the desktop was stored in the IDB (false if it comes + | from the registry) (C++: bool) + | @param type: the desktop type (1-disassembly, 2-debugger, 3-merge) + | (C++: int) + | | destroying_plugmod(self, *args) | The plugin object is about to be destroyed | - | destroying_plugmod(self, plugmod) + | destroying_plugmod(self, plugmod, entry) | @param plugmod (C++: const plugmod_t *) + | @param entry (C++: const plugin_t *) | | destroying_procmod(self, *args) | The processor module is about to be destroyed @@ -52720,18 +54745,23 @@ class UI_Hooks(__builtin__.object) | @param attrs (C++: chooser_item_attrs_t *) | | get_custom_viewer_hint(self, *args) - | ui wants to display a hint for a viewer (idaview or custom). If - | the REG_HINTS_MARKER sequence is found in the returned hints string, - | it will be replaced with the contents of the "regular" hints. If the - | SRCDBG_HINTS_MARKER sequence is found in the returned hints string, it - | will be replaced with the contents of the source-level debugger- - | generated hints. The following keywords might appear at the beginning - | of the returned hints: HIGHLIGHT textwhere text will be highlighted - | CAPTION captioncaption for the hint widget + | ui wants to display a hint for a viewer (idaview or custom). Every + | subscriber is supposed to append the hint lines to HINT and increment + | IMPORTANT_LINES accordingly. Completely overwriting the existing lines + | in HINT is possible but not recommended. If the REG_HINTS_MARKER + | sequence is found in the returned hints string, it will be replaced + | with the contents of the "regular" hints. If the SRCDBG_HINTS_MARKER + | sequence is found in the returned hints string, it will be replaced + | with the contents of the source-level debugger-generated hints. The + | following keywords might appear at the beginning of the returned + | hints: HIGHLIGHT textwhere text will be highlighted CAPTION + | captioncaption for the hint widget | | get_custom_viewer_hint(self, viewer, place) -> PyObject * | @param viewer: viewer (C++: TWidget*) | @param place: current position in the viewer (C++: place_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | get_ea_hint(self, *args) | ui wants to display a simple hint for an address. Use this event @@ -52828,7 +54858,12 @@ class UI_Hooks(__builtin__.object) | | saved(self, *args) | The kernel has saved the database. This callback just informs the - | interface. + | interface. Note that at the time this notification is sent, the + | internal paths are not updated yet, and calling + | get_path(PATH_TYPE_IDB) will return the previous path. + | + | saved(self, path) + | @param path: the database path (C++: const char *) | | saving(self, *args) | The kernel is flushing its buffers to the disk. The user interface @@ -53097,6 +55132,81 @@ _kludge_force_declare_dirtree_t(*args) _kludge_force_declare_dirtree_t(arg1) arg1: dirtree_t const * +Help on class action_ctx_base_cur_sel_t in module ida_kernwin: + +class action_ctx_base_cur_sel_t(__builtin__.object) + | Proxy of C++ action_ctx_base_cur_sel_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> action_ctx_base_cur_sel_t + | + | __repr__ = _swig_repr(self) + | + | reset(self, *args) + | reset(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | _from + | action_ctx_base_cur_sel_t__from_get(self) -> twinpos_t + | + | thisown + | The membership flag + | + | to + | action_ctx_base_cur_sel_t_to_get(self) -> twinpos_t + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = action_ctx_base_source_t + | + | __repr__ = _swig_repr(self) + | + | reset(self, *args) + | reset(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | chooser + | action_ctx_base_source_t_chooser_get(self) -> chooser_base_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_action_ctx_base_source_t(self) + Help on class action_ctx_base_t in module ida_kernwin: class action_ctx_base_t(__builtin__.object) @@ -53166,6 +55276,9 @@ class action_ctx_base_t(__builtin__.object) | cur_seg | action_ctx_base_t_cur_seg_get(self) -> segment_t * | + | cur_sel + | action_ctx_base_t_cur_sel_get(self) -> action_ctx_base_cur_sel_t + | | cur_strmem | action_ctx_base_t_cur_strmem_get(self) -> member_t * | @@ -53196,6 +55309,9 @@ class action_ctx_base_t(__builtin__.object) | regname | action_ctx_base_t_regname_get(self) -> char const * | + | source + | action_ctx_base_t_source_get(self) -> action_ctx_base_source_t + | | thisown | The membership flag | @@ -53779,6 +55895,167 @@ choose_xref(*args) @param to: referenced address (C++: ea_t) @return: ea of selected xref, BADADDR if none selected +Help on class chooser_base_t in module ida_kernwin: + +class chooser_base_t(__builtin__.object) + | Proxy of C++ chooser_base_t class. + | + | Methods defined here: + | + | __init__(self, *args, **kwargs) + | + | __repr__ = _swig_repr(self) + | + | ask_item_attrs(self, *args) + | should chooser generate ui_get_chooser_item_attrs events? + | + | can_del(self, *args) + | can_del(self) -> bool + | + | can_edit(self, *args) + | can_edit(self) -> bool + | + | can_filter(self, *args) + | can_filter(self) -> bool + | + | can_ins(self, *args) + | is an operation allowed? + | + | can_refresh(self, *args) + | can_refresh(self) -> bool + | + | can_sort(self, *args) + | can_sort(self) -> bool + | + | get_builtin_number(self, *args) + | get number of the built-in chooser + | + | get_count(self, *args) + | get the number of elements in the chooser + | + | get_ea(self, *args) + | get an address of an element. Used to set breakpoint in any chooser + | which implements this callback. + | + | get_ea(self, arg2) -> ea_t + | arg2: size_t + | @return: the effective address, BADADDR if the element has no address + | + | get_quick_filter_initial_mode(self, *args) + | get_quick_filter_initial_mode(self) -> int + | + | get_row(self, *args) + | get a description of an element. + | + | get_row(self, n) -> PyObject * + | @param n: element number (0.. get_count() -1) (C++: size_t) + | + | has_diff_capability(self, *args) + | has_diff_capability(self) -> bool + | + | has_dirtree(self, *args) + | has_dirtree(self) -> bool + | + | is_force_default(self, *args) + | should selection of the already opened non-modal chooser be changed? + | + | is_modal(self, *args) + | is choose modal? + | + | is_multi(self, *args) + | is multi-selection allowed? + | + | is_noidb(self, *args) + | can use the chooser before opening the database? + | + | is_quick_filter_visible_initially(self, *args) + | is_quick_filter_visible_initially(self) -> bool + | + | is_same(self, *args) + | do the current and the given objects hold the same data? + | + | is_same(self, other) -> bool + | @param other (C++: const chooser_base_t *) + | + | is_status_bar_hidden(self, *args) + | is_status_bar_hidden(self) -> bool + | + | popup_allowed(self, *args) + | is a popup action allowed? + | + | popup_allowed(self, i) -> bool + | @param i (C++: int) + | + | should_rename_trigger_edit(self, *args) + | should_rename_trigger_edit(self) -> bool + | + | should_restore_geometry(self, *args) + | should_restore_geometry(self) -> bool + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | columns + | chooser_base_t_columns_get(self) -> int + | + | deflt_col + | chooser_base_t_deflt_col_get(self) -> int + | + | header + | chooser_base_t_header_get(self) -> char const *const * + | + | height + | chooser_base_t_height_get(self) -> int + | + | icon + | chooser_base_t_icon_get(self) -> int + | + | popup_names + | chooser_base_t_popup_names_get(self) -> qstring [chooser_base_t::NSTDPOPUPS] + | + | thisown + | The membership flag + | + | title + | chooser_base_t_title_get(self) -> char const * + | + | width + | chooser_base_t_width_get(self) -> int + | + | widths + | chooser_base_t_widths_get(self) -> int const * + | + | x0 + | chooser_base_t_x0_get(self) -> int + | + | x1 + | chooser_base_t_x1_get(self) -> int + | + | y0 + | chooser_base_t_y0_get(self) -> int + | + | y1 + | chooser_base_t_y1_get(self) -> int + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | NSTDPOPUPS = 4 + | + | POPUP_DEL = 1 + | + | POPUP_EDIT = 2 + | + | POPUP_INS = 0 + | + | POPUP_REFRESH = 3 + Help on class chooser_item_attrs_t in module ida_kernwin: class chooser_item_attrs_t(__builtin__.object) @@ -54022,12 +56299,8 @@ del_hotkey(*args) Help on function del_idc_hotkey in module ida_kernwin: del_idc_hotkey(*args) - Delete IDC function hotkey ( 'ui_del_idckey' ). - del_idc_hotkey(hotkey) -> bool - @param hotkey: hotkey name (C++: const char *) - @retval: 1 - ok - @retval: 0 - failed + @param hotkey (C++: const char *) Help on function delete_menu in module ida_kernwin: @@ -54816,7 +57089,10 @@ Help on function get_chooser_obj in module ida_kernwin: get_chooser_obj(*args) Get the underlying object of the specified chooser ( - 'ui_get_chooser_obj' ).This is object is chooser-specific. + 'ui_get_chooser_obj' ).This attemps to find the choser by its title + and, if found, returns the result of calling its + 'chooser_base_t::get_chooser_obj()' method.This is object is chooser- + specific. get_chooser_obj(chooser_caption) -> void * @param chooser_caption (C++: const char *) @@ -55356,6 +57632,14 @@ is_idaq(*args) is_idaq() -> bool Returns True or False depending if IDAPython is hosted by IDAQ +Help on function is_idaview in module ida_kernwin: + +is_idaview(*args) + Is the given custom view an idaview? ( 'ui_is_idaview' ) + + is_idaview(v) -> bool + @param v (C++: TWidget *) + Help on function is_msg_inited in module ida_kernwin: is_msg_inited(*args) @@ -55423,6 +57707,14 @@ jumpto(*args) y: int @return: success +Help on function l_compare2 in module ida_kernwin: + +l_compare2(*args) + l_compare2(t1, t2, ud) -> int + @param t1 (C++: const place_t *) + @param t2 (C++: const place_t *) + @param ud (C++: void *) + Help on class line_rendering_output_entries_refs_t in module ida_kernwin: class line_rendering_output_entries_refs_t(__builtin__.object) @@ -55654,6 +57946,92 @@ class line_rendering_output_entry_t(__builtin__.object) | __swig_destroy__ = linearray_t + | _ud: void * + | + | __repr__ = _swig_repr(self) + | + | beginning(self, *args) + | Are we at the beginning? + | + | down(self, *args) + | Get a line from down direction. place is ok BEFORE + | + | ending(self, *args) + | ending(self) -> bool + | + | get_bg_color(self, *args) + | Get current background color. (the same behavior as with 'get_place()' + | : good before 'down()' and after 'up()' ) + | + | get_dlnnum(self, *args) + | Get default line number. (the same behavior as with 'get_place()' : + | good before 'down()' and after 'up()' ) + | + | get_linecnt(self, *args) + | Get number of lines for the current place. (the same behavior as with + | 'get_place()' : good before 'down()' and after 'up()' ) + | + | get_pfx_color(self, *args) + | Get current prefix color. (the same behavior as with 'get_place()' : + | good before 'down()' and after 'up()' ) + | + | get_place(self, *args) + | Get the current place. If called before 'down()' , then returns place + | of line which will be returned by 'down()' . If called after 'up()' , + | then returns place if line returned by 'up()' . + | + | set_place(self, *args) + | Position the array. This function must be called before calling any + | other member functions. 'linearray_t' doesn't own 'place_t' + | structures. The caller must take care of 'place_t' objects. + | + | set_place(self, new_at) -> int + | @param new_at: new position of the array (C++: const place_t *) + | @return: the delta of lines that the linearray_t had to adjust the + | place by. For example, if the place_t has a lnnum of 5, + | but it turns out, upon generating lines, that the number of + | lines for that particular place is only 2, then 3 will be + | returned. + | + | set_userdata(self, *args) + | Change the user data. + | + | set_userdata(self, userd) + | @param userd (C++: void *) + | + | up(self, *args) + | Get a line from up direction. place is ok AFTER + | + | userdata(self, *args) + | Get pointer to user data. + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_linearray_t(self) + Help on class lines_rendering_input_t in module ida_kernwin: class lines_rendering_input_t(__builtin__.object) @@ -55795,7 +58173,7 @@ msg(*args) Help on function msg_clear in module ida_kernwin: msg_clear(*args) - Clear the "Output window". + Clear the "Output" window. Help on function msg_get_lines in module ida_kernwin: @@ -55810,7 +58188,7 @@ msg_get_lines(*args) Help on function msg_save in module ida_kernwin: msg_save(*args) - Save the "Output window" contents into a file + Save the "Output" window contents into a file msg_save(path) -> bool @param path: The path of the file to save the contents into. An empty @@ -55827,6 +58205,15 @@ nomem(*args) nomem(format) @param format (C++: const char *) +Help on function open_bookmarks_window in module ida_kernwin: + +open_bookmarks_window(*args) + Open the bookmarks window ( 'ui_open_builtin' ). + + open_bookmarks_window(w) -> TWidget * + @param w (C++: TWidget *) + @return: pointer to resulting window + Help on function open_bpts_window in module ida_kernwin: open_bpts_window(*args) @@ -55892,7 +58279,7 @@ open_frame_window(*args) Help on function open_funcs_window in module ida_kernwin: open_funcs_window(*args) - Open the functions window ( 'ui_open_builtin' ). + Open the 'Functions' window ( 'ui_open_builtin' ). open_funcs_window(ea) -> TWidget * @param ea: index of entry to select by default (C++: ea_t) @@ -55999,7 +58386,7 @@ open_stack_window(*args) Help on function open_strings_window in module ida_kernwin: open_strings_window(*args) - Open the strings window ( 'ui_open_builtin' ). + Open the 'Strings' window ( 'ui_open_builtin' ). open_strings_window(ea, selstart=BADADDR, selend=BADADDR) -> TWidget * @param ea: index of entry to select by default (C++: ea_t) @@ -56032,7 +58419,7 @@ open_tils_window(*args) Help on function open_trace_window in module ida_kernwin: open_trace_window(*args) - Open the trace window ( 'ui_open_builtin' ). + Open the tracing window ( 'ui_open_builtin' ). Help on function open_url in module ida_kernwin: @@ -56308,7 +58695,7 @@ plgform_new(*args) Help on function plgform_show in module ida_kernwin: plgform_show(*args) - plgform_show(py_link, py_obj, caption, options=WOPN_DP_TAB|WOPN_RESTORE) -> bool + plgform_show(py_link, py_obj, caption, options=(0x0040 << 16)|0x00000004u) -> bool py_link: PyObject * py_obj: PyObject * caption: char const * @@ -56323,6 +58710,13 @@ process_ui_action(*args) @param name: action name @return: Boolean +Help on function py_chooser_base_t_get_row in module ida_kernwin: + +py_chooser_base_t_get_row(*args) + py_chooser_base_t_get_row(chobj, n) -> PyObject * + chobj: chooser_base_t const * + n: size_t + Help on function py_get_ask_form in module ida_kernwin: py_get_ask_form(*args) @@ -56607,6 +59001,14 @@ Help on function refresh_choosers in module ida_kernwin: refresh_choosers(*args) refresh_choosers() +Help on function refresh_custom_viewer in module ida_kernwin: + +refresh_custom_viewer(*args) + Refresh custom ida viewer ( 'ui_refresh_custom_viewer' ) + + refresh_custom_viewer(custom_viewer) + @param custom_viewer (C++: TWidget *) + Help on function refresh_idaview in module ida_kernwin: refresh_idaview(*args) @@ -59037,6 +61439,11 @@ ida_kernwin.ACF_HAS_SELECTION there is currently a valid selection """ +ida_kernwin.ACF_HAS_SOURCE +""" +'source' field is present +""" + ida_kernwin.ACF_XTRN_EA """ cur_ea is in 'externs' segment @@ -59134,6 +61541,11 @@ ida_kernwin.BWN_ADDRWATCH the 'Watch List' window """ +ida_kernwin.BWN_BOOKMARKS +""" +a persistent 'Bookmarks' widget +""" + ida_kernwin.BWN_BPTS """ breakpoints @@ -59405,7 +61817,7 @@ type libraries ida_kernwin.BWN_TRACE """ -trace view +tracing view """ ida_kernwin.BWN_UNDOHIST @@ -59428,6 +61840,21 @@ ida_kernwin.BWN_XREFS xrefs """ +ida_kernwin.CDVF_LINEICONS +""" +icons can be drawn over the line control +""" + +ida_kernwin.CDVF_NOLINES +""" +don't show line numbers +""" + +ida_kernwin.CDVF_STATUSBAR +""" +keep the status bar in the custom viewer +""" + ida_kernwin.CHCOL_DEC """ decimal number @@ -59507,42 +61934,6 @@ ida_kernwin.CHITEM_UNDER underline the item """ -ida_kernwin.CHOOSER_MENU_EDIT -""" -Values of the 'menu_index' parameter. - -Obsolete. Please don't use -""" - -ida_kernwin.CHOOSER_MENU_JUMP -""" -Obsolete. Please don't use. -""" - -ida_kernwin.CHOOSER_MENU_SEARCH -""" -Obsolete. Please don't use. -""" - -ida_kernwin.CHOOSER_MULTI_SELECTION -""" -enable for multiple selections. A callback of type -'chooser_multi_cb_t' will be called for all selected items. -""" - -ida_kernwin.CHOOSER_NO_SELECTION -""" -Flags. - -enable even if there's no selected item. 'n' will be NO_SELECTION for -a callback. -""" - -ida_kernwin.CHOOSER_POPUP_MENU -""" -Add command to the popup menu. -""" - ida_kernwin.CH_ATTRS """ generate ui_get_chooser_item_attrs (gui only) @@ -59579,6 +61970,11 @@ if a non-modal chooser was already open, change selection to the default one """ +ida_kernwin.CH_HAS_DIFF +""" +The chooser can be used in a diffing/merging workflow. +""" + ida_kernwin.CH_HAS_DIRTREE """ The chooser can provide a 'dirtree_t' , meaning a tree-like structure @@ -59619,6 +62015,16 @@ ida_kernwin.CH_NOIDB use the chooser before opening the database """ +ida_kernwin.CH_NO_FILTER +""" +The chooser will not have filtering abilities. +""" + +ida_kernwin.CH_NO_SORT +""" +The chooser will not have sorting abilities. +""" + ida_kernwin.CH_NO_STATUS_BAR """ don't show a status bar @@ -59655,6 +62061,12 @@ ida_kernwin.CH_QFTYP_WHOLE_WORDS whole words quick filter type """ +ida_kernwin.CH_RENAME_IS_EDIT +""" +triggering a 'edit/rename' (i.e., F2 shortcut) on a cell, should call +the edit() callback for the corresponding row. +""" + ida_kernwin.CH_RESTORE """ restore floating position if present (equivalent of WOPN_RESTORE) (GUI @@ -59787,6 +62199,27 @@ ida_kernwin.CREATETB_ADV toolbar is for 'advanced mode' only """ +ida_kernwin.CVNF_ACT +""" +activate (i.e., switch to) the viewer. Activation is performed before +the new 'lochist_entry_t' instance is actually copied to the viewer's +'lochist_t' (otherwise, if the viewer was invisible its +on_location_changed() handler wouldn't be called.) +""" + +ida_kernwin.CVNF_JUMP +""" +'lochist_t' before going to the new location + +push the current position in this viewer's +""" + +ida_kernwin.CVNF_LAZY +""" +try and move the cursor to a line displaying the 'place_t' if +possible. This might disregard the Y position in case of success +""" + ida_kernwin.DP_BEFORE """ used with 'DP_INSIDE' . @@ -59819,6 +62252,12 @@ ida_kernwin.DP_RIGHT Dock src_form to the right of dest_form. """ +ida_kernwin.DP_SZHINT +""" +When floating or in a splitter (i.e., not tabbed), use the widget's +size hint to determine the best geometry (Qt only) +""" + ida_kernwin.DP_TAB """ Place src_form into a tab next to dest_form, if dest_form is in a tab @@ -59892,6 +62331,26 @@ ida_kernwin.HIST_TYPE type declarations """ +ida_kernwin.IDCHK_ARG +""" +bad argument(s) +""" + +ida_kernwin.IDCHK_KEY +""" +bad hotkey name +""" + +ida_kernwin.IDCHK_MAX +""" +too many IDC hotkeys +""" + +ida_kernwin.IDCHK_OK +""" +ok +""" + ida_kernwin.IWID_ADDRWATCH """ address watches (47) @@ -59902,6 +62361,11 @@ ida_kernwin.IWID_ALL mask """ +ida_kernwin.IWID_BOOKMARKS +""" +bookmarks list (59) +""" + ida_kernwin.IWID_BPTS """ breakpoints (13) @@ -60155,7 +62619,7 @@ type libraries (9) ida_kernwin.IWID_TRACE """ -trace view (16) +tracing view (16) """ ida_kernwin.IWID_UNDOHIST @@ -60229,6 +62693,17 @@ the corresponding makeplace() class implementation should return new instances. """ +ida_kernwin.RENADDR_HR +""" +dialog for "Pseudocode" additional flags: 0x01 Library function 0x02 +Mark as decompiled +""" + +ida_kernwin.RENADDR_IDA +""" +dialog for "IDA View" +""" + ida_kernwin.SETMENU_APP """ add menu item after the specified path @@ -60244,6 +62719,16 @@ ida_kernwin.SETMENU_INS add menu item before the specified path (default) """ +ida_kernwin.SVF_COPY_LINES +""" +keep a local copy of '*lines' +""" + +ida_kernwin.SVF_LINES_BYPTR +""" +remember the 'lines' ptr. do not make a copy of '*lines' +""" + ida_kernwin.UIJMP_ACTIVATE """ activate the new window @@ -60278,6 +62763,97 @@ Ctrl is pressedstate & 8 => Mouse left button is pressedstate & 16 => Mouse right button is pressedstate & 32 => Mouse middle button is pressedstate & 128 => Meta is pressed (OSX only) """ + +ida_kernwin.WCLS_DELETE_LATER +""" +assign the deletion of the widget to the UI loop ///< +""" + +ida_kernwin.WCLS_DONT_SAVE_SIZE +""" +don't save size of the window +""" + +ida_kernwin.WCLS_NO_CONTEXT +""" +don't change the current context (useful for toolbars) +""" + +ida_kernwin.WCLS_SAVE +""" +save state in desktop config +""" + +ida_kernwin.WOPN_CLOSED_BY_ESC +""" +override idagui.cfg:CLOSED_BY_ESC: esc will close +""" + +ida_kernwin.WOPN_DP_BEFORE +""" +place widget before dst_form in the tab bar instead of after used with +'WOPN_DP_INSIDE' and 'WOPN_DP_TAB' +""" + +ida_kernwin.WOPN_DP_BOTTOM +""" +Dock widget below dest_ctrl. +""" + +ida_kernwin.WOPN_DP_FLOATING +""" +Make widget floating. +""" + +ida_kernwin.WOPN_DP_INSIDE +""" +Create a new tab bar with both widget and dest_ctrl. +""" + +ida_kernwin.WOPN_DP_LEFT +""" +Dock widget to the left of dest_ctrl. +""" + +ida_kernwin.WOPN_DP_RIGHT +""" +Dock widget to the right of dest_ctrl. +""" + +ida_kernwin.WOPN_DP_SZHINT +""" +when floating or in a splitter (i.e., not tabbed), use the widget's +size hint to determine the best geometry (Qt only) +""" + +ida_kernwin.WOPN_DP_TAB +""" +Place widget into a tab next to dest_ctrl, if dest_ctrl is in a tab +bar (otherwise the same as 'WOPN_DP_INSIDE' ) +""" + +ida_kernwin.WOPN_DP_TOP +""" +Dock widget above dest_ctrl. +""" + +ida_kernwin.WOPN_NOT_CLOSED_BY_ESC +""" +override idagui.cfg:CLOSED_BY_ESC: esc will not close +""" + +ida_kernwin.WOPN_PERSIST +""" +widget will remain available when starting or stopping debugger +sessions +""" + +ida_kernwin.WOPN_RESTORE +""" +if the widget was the only widget in a floating area the last time it +was closed, it will be restored as floating, with the same +position+size as before +""" === ida_kernwin EPYDOC INJECTIONS END === Help on function COLSTR in module ida_lines: @@ -60945,7 +63521,9 @@ Help on function file2base in module ida_loader: file2base(*args) Load portion of file into the database. This function will include - (ea1..ea2) into the addressing space of the program (make it enabled) + (ea1..ea2) into the addressing space of the program (make it + enabled).The storage type of the specified range will be changed to + STT_VA. file2base(li, pos, ea1, ea2, patchable) -> int @param li: pointer of input source (C++: linput_t *) @@ -63202,6 +65780,12 @@ Help on function get_server_connection in module ida_lumina: get_server_connection(*args) get_server_connection() -> lumina_client_t +Help on function get_server_connection2 in module ida_lumina: + +get_server_connection2(*args) + get_server_connection2(feature) -> lumina_client_t + @param feature (C++: lumina_feature_t) + Help on function has_backup_metadata in module ida_lumina: has_backup_metadata(*args) @@ -65425,6 +68009,11 @@ class bookmarks_t(__builtin__.object) | index: uint32 | ud: void * | + | get_dirtree_id(*args) + | get_dirtree_id(e, ud) -> dirtree_id_t + | e: lochist_entry_t const & + | ud: void * + | | mark(*args) | mark(e, index, title, desc, ud) -> uint32 | e: lochist_entry_t const & @@ -65482,6 +68071,13 @@ bookmarks_t_get_desc(*args) index: uint32 ud: void * +Help on function bookmarks_t_get_dirtree_id in module ida_moves: + +bookmarks_t_get_dirtree_id(*args) + bookmarks_t_get_dirtree_id(e, ud) -> dirtree_id_t + e: lochist_entry_t const & + ud: void * + Help on function bookmarks_t_mark in module ida_moves: bookmarks_t_mark(*args) @@ -65772,9 +68368,6 @@ class renderer_info_t(__builtin__.object) | | __repr__ = _swig_repr(self) | - | clear(self, *args) - | clear(self) - | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -66263,7 +68856,7 @@ Help on function clr_abits in module ida_nalt: clr_abits(*args) clr_abits(ea, bits) @param ea (C++: ea_t) - @param bits (C++: uint32) + @param bits (C++: aflags_t) Help on function clr_align_flow in module ida_nalt: @@ -66666,7 +69259,7 @@ find_custom_refinfo(*args) Help on function get_abi_name in module ida_nalt: -get_abi_name(*args) +get_abi_name() Help on function get_absbase in module ida_nalt: @@ -66677,7 +69270,7 @@ get_absbase(*args) Help on function get_aflags in module ida_nalt: get_aflags(*args) - get_aflags(ea) -> uint32 + get_aflags(ea) -> aflags_t @param ea (C++: ea_t) Help on function get_alignment in module ida_nalt: @@ -66729,6 +69322,11 @@ get_default_encoding_idx(*args) encoding is set - byte values are displayed without conversion. (C++: int) +Help on function get_elapsed_secs in module ida_nalt: + +get_elapsed_secs(*args) + Get seconds database stayed open. + Help on function get_encoding_bpu in module ida_nalt: get_encoding_bpu(*args) @@ -66758,6 +69356,24 @@ Help on function get_gotea in module ida_nalt: get_gotea(*args) get_gotea() -> ea_t +Help on function get_ida_notepad_text in module ida_nalt: + +get_ida_notepad_text(*args) + Get notead text. + + get_ida_notepad_text(text) -> ssize_t + @param text (C++: qstring *) + +Help on function get_idb_ctime in module ida_nalt: + +get_idb_ctime(*args) + Get database creation timestamp. + +Help on function get_idb_nopens in module ida_nalt: + +get_idb_nopens(*args) + Get number of times the database is opened. + Help on function get_ids_modnode in module ida_nalt: get_ids_modnode(*args) @@ -66786,6 +69402,15 @@ get_ind_purged(*args) get_ind_purged(ea) -> ea_t @param ea (C++: ea_t) +Help on function get_initial_ida_version in module ida_nalt: + +get_initial_ida_version(*args) + Get version of ida which created the database (string format like + "7.5") + + get_initial_ida_version(ver) -> ssize_t + @param ver (C++: qstring *) + Help on function get_input_file_path in module ida_nalt: get_input_file_path(*args) @@ -66797,6 +69422,11 @@ get_item_color(*args) get_item_color(ea) -> bgcolor_t @param ea (C++: ea_t) +Help on function get_loader_format_name in module ida_nalt: + +get_loader_format_name(*args) + Get file format name for loader modules. + Help on function get_op_tinfo in module ida_nalt: get_op_tinfo(*args) @@ -66839,6 +69469,22 @@ get_source_linnum(*args) get_source_linnum(ea) -> uval_t @param ea (C++: ea_t) +Help on function get_srcdbg_paths in module ida_nalt: + +get_srcdbg_paths(*args) + Get source debug paths. + + get_srcdbg_paths(paths) -> ssize_t + @param paths (C++: qstring *) + +Help on function get_srcdbg_undesired_paths in module ida_nalt: + +get_srcdbg_undesired_paths(*args) + Get user-closed source files. + + get_srcdbg_undesired_paths(paths) -> ssize_t + @param paths (C++: qstring *) + Help on function get_str_encoding_idx in module ida_nalt: get_str_encoding_idx(*args) @@ -66877,6 +69523,12 @@ get_str_type_prefix_length(*args) get_str_type_prefix_length(strtype) -> size_t @param strtype (C++: int32) +Help on function get_strid in module ida_nalt: + +get_strid(*args) + get_strid(ea) -> tid_t + @param ea (C++: ea_t) + Help on function get_strtype_bpu in module ida_nalt: get_strtype_bpu(*args) @@ -66906,6 +69558,36 @@ getnode(*args) getnode(ea) -> netnode @param ea (C++: ea_t) +Help on function has_aflag_linnum in module ida_nalt: + +has_aflag_linnum(*args) + has_aflag_linnum(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_lname in module ida_nalt: + +has_aflag_lname(*args) + has_aflag_lname(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti in module ida_nalt: + +has_aflag_ti(*args) + has_aflag_ti(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti0 in module ida_nalt: + +has_aflag_ti0(*args) + has_aflag_ti0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti1 in module ida_nalt: + +has_aflag_ti1(*args) + has_aflag_ti1(flags) -> bool + @param flags (C++: aflags_t) + Help on function has_lname in module ida_nalt: has_lname(*args) @@ -66966,6 +69648,180 @@ is__invsign1(*args) is__invsign1(ea) -> bool @param ea (C++: ea_t) +Help on function is_aflag__bnot0 in module ida_nalt: + +is_aflag__bnot0(*args) + is_aflag__bnot0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__bnot1 in module ida_nalt: + +is_aflag__bnot1(*args) + is_aflag__bnot1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__invsign0 in module ida_nalt: + +is_aflag__invsign0(*args) + is_aflag__invsign0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__invsign1 in module ida_nalt: + +is_aflag__invsign1(*args) + is_aflag__invsign1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_align_flow in module ida_nalt: + +is_aflag_align_flow(*args) + is_aflag_align_flow(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_colored_item in module ida_nalt: + +is_aflag_colored_item(*args) + is_aflag_colored_item(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_data_guessed_by_hexrays in module ida_nalt: + +is_aflag_data_guessed_by_hexrays(*args) + is_aflag_data_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_fixed_spd in module ida_nalt: + +is_aflag_fixed_spd(*args) + is_aflag_fixed_spd(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_func_guessed_by_hexrays in module ida_nalt: + +is_aflag_func_guessed_by_hexrays(*args) + is_aflag_func_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_hidden_border in module ida_nalt: + +is_aflag_hidden_border(*args) + is_aflag_hidden_border(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_hidden_item in module ida_nalt: + +is_aflag_hidden_item(*args) + is_aflag_hidden_item(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_libitem in module ida_nalt: + +is_aflag_libitem(*args) + is_aflag_libitem(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_lzero0 in module ida_nalt: + +is_aflag_lzero0(*args) + is_aflag_lzero0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_lzero1 in module ida_nalt: + +is_aflag_lzero1(*args) + is_aflag_lzero1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_manual_insn in module ida_nalt: + +is_aflag_manual_insn(*args) + is_aflag_manual_insn(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_noret in module ida_nalt: + +is_aflag_noret(*args) + is_aflag_noret(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_notcode in module ida_nalt: + +is_aflag_notcode(*args) + is_aflag_notcode(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_notproc in module ida_nalt: + +is_aflag_notproc(*args) + is_aflag_notproc(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_public_name in module ida_nalt: + +is_aflag_public_name(*args) + is_aflag_public_name(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_retfp in module ida_nalt: + +is_aflag_retfp(*args) + is_aflag_retfp(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_terse_struc in module ida_nalt: + +is_aflag_terse_struc(*args) + is_aflag_terse_struc(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_tilcmt in module ida_nalt: + +is_aflag_tilcmt(*args) + is_aflag_tilcmt(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_determined_by_hexrays in module ida_nalt: + +is_aflag_type_determined_by_hexrays(*args) + is_aflag_type_determined_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_guessed_by_hexrays in module ida_nalt: + +is_aflag_type_guessed_by_hexrays(*args) + is_aflag_type_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_guessed_by_ida in module ida_nalt: + +is_aflag_type_guessed_by_ida(*args) + is_aflag_type_guessed_by_ida(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_usersp in module ida_nalt: + +is_aflag_usersp(*args) + is_aflag_usersp(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_userti in module ida_nalt: + +is_aflag_userti(*args) + is_aflag_userti(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_weak_name in module ida_nalt: + +is_aflag_weak_name(*args) + is_aflag_weak_name(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_zstroff in module ida_nalt: + +is_aflag_zstroff(*args) + is_aflag_zstroff(flags) -> bool + @param flags (C++: aflags_t) + Help on function is_align_flow in module ida_nalt: is_align_flow(*args) @@ -66978,6 +69834,12 @@ is_colored_item(*args) is_colored_item(ea) -> bool @param ea (C++: ea_t) +Help on function is_data_guessed_by_hexrays in module ida_nalt: + +is_data_guessed_by_hexrays(*args) + is_data_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + Help on function is_finally_visible_item in module ida_nalt: is_finally_visible_item(*args) @@ -66992,6 +69854,12 @@ is_fixed_spd(*args) is_fixed_spd(ea) -> bool @param ea (C++: ea_t) +Help on function is_func_guessed_by_hexrays in module ida_nalt: + +is_func_guessed_by_hexrays(*args) + is_func_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + Help on function is_hidden_border in module ida_nalt: is_hidden_border(*args) @@ -67074,6 +69942,24 @@ is_tilcmt(*args) is_tilcmt(ea) -> bool @param ea (C++: ea_t) +Help on function is_type_determined_by_hexrays in module ida_nalt: + +is_type_determined_by_hexrays(*args) + is_type_determined_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + +Help on function is_type_guessed_by_hexrays in module ida_nalt: + +is_type_guessed_by_hexrays(*args) + is_type_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + +Help on function is_type_guessed_by_ida in module ida_nalt: + +is_type_guessed_by_ida(*args) + is_type_guessed_by_ida(ea) -> bool + @param ea (C++: ea_t) + Help on function is_usersp in module ida_nalt: is_usersp(*args) @@ -67193,7 +70079,7 @@ class printop_t(__builtin__.object) | list of weak references to the object (if defined) | | aflags - | printop_t_aflags_get(self) -> flags_t + | printop_t_aflags_get(self) -> aflags_t | | features | printop_t_features_get(self) -> uchar @@ -67355,7 +70241,7 @@ Help on function set_abits in module ida_nalt: set_abits(*args) set_abits(ea, bits) @param ea (C++: ea_t) - @param bits (C++: uint32) + @param bits (C++: aflags_t) Help on function set_absbase in module ida_nalt: @@ -67369,7 +70255,7 @@ Help on function set_aflags in module ida_nalt: set_aflags(*args) set_aflags(ea, flags) @param ea (C++: ea_t) - @param flags (C++: uint32) + @param flags (C++: aflags_t) Help on function set_align_flow in module ida_nalt: @@ -67420,6 +70306,12 @@ set_custom_data_type_ids(*args) @param ea (C++: ea_t) @param cdis (C++: const custom_data_type_ids_t *) +Help on function set_data_guessed_by_hexrays in module ida_nalt: + +set_data_guessed_by_hexrays(*args) + set_data_guessed_by_hexrays(ea) + @param ea (C++: ea_t) + Help on function set_default_encoding_idx in module ida_nalt: set_default_encoding_idx(*args) @@ -67436,6 +70328,12 @@ set_fixed_spd(*args) set_fixed_spd(ea) @param ea (C++: ea_t) +Help on function set_func_guessed_by_hexrays in module ida_nalt: + +set_func_guessed_by_hexrays(*args) + set_func_guessed_by_hexrays(ea) + @param ea (C++: ea_t) + Help on function set_gotea in module ida_nalt: set_gotea(*args) @@ -67466,6 +70364,15 @@ set_has_ti1(*args) set_has_ti1(ea) @param ea (C++: ea_t) +Help on function set_ida_notepad_text in module ida_nalt: + +set_ida_notepad_text(*args) + Set notead text. + + set_ida_notepad_text(text, size=0) + @param text (C++: const char *) + @param size (C++: size_t) + Help on function set_ids_modnode in module ida_nalt: set_ids_modnode(*args) @@ -67495,6 +70402,14 @@ set_libitem(*args) set_libitem(ea) @param ea (C++: ea_t) +Help on function set_loader_format_name in module ida_nalt: + +set_loader_format_name(*args) + Set file format name for loader modules. + + set_loader_format_name(name) + @param name (C++: const char *) + Help on function set_lzero0 in module ida_nalt: set_lzero0(*args) @@ -67541,8 +70456,8 @@ set_outfile_encoding_idx(*args) set encoding to be used when producing files set_outfile_encoding_idx(idx) -> bool - @param idx: - + @param idx: the encoding index idx can be 0 to use the IDB's default + 1-byte-per-unit encoding (C++: int) Help on function set_refinfo in module ida_nalt: @@ -67584,6 +70499,22 @@ set_source_linnum(*args) @param ea (C++: ea_t) @param lnnum (C++: uval_t) +Help on function set_srcdbg_paths in module ida_nalt: + +set_srcdbg_paths(*args) + Set source debug paths. + + set_srcdbg_paths(paths) + @param paths (C++: const char *) + +Help on function set_srcdbg_undesired_paths in module ida_nalt: + +set_srcdbg_undesired_paths(*args) + Set user-closed source files. + + set_srcdbg_undesired_paths(paths) + @param paths (C++: const char *) + Help on function set_str_type in module ida_nalt: set_str_type(*args) @@ -67624,6 +70555,18 @@ set_tinfo(*args) @param ea (C++: ea_t) @param tif (C++: const tinfo_t *) +Help on function set_type_determined_by_hexrays in module ida_nalt: + +set_type_determined_by_hexrays(*args) + set_type_determined_by_hexrays(ea) + @param ea (C++: ea_t) + +Help on function set_type_guessed_by_ida in module ida_nalt: + +set_type_guessed_by_ida(*args) + set_type_guessed_by_ida(ea) + @param ea (C++: ea_t) + Help on function set_usemodsp in module ida_nalt: set_usemodsp(*args) @@ -67830,6 +70773,9 @@ class switch_info_t(__builtin__.object) | is_subtract(self, *args) | is_subtract(self) -> bool | + | is_user_defined(self, *args) + | is_user_defined(self) -> bool + | | set_elbase(self, *args) | set_elbase(self, base) | @param base (C++: ea_t) @@ -67943,6 +70889,20 @@ unhide_item(*args) unhide_item(ea) @param ea (C++: ea_t) +Help on function upd_abits in module ida_nalt: + +upd_abits(*args) + upd_abits(ea, clr_bits, set_bits) + @param ea (C++: ea_t) + @param clr_bits (C++: aflags_t) + @param set_bits (C++: aflags_t) + +Help on function uses_aflag_modsp in module ida_nalt: + +uses_aflag_modsp(*args) + uses_aflag_modsp(flags) -> bool + @param flags (C++: aflags_t) + Help on function uses_modsp in module ida_nalt: uses_modsp(*args) @@ -67988,6 +70948,26 @@ ida_nalt.AFL_HIDDEN the item is hidden completely """ +ida_nalt.AFL_HR_DETERMINED +""" +the type is definitely guessed by the decompiler +""" + +ida_nalt.AFL_HR_GUESSED_DATA +""" +the data type is guessed by the decompiler +""" + +ida_nalt.AFL_HR_GUESSED_FUNC +""" +the function type is guessed by the decompiler +""" + +ida_nalt.AFL_IDA_GUESSED +""" +the type is guessed by IDA +""" + ida_nalt.AFL_LIB """ item from the standard library. low level flag, is used to set @@ -68067,7 +71047,8 @@ terse structure variable display? ida_nalt.AFL_TI """ -has typeinfo? ( 'NSUP_TYPEINFO' ) +has typeinfo? ( 'NSUP_TYPEINFO' ); used only for addresses, not for +'member_t' """ ida_nalt.AFL_TI0 @@ -68085,6 +71066,11 @@ ida_nalt.AFL_TILCMT has type comment? (such a comment may be changed by IDA) """ +ida_nalt.AFL_TYPE_GUESSED +""" +who guessed the type information? +""" + ida_nalt.AFL_USEMODSP """ example: pop [rsp+N] @@ -68099,9 +71085,8 @@ user-defined SP value ida_nalt.AFL_USERTI """ -(comes from the user or type library) - -the type information is definitive. +the type information is definitive. (comes from the user or type +library) if not set see 'AFL_TYPE_GUESSED' """ ida_nalt.AFL_WEAKNAM @@ -68510,9 +71495,8 @@ Patch netnode tag. ida_nalt.REFINFO_CUSTOM """ -a custom reference the kernel will call \\ph{notify}(ph.custom_offset, -.... that can change all arguments used for calculations. This flag is -useful for custom fixups +a custom reference. see 'custom_refinfo_handler_t' . the id of the +custom refinfo is stored under the REFINFO_TYPE mask. """ ida_nalt.REFINFO_NOBASE @@ -68549,7 +71533,9 @@ usual) being added to it ida_nalt.REFINFO_TYPE """ -reference type +reference ID if REFINFO_CUSTOM set + +reference type (reftype_t), or custom """ ida_nalt.RIDX_ABINAME @@ -68622,11 +71608,6 @@ ida_nalt.RIDX_PROBLEMS problem lists """ -ida_nalt.RIDX_SELECTED_EXTLANG -""" -last selected extlang name (from the execute script box) -""" - ida_nalt.RIDX_SELECTORS """ 2..63 are for selector_t blob (see init_selectors()) @@ -68787,11 +71768,6 @@ ida_nalt.SWI_JSIZE jump offset expansion bit """ -ida_nalt.SWI_RESERVED -""" -was: SWI_DEFAULT -""" - ida_nalt.SWI_SELFREL """ jump address is relative to the element not to ELBASE @@ -68831,6 +71807,11 @@ ida_nalt.SWI_SUBTRACT table values are subtracted from the elbase instead of being added """ +ida_nalt.SWI_USER +""" +user specified switch (starting from version 2) +""" + ida_nalt.SWI_V32 """ 32-bit values in table @@ -69410,7 +72391,7 @@ is_ident_cp(*args) Help on function is_in_nlist in module ida_name: is_in_nlist(*args) - Is name included into names list? + Is the name included into the name list? is_in_nlist(ea) -> bool @param ea (C++: ea_t) @@ -69532,7 +72513,7 @@ make_name_weak(*args) Help on function rebuild_nlist in module ida_name: rebuild_nlist(*args) - Rebuild names list. + Rebuild the name list. Help on function reorder_dummy_names in module ida_name: @@ -69588,8 +72569,8 @@ set_name(*args) @param flags: Set name flags . If a bit is not specified, then the corresponding action is not performed and the name will retain the same bits as before calling this function. - For new names, default is: non-public, non-weak, non- - auto. (C++: int) + For new names, default is: non-public, non-weak, + non-auto. (C++: int) @retval: 1 - ok, name is changed @retval: 0 - failure, a warning is displayed @@ -70113,8 +73094,8 @@ class netnode(__builtin__.object) | tag: uchar | | copyto(self, *args) - | copyto(self, target, count=1) -> size_t - | target: netnode + | copyto(self, destnode, count=1) -> size_t + | destnode: netnode | count: nodeidx_t | | create(self, *args) @@ -70289,8 +73270,8 @@ class netnode(__builtin__.object) | tag: uchar | | moveto(self, *args) - | moveto(self, target, count=1) -> size_t - | target: netnode + | moveto(self, destnode, count=1) -> size_t + | destnode: netnode | count: nodeidx_t | | next(self, *args) @@ -70459,6 +73440,13 @@ class netnode(__builtin__.object) | value_exists(self) -> bool | | ---------------------------------------------------------------------- + | Static methods defined here: + | + | exist(*args) + | exist(_name) -> bool + | _name: char const * + | + | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ @@ -70476,6 +73464,12 @@ class netnode(__builtin__.object) | __swig_destroy__ = | delete_netnode(self) +Help on function netnode_exist in module ida_netnode: + +netnode_exist(*args) + netnode_exist(_name) -> bool + _name: char const * + === ida_netnode EPYDOC INJECTIONS === ida_netnode.BADNODE """ @@ -70660,10 +73654,10 @@ Help on function op_offset in module ida_offset: op_offset(*args) See 'op_offset_ex()' - op_offset(ea, n, type, target=BADADDR, base=0, tdelta=0) -> bool + op_offset(ea, n, type_and_flags, target=BADADDR, base=0, tdelta=0) -> bool @param ea (C++: ea_t) @param n (C++: int) - @param type (C++: reftype_t) + @param type_and_flags (C++: uint32) @param target (C++: ea_t) @param base (C++: ea_t) @param tdelta (C++: adiff_t) @@ -72919,7 +75913,7 @@ UTF-16 codepage. ida_pro.IDA_SDK_VERSION """ -IDA SDK v7.5. +IDA SDK v7.6. """ ida_pro.IDBDEC_ESCAPE @@ -74795,6 +77789,15 @@ class segment_t(ida_range.range_t) | comorg(self, *args) | comorg(self) -> bool | + | is_16bit(self, *args) + | Is a 16-bit segment? + | + | is_32bit(self, *args) + | Is a 32-bit segment? + | + | is_64bit(self, *args) + | Is a 64-bit segment? + | | is_header_segm(self, *args) | is_header_segm(self) -> bool | @@ -74842,11 +77845,7 @@ class segment_t(ida_range.range_t) | segment structure may be modified directly, there are special | functions to modify some fields. | - | use32(self, *args) - | Use 32 bit segment addressing? - | - | use64(self, *args) - | Use 64 bit segment addressing? + | use64 = is_64bit(self, *args) | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -75267,7 +78266,9 @@ silent mode, no "Adding segment..." in the messages window ida_segment.ADDSEG_SPARSE """ -use sparse storage method for the new segment +use sparse storage method for the new ranges of the created segment. +please note that the ranges that were already enabled before creating +the segment will not change their storage type. """ ida_segment.CSS_BREAK @@ -75954,11 +78955,124 @@ ida_segregs.SR_user the value is specified by the user """ === ida_segregs EPYDOC INJECTIONS END === +Help on function generate_til_with_parser in module ida_srclang: + +generate_til_with_parser(*args) + Generate a standalone IDA type library from the given header file, + using the parser with the given name + + generate_til_with_parser(parser_name, tilname, tildesc, tildir, header) -> int + @param parser_name: name of the target parser (C++: const char *) + @param tilname: the name of the resulting type library (C++: const + char *) + @param tildesc: a short description of the TIL (C++: const char *) + @param tildir: directory where the TIL will be stored (C++: const char + *) + @param header: path to a header file (C++: const char *) + @retval: -1 - no parser was found with the given name + @retval: -2 - operation is not supported by the given parser + @retval: 0 - ok + @retval: else - an error occurred when generating the til, consult the + output window + +Help on function parse_decls_for_srclang in module ida_srclang: + +parse_decls_for_srclang(*args) + Parse type declarations in the specified language + + parse_decls_for_srclang(lang, til, input, is_path) -> int + @param lang: the source language(s) expected in the input (C++: + srclang_t) + @param til: type library to store the types (C++: til_t *) + @param input: input source. can be a file path or decl string (C++: + const char *) + @param is_path: true if input parameter is a path to a source file, + false if the input is an in-memory source snippet + (C++: bool) + @retval: -1 - no parser was found that supports the given source + language(s) + @retval: else - the number of errors encountered in the input source + +Help on function parse_decls_with_parser in module ida_srclang: + +parse_decls_with_parser(*args) + Parse type declarations using the parser with the specified name + + parse_decls_with_parser(parser_name, til, input, is_path) -> int + @param parser_name: name of the target parser (C++: const char *) + @param til: type library to store the types (C++: til_t *) + @param input: input source. can be a file path or decl string (C++: + const char *) + @param is_path: true if input parameter is a path to a source file, + false if the input is an in-memory source snippet + (C++: bool) + @retval: -1 - no parser was found with the given name + @retval: else - the number of errors encountered in the input source + +Help on function select_parser_by_name in module ida_srclang: + +select_parser_by_name(*args) + Set the parser with the given name as the current parser. Pass NULL or + an empty string to select the default parser. + + select_parser_by_name(name) -> bool + @param name (C++: const char *) + @return: false if no parser was found with the given name + +Help on function select_parser_by_srclang in module ida_srclang: + +select_parser_by_srclang(*args) + Set the parser that supports the given language(s) as the current + parser. The selected parser must support all languages specified by + the given 'srclang_t' . + + select_parser_by_srclang(lang) -> bool + @param lang (C++: srclang_t) + @return: false if no such parser was found + +Help on function set_parser_argv in module ida_srclang: + +set_parser_argv(*args) + Set the command-line args to use for invocations of the parser with + the given name + + set_parser_argv(parser_name, argv) -> int + @param parser_name: name of the target parser (C++: const char *) + @param argv: argument list (C++: const char *) + @retval: -1 - no parser was found with the given name + @retval: -2 - the operation is not supported by the given parser + @retval: else - all other values indicate success + +=== ida_srclang EPYDOC INJECTIONS === +ida_srclang.SRCLANG_C +""" +C. +""" + +ida_srclang.SRCLANG_CPP +""" +C++. +""" + +ida_srclang.SRCLANG_GO +""" +Golang (not supported yet) +""" + +ida_srclang.SRCLANG_OBJC +""" +Objective-C. +""" + +ida_srclang.SRCLANG_SWIFT +""" +Swift (not supported yet) +""" +=== ida_srclang EPYDOC INJECTIONS END === Help on function build_strlist in module ida_strlist: build_strlist(*args) - Build the string list. You should initialize options before this call - using the restore_config() or setup_strings_window() methods. + Rebuild the string list. Help on function clear_strlist in module ida_strlist: @@ -75977,12 +79091,13 @@ get_strlist_item(*args) Help on function get_strlist_options in module ida_strlist: get_strlist_options(*args) - Get access to the static string list options. + Get the static string list options. Help on function get_strlist_qty in module ida_strlist: get_strlist_qty(*args) - Get number of elements in the string list. + Get number of elements in the string list. The list will be loaded + from the database (if saved) or built from scratch. Help on class string_info_t in module ida_strlist: @@ -76047,9 +79162,6 @@ class strwinsetup_t(__builtin__.object) | _set_strtypes(self, py_t) -> PyObject * | py_t: PyObject * | - | is_initialized(self, *args) - | is_initialized(self) -> bool - | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -76228,6 +79340,20 @@ Help on function get_first_struc_idx in module ida_struct: get_first_struc_idx(*args) Get index of first structure. +Help on function get_innermost_member in module ida_struct: + +get_innermost_member(*args) + get_innermost_member(sptr, offset) -> PyObject * + Get the innermost member at the given offset + @param sptr: the starting structure + @param offset: offset into the starting structure + @return: + - None on failure + - tuple(member_t, struct_t, offset) + where member_t: a member in SPTR (it is not a structure), + struct_t: the innermost structure, + offset: remaining offset into the returned member + Help on function get_last_struc_idx in module ida_struct: get_last_struc_idx(*args) @@ -78248,7 +81374,10 @@ append_abi_opts(*args) Help on function append_argloc in module ida_typeinf: append_argloc(*args) - Serialize argument location. + Serialize argument location Deserialize an argument location. Argument + FORBID_STKOFF check location type. It can be used, for example, to + check the return location of a function that cannot return a value in + the stack append_argloc(out, vloc) -> bool @param out (C++: qtype *) @@ -78503,6 +81632,9 @@ class argloc_t(__builtin__.object) | has_stkoff(self, *args) | TRUE if argloc has a stack part. | + | in_stack(self, *args) + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) | See 'ALOC_NONE' . | @@ -78802,6 +81934,9 @@ class argpart_t(argloc_t) | has_stkoff(self, *args) | TRUE if argloc has a stack part. | + | in_stack(self, *args) + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) | See 'ALOC_NONE' . | @@ -79596,6 +82731,15 @@ del_tinfo_attr(*args) key: qstring const & make_copy: bool +Help on function del_vftable_ea in module ida_typeinf: + +del_vftable_ea(*args) + Delete the address of a vftable instance for a vftable type. + + del_vftable_ea(ordinal) -> bool + @param ordinal: ordinal number of a vftable type. (C++: uint32) + @return: success + Help on function deref_ptr in module ida_typeinf: deref_ptr(*args) @@ -80059,12 +83203,10 @@ class enum_type_data_t(enum_member_vec_t) Help on function extract_argloc in module ida_typeinf: extract_argloc(*args) - Deserialize argument location. - - extract_argloc(vloc, ptype, is_retval) -> bool + extract_argloc(vloc, ptype, forbid_stkoff) -> bool @param vloc (C++: argloc_t *) @param ptype (C++: const type_t **) - @param is_retval (C++: bool) + @param forbid_stkoff (C++: bool) Help on function find_tinfo_udt_member in module ida_typeinf: @@ -80160,6 +83302,18 @@ class func_type_data_t(funcargvec_t) | @param purged (C++: int) | @param cc_flags (C++: int) | + | is_const(self, *args) + | is_const(self) -> bool + | + | is_ctor(self, *args) + | is_ctor(self) -> bool + | + | is_dtor(self, *args) + | is_dtor(self) -> bool + | + | is_golang_cc(self, *args) + | is_golang_cc(self) -> bool + | | is_high(self, *args) | is_high(self) -> bool | @@ -80169,9 +83323,15 @@ class func_type_data_t(funcargvec_t) | is_pure(self, *args) | is_pure(self) -> bool | + | is_static(self, *args) + | is_static(self) -> bool + | | is_vararg_cc(self, *args) | is_vararg_cc(self) -> bool | + | is_virtual(self, *args) + | is_virtual(self) -> bool + | | swap(self, *args) | swap(self, r) | @param r (C++: func_type_data_t &) @@ -80852,6 +84012,26 @@ get_type_ordinal(*args) @param ti (C++: const til_t *) @param name (C++: const char *) +Help on function get_vftable_ea in module ida_typeinf: + +get_vftable_ea(*args) + Get address of a virtual function table. + + get_vftable_ea(ordinal) -> ea_t + @param ordinal: ordinal number of a vftable type. (C++: uint32) + @return: address of the corresponding virtual function table in the + current database. + +Help on function get_vftable_ordinal in module ida_typeinf: + +get_vftable_ordinal(*args) + Get ordinal number of the virtual function table. + + get_vftable_ordinal(vftable_ea) -> uint32 + @param vftable_ea: address of a virtual function table. (C++: ea_t) + @return: ordinal number of the corresponding vftable type. 0 - + failure. + Help on function guess_func_cc in module ida_typeinf: guess_func_cc(*args) @@ -81062,6 +84242,14 @@ Help on function is_gcc64 in module ida_typeinf: is_gcc64(*args) Is the target compiler 64 bit gcc? +Help on function is_golang_cc in module ida_typeinf: + +is_golang_cc(*args) + GO language calling convention (return value in stack)? + + is_golang_cc(cc) -> bool + @param cc (C++: cm_t) + Help on function is_ordinal_name in module ida_typeinf: is_ordinal_name(*args) @@ -82726,6 +85914,17 @@ set_type_alias(*args) @param src_ordinal (C++: uint32) @param dst_ordinal (C++: uint32) +Help on function set_vftable_ea in module ida_typeinf: + +set_vftable_ea(*args) + Set the address of a vftable instance for a vftable type. + + set_vftable_ea(ordinal, vftable_ea) -> bool + @param ordinal: ordinal number of the corresponding vftable type. + (C++: uint32) + @param vftable_ea: address of a virtual function table. (C++: ea_t) + @return: success + Help on class simd_info_t in module ida_typeinf: class simd_info_t(__builtin__.object) @@ -82791,6 +85990,11 @@ store_til(*args) const char *) @return: success +Help on function switch_to_golang in module ida_typeinf: + +switch_to_golang(*args) + switch to GOLANG calling convention (to be used as default CC) + Help on class text_sink_t in module ida_typeinf: class text_sink_t(__builtin__.object) @@ -83242,6 +86446,13 @@ class tinfo_t(__builtin__.object) | @param fi (C++: func_type_data_t *) | @param gtd (C++: gtd_func_t) | + | get_methods(self, *args) + | 'BT_COMPLEX' : get a list of member functions declared in this udt. + | + | get_methods(self, methods) -> bool + | @param methods (C++: udtmembervec_t *) + | @return: false if no member functions exist + | | get_modifiers(self, *args) | get_modifiers(self) -> type_t | @@ -83745,6 +86956,15 @@ class tinfo_t(__builtin__.object) | set_declalign(self, declalign) -> bool | @param declalign (C++: uchar) | + | set_methods(self, *args) + | 'BT_COMPLEX' : set the list of member functions. This function + | consumes 'methods' (makes it empty). + | + | set_methods(self, methods) -> bool + | @param methods (C++: udtmembervec_t &) + | @return: false if this type is not a udt, or if the given list is + | empty + | | set_modifiers(self, *args) | set_modifiers(self, mod) | mod: type_t @@ -84206,6 +87426,9 @@ class udt_member_t(__builtin__.object) | clr_baseclass(self, *args) | clr_baseclass(self) | + | clr_method(self, *args) + | clr_method(self) + | | clr_unaligned(self, *args) | clr_unaligned(self) | @@ -84227,6 +87450,9 @@ class udt_member_t(__builtin__.object) | is_bitfield(self, *args) | is_bitfield(self) -> bool | + | is_method(self, *args) + | is_method(self) -> bool + | | is_unaligned(self, *args) | is_unaligned(self) -> bool | @@ -84242,6 +87468,9 @@ class udt_member_t(__builtin__.object) | set_baseclass(self, *args) | set_baseclass(self) | + | set_method(self, *args) + | set_method(self) + | | set_unaligned(self, *args) | set_unaligned(self) | @@ -84305,6 +87534,7 @@ class udt_type_data_t(udtmembervec_t) | Method resolution order: | udt_type_data_t | udtmembervec_t + | udtmembervec_template_t | __builtin__.object | | Methods defined here: @@ -84330,6 +87560,9 @@ class udt_type_data_t(udtmembervec_t) | is_vftable(self, *args) | is_vftable(self) -> bool | + | set_vftable(self, *args) + | set_vftable(self) + | | swap(self, *args) | swap(self, r) | @param r (C++: udt_type_data_t &) @@ -84368,7 +87601,7 @@ class udt_type_data_t(udtmembervec_t) | delete_udt_type_data_t(self) | | ---------------------------------------------------------------------- - | Methods inherited from udtmembervec_t: + | Methods inherited from udtmembervec_template_t: | | __eq__(self, *args) | __eq__(self, r) -> bool @@ -84496,7 +87729,7 @@ class udt_type_data_t(udtmembervec_t) | truncate(self) | | ---------------------------------------------------------------------- - | Data descriptors inherited from udtmembervec_t: + | Data descriptors inherited from udtmembervec_template_t: | | __dict__ | dictionary for instance variables (if defined) @@ -84506,7 +87739,177 @@ class udt_type_data_t(udtmembervec_t) Help on class udtmembervec_t in module ida_typeinf: -class udtmembervec_t(__builtin__.object) +class udtmembervec_t(udtmembervec_template_t) + | Proxy of C++ udtmembervec_t class. + | + | Method resolution order: + | udtmembervec_t + | udtmembervec_template_t + | __builtin__.object + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> udtmembervec_t + | + | __repr__ = _swig_repr(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_udtmembervec_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from udtmembervec_template_t: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: qvector< udt_member_t > const & + | + | __getitem__(self, *args) + | __getitem__(self, i) -> udt_member_t + | i: size_t + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: qvector< udt_member_t > const & + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: udt_member_t const & + | + | _del(self, *args) + | _del(self, x) -> bool + | x: udt_member_t const & + | + | add_unique(self, *args) + | add_unique(self, x) -> bool + | x: udt_member_t const & + | + | at(self, *args) + | at(self, _idx) -> udt_member_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) + | begin(self) -> udt_member_t + | begin(self) -> udt_member_t + | + | capacity(self, *args) + | capacity(self) -> size_t + | + | clear(self, *args) + | clear(self) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> udt_member_t + | end(self) -> udt_member_t + | + | erase(self, *args) + | erase(self, it) -> udt_member_t + | it: qvector< udt_member_t >::iterator + | + | + | erase(self, first, last) -> udt_member_t + | first: qvector< udt_member_t >::iterator + | last: qvector< udt_member_t >::iterator + | + | extract(self, *args) + | extract(self) -> udt_member_t + | + | find(self, *args) + | find(self, x) -> udt_member_t + | x: udt_member_t const & + | + | + | find(self, x) -> udt_member_t + | x: udt_member_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) + | grow(self, x=udt_member_t()) + | x: udt_member_t const & + | + | has(self, *args) + | has(self, x) -> bool + | x: udt_member_t const & + | + | inject(self, *args) + | inject(self, s, len) + | s: udt_member_t * + | len: size_t + | + | insert(self, *args) + | insert(self, it, x) -> udt_member_t + | it: qvector< udt_member_t >::iterator + | x: udt_member_t const & + | + | pop_back(self, *args) + | pop_back(self) + | + | push_back(self, *args) + | push_back(self, x) + | x: udt_member_t const & + | + | qclear(self, *args) + | qclear(self) + | + | reserve(self, *args) + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) + | resize(self, _newsize, x) + | _newsize: size_t + | x: udt_member_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) + | size(self) -> size_t + | + | swap(self, *args) + | swap(self, r) + | r: qvector< udt_member_t > & + | + | truncate(self, *args) + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from udtmembervec_template_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + +Help on class udtmembervec_template_t in module ida_typeinf: + +class udtmembervec_template_t(__builtin__.object) | Proxy of C++ qvector< udt_member_t > class. | | Methods defined here: @@ -84520,7 +87923,7 @@ class udtmembervec_t(__builtin__.object) | i: size_t | | __init__(self, *args) - | __init__(self) -> udtmembervec_t + | __init__(self) -> udtmembervec_template_t | x: qvector< udt_member_t > const & | | __iter__ = _bounded_getitem_iterator(self) @@ -84661,8 +88064,8 @@ class udtmembervec_t(__builtin__.object) | ---------------------------------------------------------------------- | Data and other attributes defined here: | - | __swig_destroy__ = - | delete_udtmembervec_t(self) + | __swig_destroy__ = + | delete_udtmembervec_template_t(self) Help on function unpack_idcobj_from_bv in module ida_typeinf: @@ -84714,6 +88117,11 @@ unpack_object_from_idb(*args) ea: ea_t pio_flags: int +Help on function use_golang_cc in module ida_typeinf: + +use_golang_cc(*args) + is GOLANG calling convention used by default? + Help on class valstr_t in module ida_typeinf: class valstr_t(__builtin__.object) @@ -85122,6 +88530,11 @@ ida_typeinf.CC_CDECL_OK can use __cdecl calling convention? """ +ida_typeinf.CC_GOLANG_OK +""" +can use __golang calling convention +""" + ida_typeinf.CC_HAS_ELLIPSIS """ function has a variable list of arguments? @@ -85153,6 +88566,11 @@ ida_typeinf.FAI_STRUCT was initially a structure """ +ida_typeinf.FAI_UNUSED +""" +argument is not used by the function +""" + ida_typeinf.FTI_ALL """ all defined bits @@ -85170,11 +88588,31 @@ ida_typeinf.FTI_CALLTYPE mask for FTI_*CALL """ +ida_typeinf.FTI_CONST +""" +const member function +""" + +ida_typeinf.FTI_CTOR +""" +constructor +""" + ida_typeinf.FTI_DEFCALL """ default call """ +ida_typeinf.FTI_DTOR +""" +destructor +""" + +ida_typeinf.FTI_EXPLOCS +""" +all arglocs are specified explicitly +""" + ida_typeinf.FTI_FARCALL """ far call @@ -85545,6 +88983,11 @@ ida_typeinf.PRTYPE_DEF 'tinfo_t' : print definition, if available """ +ida_typeinf.PRTYPE_METHODS +""" +'tinfo_t' : print udt methods +""" + ida_typeinf.PRTYPE_MULTI """ print to many lines @@ -85795,6 +89238,11 @@ ida_typeinf.TAFLD_BASECLASS field: do not include but inherit from the current field """ +ida_typeinf.TAFLD_METHOD +""" +denotes a udt member function +""" + ida_typeinf.TAFLD_UNALIGNED """ field: unaligned field @@ -86189,23 +89637,6 @@ get_printable_immvals(*args) @param F: flags for the specified address (C++: flags_t) @return: number of immediate values (0..2* UA_MAXOP ) -Help on function guess_table_address in module ida_ua: - -guess_table_address(*args) - Guess the jump table address (ibm pc specific) - - guess_table_address(insn) -> ea_t - @param insn - an ida_ua.insn_t, or an address (C++: const insn_t &) - -Help on function guess_table_size in module ida_ua: - -guess_table_size(*args) - Guess the jump table size. - - guess_table_size(insn, jump_table) -> asize_t - @param insn - an ida_ua.insn_t, or an address (C++: const insn_t &) - @param jump_table (C++: ea_t) - Help on function insn_add_cref in module ida_ua: insn_add_cref(*args) @@ -86380,6 +89811,10 @@ class insn_t(__builtin__.object) | | Op6 | + | Op7 + | + | Op8 + | | __dict__ | dictionary for instance variables (if defined) | @@ -87213,6 +90648,9 @@ class outctx_t(outctx_base_t) | procmod | outctx_t_procmod_get(self) -> procmod_t | + | saved_immvals + | outctx_t_saved_immvals_get(self) -> uval_t [8] + | | thisown | The membership flag | @@ -89138,12 +92576,17 @@ clear_trace(filename) Help on function create_align in module ida_bytes: create_align(*args) - Alignment: 0 or 2..32. If it is 0, is will be calculated. + Create an alignment item. create_align(ea, length, alignment) -> bool - @param ea (C++: ea_t) - @param length (C++: asize_t) - @param alignment (C++: int) + @param ea: linear address (C++: ea_t) + @param length: size of the item in bytes. 0 means to infer from + ALIGNMENT (C++: asize_t) + @param alignment: alignment exponent. Example: 3 means align to 8 + bytes. 0 means to infer from LENGTH It is forbidden + to specify both LENGTH and ALIGNMENT as 0. (C++: + int) + @return: success Help on function create_array in module idc: @@ -89467,12 +92910,8 @@ del_hidden_range(*args) Help on function del_idc_hotkey in module ida_kernwin: del_idc_hotkey(*args) - Delete IDC function hotkey ( 'ui_del_idckey' ). - del_idc_hotkey(hotkey) -> bool - @param hotkey: hotkey name (C++: const char *) - @retval: 1 - ok - @retval: 0 - failed + @param hotkey (C++: const char *) Help on function del_items in module ida_bytes: @@ -92045,9 +95484,9 @@ load_debugger(*args) Help on function load_trace_file in module ida_dbg: load_trace_file(*args) - Load a recorded trace file in the trace window. If the call succeeds - and 'buf' is not null, the description of the trace stored in the - binary trace file will be returned in 'buf' + Load a recorded trace file in the 'Tracing' window. If the call + succeeds and 'buf' is not null, the description of the trace stored in + the binary trace file will be returned in 'buf' load_trace_file(filename) -> str @param filename (C++: const char *) @@ -92236,10 +95675,10 @@ Help on function op_offset in module ida_offset: op_offset(*args) See 'op_offset_ex()' - op_offset(ea, n, type, target=BADADDR, base=0, tdelta=0) -> bool + op_offset(ea, n, type_and_flags, target=BADADDR, base=0, tdelta=0) -> bool @param ea (C++: ea_t) @param n (C++: int) - @param type (C++: reftype_t) + @param type_and_flags (C++: uint32) @param target (C++: ea_t) @param base (C++: ea_t) @param tdelta (C++: adiff_t) diff --git a/pydoc_injections3.txt b/pydoc_injections3.txt index 2860619..49d5cea 100644 --- a/pydoc_injections3.txt +++ b/pydoc_injections3.txt @@ -583,14 +583,12 @@ bin_flag(*args) -> 'flags_t' Help on function bin_search in module ida_bytes: bin_search(*args) -> 'ea_t' - bin_search(start_ea, end_ea, image, imask, step, flags) -> ea_t + bin_search(start_ea, end_ea, data, flags) -> ea_t Search for a set of bytes in the program @param start_ea: linear address, start of range to search @param end_ea: linear address, end of range to search (exclusive) - @param image: the set of bytes to search for - @param imask: a bitfield representing the mask in 'image' (can be None) - @param step: either BIN_SEARCH_FORWARD, or BIN_SEARCH_BACKWARD + @param data: the prepared data to search for (see parse_binpat_str()) @param flags: combination of BIN_SEARCH_* flags @return: the address of a match, or ida_idaapi.BADADDR if not found @@ -610,12 +608,12 @@ bytesize(*args) -> 'int' Help on function calc_def_align in module ida_bytes: calc_def_align(*args) -> 'int' - Calculate default alignment. + Calculate the default alignment exponent. calc_def_align(ea, mina, maxa) -> int - @param ea (C++: ea_t) - @param mina (C++: int) - @param maxa (C++: int) + @param ea: linear address (C++: ea_t) + @param mina: minimal possible alignment exponent. (C++: int) + @param maxa: minimal possible alignment exponent. (C++: int) Help on function calc_dflags in module ida_bytes: @@ -627,10 +625,11 @@ calc_dflags(*args) -> 'flags_t' Help on function calc_max_align in module ida_bytes: calc_max_align(*args) -> 'int' - Returns: 0..32. + Calculate the maximal possible alignment exponent. calc_max_align(endea) -> int - @param endea (C++: ea_t) + @param endea: end address of the alignment item. (C++: ea_t) + @return: a value in the 0..32 range Help on function calc_max_item_end in module ida_bytes: @@ -648,10 +647,11 @@ calc_max_item_end(*args) -> 'ea_t' Help on function calc_min_align in module ida_bytes: calc_min_align(*args) -> 'int' - Returns: 1..32. + Calculate the minimal possible alignment exponent. calc_min_align(length) -> int - @param length (C++: asize_t) + @param length: size of the item in bytes. (C++: asize_t) + @return: a value in the 1..32 range Help on function can_define_item in module ida_bytes: @@ -735,10 +735,230 @@ Help on function code_flag in module ida_bytes: code_flag(*args) -> 'flags_t' 'FF_CODE' +Help on class compiled_binpat_t in module ida_bytes: + +class compiled_binpat_t(builtins.object) + | Proxy of C++ compiled_binpat_t class. + | + | Methods defined here: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: compiled_binpat_t const & + | + | __init__(self, *args) + | __init__(self) -> compiled_binpat_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: compiled_binpat_t const & + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_compiled_binpat_t(...) + | delete_compiled_binpat_t(self) + | + | all_bytes_defined(self, *args) -> 'bool' + | all_bytes_defined(self) -> bool + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | compiled_binpat_t_bytes_get(self) -> bytevec_t * + | + | encidx + | compiled_binpat_t_encidx_get(self) -> int + | + | mask + | compiled_binpat_t_mask_get(self) -> bytevec_t * + | + | strlits + | compiled_binpat_t_strlits_get(self) -> rangevec_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + +Help on class compiled_binpat_vec_t in module ida_bytes: + +class compiled_binpat_vec_t(builtins.object) + | Proxy of C++ qvector< compiled_binpat_t > class. + | + | Methods defined here: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: qvector< compiled_binpat_t > const & + | + | __getitem__(self, *args) -> 'compiled_binpat_t const &' + | __getitem__(self, i) -> compiled_binpat_t + | i: size_t + | + | __init__(self, *args) + | __init__(self) -> compiled_binpat_vec_t + | x: qvector< compiled_binpat_t > const & + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: qvector< compiled_binpat_t > const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: compiled_binpat_t const & + | + | __swig_destroy__ = delete_compiled_binpat_vec_t(...) + | delete_compiled_binpat_vec_t(self) + | + | _del(self, *args) -> 'bool' + | _del(self, x) -> bool + | x: compiled_binpat_t const & + | + | add_unique(self, *args) -> 'bool' + | add_unique(self, x) -> bool + | x: compiled_binpat_t const & + | + | at(self, *args) -> 'compiled_binpat_t const &' + | at(self, _idx) -> compiled_binpat_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) -> 'qvector< compiled_binpat_t >::const_iterator' + | begin(self) -> compiled_binpat_t + | begin(self) -> compiled_binpat_t + | + | capacity(self, *args) -> 'size_t' + | capacity(self) -> size_t + | + | clear(self, *args) -> 'void' + | clear(self) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'qvector< compiled_binpat_t >::const_iterator' + | end(self) -> compiled_binpat_t + | end(self) -> compiled_binpat_t + | + | erase(self, *args) -> 'qvector< compiled_binpat_t >::iterator' + | erase(self, it) -> compiled_binpat_t + | it: qvector< compiled_binpat_t >::iterator + | + | + | erase(self, first, last) -> compiled_binpat_t + | first: qvector< compiled_binpat_t >::iterator + | last: qvector< compiled_binpat_t >::iterator + | + | extract(self, *args) -> 'compiled_binpat_t *' + | extract(self) -> compiled_binpat_t + | + | find(self, *args) -> 'qvector< compiled_binpat_t >::const_iterator' + | find(self, x) -> compiled_binpat_t + | x: compiled_binpat_t const & + | + | + | find(self, x) -> compiled_binpat_t + | x: compiled_binpat_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) -> 'void' + | grow(self, x=compiled_binpat_t()) + | x: compiled_binpat_t const & + | + | has(self, *args) -> 'bool' + | has(self, x) -> bool + | x: compiled_binpat_t const & + | + | inject(self, *args) -> 'void' + | inject(self, s, len) + | s: compiled_binpat_t * + | len: size_t + | + | insert(self, *args) -> 'qvector< compiled_binpat_t >::iterator' + | insert(self, it, x) -> compiled_binpat_t + | it: qvector< compiled_binpat_t >::iterator + | x: compiled_binpat_t const & + | + | pop_back(self, *args) -> 'void' + | pop_back(self) + | + | push_back(self, *args) -> 'compiled_binpat_t &' + | push_back(self, x) + | x: compiled_binpat_t const & + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | reserve(self, *args) -> 'void' + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) -> 'void' + | resize(self, _newsize, x) + | _newsize: size_t + | x: compiled_binpat_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) -> 'size_t' + | size(self) -> size_t + | + | swap(self, *args) -> 'void' + | swap(self, r) + | r: qvector< compiled_binpat_t > & + | + | truncate(self, *args) -> 'void' + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + Help on function create_16bit_data in module ida_bytes: create_16bit_data(*args) -> 'bool' - Convert to 16-bit quantity (take byte size into account) + Convert to 16-bit quantity (take the byte size into account) create_16bit_data(ea, length) -> bool @param ea (C++: ea_t) @@ -747,7 +967,7 @@ create_16bit_data(*args) -> 'bool' Help on function create_32bit_data in module ida_bytes: create_32bit_data(*args) -> 'bool' - Convert to 32-bit quantity (take byte size into account) + Convert to 32-bit quantity (take the byte size into account) create_32bit_data(ea, length) -> bool @param ea (C++: ea_t) @@ -756,12 +976,17 @@ create_32bit_data(*args) -> 'bool' Help on function create_align in module ida_bytes: create_align(*args) -> 'bool' - Alignment: 0 or 2..32. If it is 0, is will be calculated. + Create an alignment item. create_align(ea, length, alignment) -> bool - @param ea (C++: ea_t) - @param length (C++: asize_t) - @param alignment (C++: int) + @param ea: linear address (C++: ea_t) + @param length: size of the item in bytes. 0 means to infer from + ALIGNMENT (C++: asize_t) + @param alignment: alignment exponent. Example: 3 means align to 8 + bytes. 0 means to infer from LENGTH It is forbidden + to specify both LENGTH and ALIGNMENT as 0. (C++: + int) + @return: success Help on function create_byte in module ida_bytes: @@ -2307,9 +2532,12 @@ is_align(*args) -> 'bool' Help on function is_attached_custom_data_format in module ida_bytes: is_attached_custom_data_format(*args) -> 'bool' + Is the custom data format attached to the custom data type? + is_attached_custom_data_format(dtid, dfid) -> bool - @param dtid (C++: int) - @param dfid (C++: int) + @param dtid: data type id (C++: int) + @param dfid: data format id (C++: int) + @return: true or false Help on function is_bnot in module ida_bytes: @@ -3127,6 +3355,45 @@ Help on function packreal_flag in module ida_bytes: packreal_flag(*args) -> 'flags_t' Get a flags_t representing a packed decimal real. +Help on function parse_binpat_str in module ida_bytes: + +parse_binpat_str(*args) -> 'qstring *' + Convert user-specified binary string to internal representation. The + 'in' parameter contains space-separated tokens: + + - numbers (numeric base is determined by 'radix') + - if value of number fits a byte, it is considered as a byte + - if value of number fits a word, it is considered as 2 bytes + - if value of number fits a dword,it is considered as 4 bytes + - "..." string constants + - 'x' single-character constants + - ? variable bytes + + Note that string constants are surrounded with double quotes.Here are + a few examples (assuming base 16): + + CD 21 - bytes 0xCD, 0x21 + 21CD - bytes 0xCD, 0x21 (little endian ) or 0x21, 0xCD (big-endian) + "Hello", 0 - the null terminated string "Hello" + L"Hello" - 'H', 0, 'e', 0, 'l', 0, 'l', 0, 'o', 0 + B8 ? ? ? ? 90 - byte 0xB8, 4 bytes with any value, byte 0x90 + + parse_binpat_str(out, ea, _in, radix, strlits_encoding=0) -> str + @param out: a vector of compiled binary patterns, for use with + bin_search2() (C++: compiled_binpat_vec_t *) + @param ea: linear address to convert for (the conversion depends on + the address, because the number of bits in a byte depend on + the segment type) (C++: ea_t) + in: char const * + @param radix: numeric base of numbers (8,10,16) (C++: int) + @param strlits_encoding: the target encoding into which the string + literals present in 'in', should be encoded. + Can be any from [1, get_encoding_qty() ), or + the special values PBSENC_* (C++: int) + @return: false either in case of parsing error, or if at least one + requested target encoding couldn't encode the string literals + present in "in". + Help on function patch_byte in module ida_bytes: patch_byte(*args) -> 'bool' @@ -4140,7 +4407,7 @@ have hotkey markers part of the name ida_bytes.PSTF_TBRIEF """ -use brief name (e.g., in the 'Strings window') +use brief name (e.g., in the 'Strings' window) """ ida_bytes.PSTF_TINLIN @@ -5845,9 +6112,9 @@ load_debugger(*args) -> 'bool' Help on function load_trace_file in module ida_dbg: load_trace_file(*args) -> 'qstring *' - Load a recorded trace file in the trace window. If the call succeeds - and 'buf' is not null, the description of the trace stored in the - binary trace file will be returned in 'buf' + Load a recorded trace file in the 'Tracing' window. If the call + succeeds and 'buf' is not null, the description of the trace stored in + the binary trace file will be returned in 'buf' load_trace_file(filename) -> str @param filename (C++: const char *) @@ -7282,6 +7549,11 @@ ida_dbg.DOPT_EXCDLG exception dialogs: """ +ida_dbg.DOPT_FAST_STEP +""" +prevent debugger memory refreshes when single-stepping +""" + ida_dbg.DOPT_INFO_BPT """ break on debugging information @@ -7699,25 +7971,33 @@ class dirspec_t(builtins.object) | @param inode (C++: inode_t) | | get_inode(self, *args) -> 'inode_t' - | get_inode(self, name) -> inode_t + | get the entry inode in the specified directory + | + | get_inode(self, diridx, name) -> inode_t + | @param diridx (C++: diridx_t) | @param name (C++: const char *) + | @return: the entry inode | | get_name(self, *args) -> 'bool' + | get the entry name. for example, the structure name + | | get_name(self, inode) -> bool | @param inode (C++: inode_t) - | - | get_size(self, *args) -> 'ssize_t' - | get_size(self, inode) -> ssize_t - | @param inode (C++: inode_t) + | @return: false if the entry does not exist. | | rename_inode(self, *args) -> 'bool' + | rename the entry + | | rename_inode(self, inode, newname) -> bool | @param inode (C++: inode_t) | @param newname (C++: const char *) + | @return: success | | unlink_inode(self, *args) -> 'void' - | unlink_inode(self, arg0) - | arg0: inode_t + | event: unlinked an inode + | + | unlink_inode(self, inode) + | @param inode (C++: inode_t) | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -8222,14 +8502,14 @@ class dirtree_t(builtins.object) | change_rank(self, path, rank_delta) -> dterr_t | @param path: path to the item (C++: const char *) | @param rank_delta (C++: ssize_t) - | @return: dterr_t error code + | @return: dterr_t error code | | chdir(self, *args) -> 'dterr_t' | Change current directory | | chdir(self, path) -> dterr_t | @param path: new current directory (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | findfirst(self, *args) -> 'bool' | Start iterating over files in a directory @@ -8259,6 +8539,13 @@ class dirtree_t(builtins.object) | relpath: char const * | @return: path. empty path means wrong directory part of RELPATH | + | get_dir_size(self, *args) -> 'ssize_t' + | Get dir size + | + | get_dir_size(self, diridx) -> ssize_t + | @param diridx: directory index (C++: diridx_t) + | @return: number of entries under this directory; if error, return -1 + | | get_entry_attrs(self, *args) -> 'qstring' | Get entry attributes | @@ -8273,14 +8560,6 @@ class dirtree_t(builtins.object) | @param de: directory entry (C++: const direntry_t &) | @return: name | - | get_entry_size(self, *args) -> 'ssize_t' - | Get entry size - | - | get_entry_size(self, de) -> ssize_t - | @param de: directory entry (C++: const direntry_t &) - | @return: for directories: number of items, for files: item size. if - | error, return -1 - | | get_nodename(self, *args) -> 'char const *' | netnode name | @@ -8332,12 +8611,12 @@ class dirtree_t(builtins.object) | | link(self, path) -> dterr_t | @param path: path to item to add to a directory (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | | link(self, inode) -> dterr_t | inode: inode_t - | @return: dterr_t error code + | @return: dterr_t error code | | load(self, *args) -> 'bool' | Load the tree structure from the netnode. If dirspec_t::nodename is @@ -8350,7 +8629,7 @@ class dirtree_t(builtins.object) | | mkdir(self, path) -> dterr_t | @param path: directory to create (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | notify_dirtree(self, *args) -> 'void' | Notify dirtree about a change of an inode. @@ -8365,7 +8644,7 @@ class dirtree_t(builtins.object) | rename(self, _from, to) -> dterr_t | @param _from: source path (C++: const char *) | @param to: destination path (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | resolve_cursor(self, *args) -> 'direntry_t' | Resolve cursorsee also 'get_abspath()' @@ -8387,7 +8666,7 @@ class dirtree_t(builtins.object) | | rmdir(self, path) -> dterr_t | @param path: directory to delete (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | save(self, *args) -> 'bool' | Save the tree structure to the netnode.dirspec_t::nodename. @@ -8401,12 +8680,12 @@ class dirtree_t(builtins.object) | | unlink(self, path) -> dterr_t | @param path: path to item remove from a directory (C++: const char *) - | @return: dterr_t error code + | @return: dterr_t error code | | | unlink(self, inode) -> dterr_t | inode: inode_t - | @return: dterr_t error code + | @return: dterr_t error code | | ---------------------------------------------------------------------- | Static methods defined here: @@ -9697,7 +9976,7 @@ exec_system_script(*args) -> 'bool' exec_system_script(file, complain_if_no_file=True) -> bool @param file: file name with IDC function(s). The file will be searched - in the idc subdir of ida (C++: const char *) + using get_idc_filename() . (C++: const char *) @param complain_if_no_file: 1: display warning if the file is not found 0: don't complain if file doesn't exist (C++: bool) @@ -9752,7 +10031,7 @@ Help on function get_idc_filename in module ida_expr: get_idc_filename(*args) -> 'char const *' Get full name of IDC file name. Search for file in list of include - directories, IDCPATH directory and the current directory. + directories, IDCPATH directory and system directories. get_idc_filename(file) -> str @param file: file name without full path (C++: const char *) @@ -9904,9 +10183,6 @@ class idc_value_t(builtins.object) | _create_empty_string(self, *args) -> 'void' | _create_empty_string(self) | - | _idc_value_t__get_e = __get_e(self, *args) -> 'wrapped_array_t< ushort,6 >' - | __get_e(self) -> wrapped_array_t< ushort,6 > - | | c_str(self, *args) -> 'char const *' | 'VT_STR' | @@ -9931,7 +10207,7 @@ class idc_value_t(builtins.object) | | set_float(self, *args) -> 'void' | set_float(self, f) - | f: ushort const [6] + | f: fpvalue_t const & | | set_int64(self, *args) -> 'void' | set_int64(self, v) @@ -9973,7 +10249,7 @@ class idc_value_t(builtins.object) | list of weak references to the object (if defined) | | e - | __get_e(self) -> wrapped_array_t< ushort,6 > + | idc_value_t_e_get(self) -> fpvalue_t | | funcidx | idc_value_t_funcidx_get(self) -> int @@ -10724,6 +11000,24 @@ get_prev_fixup_ea(*args) -> 'ea_t' @param ea: current address (C++: ea_t) @return: the previous address with fixup information, or BADADDR +Help on function handle_fixups_in_macro in module ida_fixup: + +handle_fixups_in_macro(*args) -> 'bool' + Handle two fixups in a macro. We often combine two instruction that + load parts of a value into one macro instruction. For example: ARM: + ADRP X0, #var@PAGE ADD X0, X0, #var@PAGEOFF --> ADRL X0, var MIPS: lui + $v0, hi(var) addiu $v0, $v0, lo(var) --> la $v0, var When applying the + fixups that fall inside such a macro, we should convert them to one + refinfo. This function does exactly that. It should be called from the + apply() callback of a custom fixup. + + handle_fixups_in_macro(ri, ea, other, macro_reft_and_flags) -> bool + @param ri (C++: refinfo_t *) + @param ea (C++: ea_t) + @param other (C++: fixup_type_t) + @param macro_reft_and_flags (C++: uint32) + @return: success ('false' means that RI was not changed) + Help on function is_fixup_custom in module ida_fixup: is_fixup_custom(*args) -> 'bool' @@ -11139,6 +11433,12 @@ frame_off_savregs(*args) -> 'ea_t' frame_off_savregs(pfn) -> ea_t @param pfn (C++: const func_t *) +Help on function free_regvar in module ida_frame: + +free_regvar(*args) -> 'void' + free_regvar(v) + @param v (C++: struct regvar_t *) + Help on function get_effective_spd in module ida_frame: get_effective_spd(*args) -> 'sval_t' @@ -11304,12 +11604,17 @@ class regvar_t(ida_range.range_t) | | __init__(self, *args) | __init__(self) -> regvar_t + | r: regvar_t const & | | __repr__ = _swig_repr(self) | | __swig_destroy__ = delete_regvar_t(...) | delete_regvar_t(self) | + | swap(self, *args) -> 'void' + | swap(self, r) + | @param r (C++: regvar_t &) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -12271,6 +12576,12 @@ find_func_bounds(*args) -> 'int' @param flags: Find function bounds flags (C++: int) @return: Find function bounds result codes +Help on function free_regarg in module ida_funcs: + +free_regarg(*args) -> 'void' + free_regarg(v) + @param v (C++: struct regarg_t *) + Help on function func_contains in module ida_funcs: func_contains(*args) -> 'bool' @@ -13159,12 +13470,17 @@ class regarg_t(builtins.object) | | __init__(self, *args) | __init__(self) -> regarg_t + | r: regarg_t const & | | __repr__ = _swig_repr(self) | | __swig_destroy__ = delete_regarg_t(...) | delete_regarg_t(self) | + | swap(self, *args) -> 'void' + | swap(self, r) + | @param r (C++: regarg_t &) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -13566,6 +13882,140 @@ class FlowChart(builtins.object) | | size +Help on class cancellable_graph_t in module ida_gdl: + +class cancellable_graph_t(gdl_graph_t) + | Proxy of C++ cancellable_graph_t class. + | + | Method resolution order: + | cancellable_graph_t + | gdl_graph_t + | builtins.object + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> cancellable_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_cancellable_graph_t(...) + | delete_cancellable_graph_t(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | cancelled + | cancellable_graph_t_cancelled_get(self) -> bool + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Methods inherited from gdl_graph_t: + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + Help on function display_gdl in module ida_gdl: display_gdl(*args) -> 'int' @@ -13577,6 +14027,126 @@ display_gdl(*args) -> 'int' @param fname (C++: const char *) @return: error code from os, 0 if ok +Help on class gdl_graph_t in module ida_gdl: + +class gdl_graph_t(builtins.object) + | Proxy of C++ gdl_graph_t class. + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> gdl_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_gdl_graph_t(...) + | delete_gdl_graph_t(self) + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + Help on function gen_complex_call_chart in module ida_gdl: gen_complex_call_chart(*args) -> 'bool' @@ -13822,9 +14392,15 @@ class qbasic_block_t(ida_range.range_t) Help on class qflow_chart_t in module ida_gdl: -class qflow_chart_t(builtins.object) +class qflow_chart_t(cancellable_graph_t) | Proxy of C++ qflow_chart_t class. | + | Method resolution order: + | qflow_chart_t + | cancellable_graph_t + | gdl_graph_t + | builtins.object + | | Methods defined here: | | __getitem__(self, *args) -> 'qbasic_block_t *' @@ -13868,10 +14444,8 @@ class qflow_chart_t(builtins.object) | @param _flags (C++: int) | | get_node_label(self, *args) -> 'char *' - | get_node_label(self, arg2, arg3, arg4) -> char * - | arg2: char * - | arg3: int - | arg4: int + | get_node_label(self, n) -> char * + | @param n (C++: int) | | is_noret_block(self, *args) -> 'bool' | is_noret_block(self, blknum) -> bool @@ -13898,9 +14472,9 @@ class qflow_chart_t(builtins.object) | print_names(self) -> bool | | print_node_attributes(self, *args) -> 'void' - | print_node_attributes(self, arg2, arg3) - | arg2: FILE * - | arg3: int + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) | | refresh(self, *args) -> 'void' | refresh(self) @@ -13916,12 +14490,6 @@ class qflow_chart_t(builtins.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | bounds | qflow_chart_t_bounds_get(self) -> range_t | @@ -13939,6 +14507,89 @@ class qflow_chart_t(builtins.object) | | title | qflow_chart_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from cancellable_graph_t: + | + | __disown__(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from cancellable_graph_t: + | + | cancelled + | cancellable_graph_t_cancelled_get(self) -> bool + | + | ---------------------------------------------------------------------- + | Methods inherited from gdl_graph_t: + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) === ida_gdl EPYDOC INJECTIONS === ida_gdl.CHART_FOLLOW_DIRECTION @@ -14381,6 +15032,180 @@ class TPointDouble(builtins.object) | | __hash__ = None +Help on class abstract_graph_t in module ida_graph: + +class abstract_graph_t(ida_gdl.gdl_graph_t) + | Proxy of C++ abstract_graph_t class. + | + | Method resolution order: + | abstract_graph_t + | ida_gdl.gdl_graph_t + | builtins.object + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> abstract_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_abstract_graph_t(...) + | delete_abstract_graph_t(self) + | + | create_circle_layout(self, *args) -> 'bool' + | create_circle_layout(self, p, radius) -> bool + | @param p (C++: point_t) + | @param radius (C++: int) + | + | create_tree_layout(self, *args) -> 'bool' + | create_tree_layout(self) -> bool + | + | get_edge(self, *args) -> 'edge_info_t' + | get_edge(self, e) -> edge_info_t + | @param e (C++: edge_t) + | + | grcall(self, *args) -> 'ssize_t' + | grcall(self, code) -> ssize_t + | @param code (C++: int) + | + | nrect(self, *args) -> 'rect_t' + | nrect(self, n) -> rect_t + | @param n (C++: int) + | + | set_callback(self, *args) -> 'void' + | set_callback(self, _callback, _ud) + | @param _callback (C++: hook_cb_t *) + | @param _ud (C++: void *) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | callback_ud + | abstract_graph_t_callback_ud_get(self) -> void * + | + | circle_center + | abstract_graph_t_circle_center_get(self) -> point_t + | + | circle_radius + | abstract_graph_t_circle_radius_get(self) -> int + | + | current_layout + | abstract_graph_t_current_layout_get(self) -> layout_type_t + | + | rect_edges_made + | abstract_graph_t_rect_edges_made_get(self) -> bool + | + | thisown + | The membership flag + | + | title + | abstract_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + Help on function calc_dist in module ida_graph: calc_dist(*args) -> 'double' @@ -15028,61 +15853,98 @@ class interval_t(builtins.object) Help on class mutable_graph_t in module ida_graph: -class mutable_graph_t(builtins.object) +class mutable_graph_t(abstract_graph_t) | Proxy of C++ mutable_graph_t class. | + | Method resolution order: + | mutable_graph_t + | abstract_graph_t + | ida_gdl.gdl_graph_t + | builtins.object + | | Methods defined here: | - | __disown__(self) - | | __init__(self, *args, **kwargs) - | Initialize self. See help(type(self)) for accurate signature. + | __init__(self) -> abstract_graph_t + | self: PyObject * | | __repr__ = _swig_repr(self) | | __swig_destroy__ = delete_mutable_graph_t(...) | delete_mutable_graph_t(self) | + | add_edge(self, *args) -> 'bool' + | add_edge(self, i, j, ei) -> bool + | @param i (C++: int) + | @param j (C++: int) + | @param ei (C++: const edge_info_t *) + | + | add_node(self, *args) -> 'int' + | Add a node, possibly with a specific geometry + | + | add_node(self, r) -> int + | @param r: the node geometry (can be nullptr) (C++: const rect_t *) + | @return: the new node + | | calc_group_ea(self, *args) -> 'ea_t' - | calc_group_ea(self, arg0) -> ea_t - | arg0: intvec_t const & + | calc_group_ea(self, arg2) -> ea_t + | arg2: intvec_t const & | | change_group_visibility(self, *args) -> 'bool' + | Expand/collapse a group node + | | change_group_visibility(self, group, expand) -> bool - | @param group (C++: int) - | @param expand (C++: bool) - | - | clear(self, *args) -> 'void' - | clear(self) + | @param group: the group node (C++: int) + | @param expand: whether to expand or collapse (C++: bool) + | @return: success | | create_digraph_layout(self, *args) -> 'bool' | create_digraph_layout(self) -> bool | | create_group(self, *args) -> 'int' + | Create a new group node, that will contain all the nodes in 'nodes'. + | | create_group(self, nodes) -> int - | @param nodes (C++: const intvec_t &) + | @param nodes: the nodes that will be part of the group (C++: const + | intvec_t &) + | @return: the group node, or -1 in case of error | | del_custom_layout(self, *args) -> 'void' | del_custom_layout(self) | + | del_edge(self, *args) -> 'bool' + | del_edge(self, i, j) -> bool + | @param i (C++: int) + | @param j (C++: int) + | + | del_node(self, *args) -> 'ssize_t' + | Delete a node + | + | del_node(self, n) -> ssize_t + | @param n: the node to delete (C++: int) + | @return: the number of deleted edges + | | delete_group(self, *args) -> 'bool' + | Delete a group node.This deletes the group node only; it does not + | delete nodes that are part of the group. + | | delete_group(self, group) -> bool - | @param group (C++: int) + | @param group: the group node (C++: int) + | @return: success | | empty(self, *args) -> 'bool' - | empty(self) -> bool + | Is the graph (visually) empty? | | exists(self, *args) -> 'bool' + | Is the node visible? + | | exists(self, node) -> bool - | @param node (C++: int) + | @param node: the node number (C++: int) + | @return: success | | get_custom_layout(self, *args) -> 'bool' | get_custom_layout(self) -> bool | - | get_edge(self, *args) -> 'edge_info_t' - | get_edge(self, e) -> edge_info_t - | @param e (C++: edge_t) - | | get_first_subgraph_node(self, *args) -> 'int' | get_first_subgraph_node(self, group) -> int | @param group (C++: int) @@ -15100,8 +15962,15 @@ class mutable_graph_t(builtins.object) | @param node (C++: int) | | get_node_representative(self, *args) -> 'int' + | Get the node that currently visually represents 'node'. This will find + | the "closest" parent group node that's visible, by attempting to walk + | up the group nodes that contain 'node', and will stop when it finds a + | node that is currently visible.See also get_group_node() + | | get_node_representative(self, node) -> int - | @param node (C++: int) + | @param node: the node (C++: int) + | @return: the node that represents 'node', or 'node' if it's not part + | of any group | | is_collapsed_node(self, *args) -> 'bool' | is_collapsed_node(self, node) -> bool @@ -15139,24 +16008,21 @@ class mutable_graph_t(builtins.object) | is_user_graph(self) -> bool | | is_visible_node(self, *args) -> 'bool' + | Is the node currently visible?An invisible node is a node that's part + | of a group that's currently collapsed. + | | is_visible_node(self, node) -> bool - | @param node (C++: int) + | @param node: the node (C++: int) + | @return: success | | node_qty(self, *args) -> 'int' - | node_qty(self) -> int + | Get the number of visible nodes (the list can be retrieved using + | 'gdl.hpp' 's 'node_iterator' )See also size() | | npred(self, *args) -> 'int' | npred(self, b) -> int | @param b (C++: int) | - | nrect(self, *args) -> 'rect_t &' - | nrect(self, n) -> rect_t - | @param n (C++: int) - | - | - | nrect(self, n) -> rect_t - | @param n (C++: int) - | | nsucc(self, *args) -> 'int' | nsucc(self, b) -> int | @param b (C++: int) @@ -15170,9 +16036,38 @@ class mutable_graph_t(builtins.object) | predset(self, b) -> intvec_t const & | @param b (C++: int) | + | redo_layout(self, *args) -> 'bool' + | Recompute the layout, according to the value of 'current_layout'. + | + | refresh(self, *args) -> 'bool' + | Refresh the graphA graph needs refreshing when it's "backing data". + | E.g., if the number (or contents) of the objects in the above example, + | change.Let's say the user's plugin ends up finding a 5th piece of + | scattered data. It should then add it to its internal list of known + | objects, and tell IDA that the graph needs to be refreshed, using + | 'refresh_viewer()' . This will cause IDA to:discard all its internal + | rendering information,call 'mutable_graph_t::refresh()' on the graph + | so that the user's plugin has a chance to "sync" the number of nodes & + | edges that this graph contains, to the information that the plugin has + | collected so farre-create internal rendering information, andrepaint + | the view + | + | replace_edge(self, *args) -> 'bool' + | replace_edge(self, i, j, x, y) -> bool + | @param i (C++: int) + | @param j (C++: int) + | @param x (C++: int) + | @param y (C++: int) + | | reset(self, *args) -> 'void' | reset(self) | + | resize(self, *args) -> 'void' + | Resize the graph to 'n' nodes + | + | resize(self, n) + | @param n: the new size (C++: int) + | | set_custom_layout(self, *args) -> 'void' | set_custom_layout(self) | @@ -15193,8 +16088,14 @@ class mutable_graph_t(builtins.object) | @param node (C++: int) | @param group (C++: int) | + | set_nrect(self, *args) -> 'bool' + | set_nrect(self, n, r) -> bool + | @param n (C++: int) + | @param r (C++: const rect_t &) + | | size(self, *args) -> 'int' - | size(self) -> int + | Get the total number of nodes (including group nodes, and including + | hidden nodes.)See also node_qty() | | succ(self, *args) -> 'int' | succ(self, b, i) -> int @@ -15208,12 +16109,6 @@ class mutable_graph_t(builtins.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | belongs | mutable_graph_t_belongs_get(self) -> intvec_t * | @@ -15230,19 +16125,141 @@ class mutable_graph_t(builtins.object) | mutable_graph_t_nodes_get(self) -> node_layout_t | | org_preds - | mutable_graph_t_org_preds_get(self) -> array_of_intvec_t + | mutable_graph_t_org_preds_get(self) -> array_of_intvec_t * | | org_succs - | mutable_graph_t_org_succs_get(self) -> array_of_intvec_t + | mutable_graph_t_org_succs_get(self) -> array_of_intvec_t * | | preds - | mutable_graph_t_preds_get(self) -> array_of_intvec_t + | mutable_graph_t_preds_get(self) -> array_of_intvec_t * | | succs - | mutable_graph_t_succs_get(self) -> array_of_intvec_t + | mutable_graph_t_succs_get(self) -> array_of_intvec_t * | | thisown | The membership flag + | + | ---------------------------------------------------------------------- + | Methods inherited from abstract_graph_t: + | + | __disown__(self) + | + | create_circle_layout(self, *args) -> 'bool' + | create_circle_layout(self, p, radius) -> bool + | @param p (C++: point_t) + | @param radius (C++: int) + | + | create_tree_layout(self, *args) -> 'bool' + | create_tree_layout(self) -> bool + | + | get_edge(self, *args) -> 'edge_info_t' + | get_edge(self, e) -> edge_info_t + | @param e (C++: edge_t) + | + | grcall(self, *args) -> 'ssize_t' + | grcall(self, code) -> ssize_t + | @param code (C++: int) + | + | nrect(self, *args) -> 'rect_t' + | nrect(self, n) -> rect_t + | @param n (C++: int) + | + | set_callback(self, *args) -> 'void' + | set_callback(self, _callback, _ud) + | @param _callback (C++: hook_cb_t *) + | @param _ud (C++: void *) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from abstract_graph_t: + | + | callback_ud + | abstract_graph_t_callback_ud_get(self) -> void * + | + | circle_center + | abstract_graph_t_circle_center_get(self) -> point_t + | + | circle_radius + | abstract_graph_t_circle_radius_get(self) -> int + | + | current_layout + | abstract_graph_t_current_layout_get(self) -> layout_type_t + | + | rect_edges_made + | abstract_graph_t_rect_edges_made_get(self) -> bool + | + | title + | abstract_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on class node_info_t in module ida_graph: @@ -15485,10 +16502,18 @@ class node_ordering_t(builtins.object) | clear(self, *args) -> 'void' | clear(self) | + | clr(self, *args) -> 'bool' + | clr(self, _node) -> bool + | @param _node (C++: int) + | | node(self, *args) -> 'int' | node(self, _order) -> int | @param _order (C++: size_t) | + | order(self, *args) -> 'int' + | order(self, _node) -> int + | @param _node (C++: int) + | | resize(self, *args) -> 'void' | resize(self, n) | @param n (C++: int) @@ -16595,7 +17620,7 @@ Help on function viewer_create_groups in module ida_graph: viewer_create_groups(*args) -> 'bool' This will perform an operation similar to what happens when a user manually selects a set of nodes, right-clicks and selects "Create - group". This is a wrapper around mutable_graph_t::create_group that + group". This is a wrapper around 'mutable_graph_t::create_group' that will, in essence:clone the current graphfor each 'group_crinfo_t' , attempt creating group in that new graphif all were successful, animate to that new graph.this accepts parameters that allow creating @@ -16619,9 +17644,9 @@ viewer_del_node_info(*args) -> 'void' Help on function viewer_delete_groups in module ida_graph: viewer_delete_groups(*args) -> 'bool' - Wrapper around mutable_graph_t::delete_group. This function will:clone - the current graphattempt deleting the groups in that new graphif - successful, animate to that new graph. + Wrapper around 'mutable_graph_t::delete_group' . This function + will:clone the current graphattempt deleting the groups in that new + graphif successful, animate to that new graph. viewer_delete_groups(gv, groups, new_current=-1) -> bool @param gv (C++: graph_viewer_t *) @@ -16690,7 +17715,7 @@ viewer_set_gli(*args) -> 'void' Help on function viewer_set_groups_visibility in module ida_graph: viewer_set_groups_visibility(*args) -> 'bool' - Wrapper around mutable_graph_t::change_visibility. This function + Wrapper around 'mutable_graph_t::change_visibility' . This function will:clone the current graphattempt changing visibility of the groups in that new graphif successful, animate to that new graph. @@ -16861,6 +17886,17 @@ class Hexrays_Hooks(builtins.object) | __swig_destroy__ = delete_Hexrays_Hooks(...) | delete_Hexrays_Hooks(self) | + | build_callinfo(self, *args) -> 'int' + | Analyzing a call instruction. + | + | build_callinfo(self, blk, type, callinfo) -> int + | @param blk: blk->tail is the call. (C++: mblock_t *) + | @param type: buffer for the output type. (C++: tinfo_t *) + | @param callinfo: prepared callinfo. Should return: 1 if the function + | type has been determined. The plugin should either + | specify the function type, either allocate and return + | a new mcallinfo_t object. (C++: mcallinfo_t **) + | | close_pseudocode(self, *args) -> 'int' | Pseudocode view is being closed. | @@ -16884,10 +17920,12 @@ class Hexrays_Hooks(builtins.object) | a preceding one (C++: minsn_t *) | | create_hint(self, *args) -> 'PyObject *' - | Create a hint for the current item. + | Create a hint for the current item. 'ui_get_custom_viewer_hint' | | create_hint(self, vu) -> PyObject * | @param vu (C++: vdui_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | curpos(self, *args) -> 'int' | Current cursor position has been changed. (for example, by left- @@ -16915,7 +17953,8 @@ class Hexrays_Hooks(builtins.object) | | func_printed(self, *args) -> 'int' | Function text has been generated. Plugins may modify the text in - | 'cfunc_t::sv' . + | 'cfunc_t::sv' . The text uses regular color codes (see 'lines.hpp' ) + | COLOR_ADDR is used to store pointers to ctree elements. | | func_printed(self, cfunc) -> int | @param cfunc (C++: cfunc_t *) @@ -17038,7 +18077,8 @@ class Hexrays_Hooks(builtins.object) | | print_func(self, cfunc, vp) -> int | @param cfunc (C++: cfunc_t *) - | @param vp: Returns: 1 if text has been generated by the plugin (C++: + | @param vp: Returns: 1 if text has been generated by the plugin It is + | forbidden to modify ctree at this event. (C++: | vc_printer_t *) | | prolog(self, *args) -> 'int' @@ -17096,9 +18136,9 @@ class Hexrays_Hooks(builtins.object) | Decompiled text is ready. | | text_ready(self, vu) -> int - | @param vu: This event can be used to modify the output text (sv). The - | text uses regular color codes (see lines.hpp) COLOR_ADDR is - | used to store pointers to ctree elements (C++: vdui_t *) + | @param vu: This event can be used to modify the output text (sv). + | Obsolete. Please use hxe_func_printed instead. (C++: + | vdui_t *) | | unhook(self, *args) -> 'bool' | unhook(self) -> bool @@ -17138,10 +18178,12 @@ class __cbhooks_t(Hexrays_Hooks) | @param vu (C++: vdui_t *) | | create_hint(self, *args) - | Create a hint for the current item. + | Create a hint for the current item. 'ui_get_custom_viewer_hint' | | create_hint(self, vu) -> PyObject * | @param vu (C++: vdui_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | curpos(self, *args) | Current cursor position has been changed. (for example, by left- @@ -17160,7 +18202,8 @@ class __cbhooks_t(Hexrays_Hooks) | | func_printed(self, *args) | Function text has been generated. Plugins may modify the text in - | 'cfunc_t::sv' . + | 'cfunc_t::sv' . The text uses regular color codes (see 'lines.hpp' ) + | COLOR_ADDR is used to store pointers to ctree elements. | | func_printed(self, cfunc) -> int | @param cfunc (C++: cfunc_t *) @@ -17206,7 +18249,8 @@ class __cbhooks_t(Hexrays_Hooks) | | print_func(self, cfunc, vp) -> int | @param cfunc (C++: cfunc_t *) - | @param vp: Returns: 1 if text has been generated by the plugin (C++: + | @param vp: Returns: 1 if text has been generated by the plugin It is + | forbidden to modify ctree at this event. (C++: | vc_printer_t *) | | refresh_pseudocode(self, *args) @@ -17236,9 +18280,9 @@ class __cbhooks_t(Hexrays_Hooks) | Decompiled text is ready. | | text_ready(self, vu) -> int - | @param vu: This event can be used to modify the output text (sv). The - | text uses regular color codes (see lines.hpp) COLOR_ADDR is - | used to store pointers to ctree elements (C++: vdui_t *) + | @param vu: This event can be used to modify the output text (sv). + | Obsolete. Please use hxe_func_printed instead. (C++: + | vdui_t *) | | ---------------------------------------------------------------------- | Data and other attributes defined here: @@ -17255,6 +18299,17 @@ class __cbhooks_t(Hexrays_Hooks) | __swig_destroy__ = delete_Hexrays_Hooks(...) | delete_Hexrays_Hooks(self) | + | build_callinfo(self, *args) -> 'int' + | Analyzing a call instruction. + | + | build_callinfo(self, blk, type, callinfo) -> int + | @param blk: blk->tail is the call. (C++: mblock_t *) + | @param type: buffer for the output type. (C++: tinfo_t *) + | @param callinfo: prepared callinfo. Should return: 1 if the function + | type has been determined. The plugin should either + | specify the function type, either allocate and return + | a new mcallinfo_t object. (C++: mcallinfo_t **) + | | cmt_changed(self, *args) -> 'int' | Comment got changed. | @@ -22120,7 +23175,8 @@ class chain_t(ida_pro.intvec_t) | append_list(self, *args) -> 'void' | Append the contents of the chain to the specified list of locations. | - | append_list(self, list) + | append_list(self, mba, list) + | @param mba (C++: const mba_t *) | @param list (C++: mlist_t *) | | clear_varnum(self, *args) -> 'void' @@ -23488,18 +24544,44 @@ class codegen_t(builtins.object) | gen_micro(self, *args) -> 'merror_t' | Generate microcode for one instruction. The instruction is in INSN | + | load_effective_address(self, *args) -> 'mreg_t' + | Generate microcode to calculate the address of a memory operand. + | + | load_effective_address(self, n, flags=0) -> mreg_t + | @param n: - number of INSN operand (C++: int) + | @param flags: - reserved for future use (C++: int) + | @return: register containing the operand address. mr_none - failed + | (not a memory operand) + | | load_operand(self, *args) -> 'mreg_t' | Generate microcode to load one operand. | - | load_operand(self, opnum) -> mreg_t + | load_operand(self, opnum, flags=0) -> mreg_t | @param opnum (C++: int) + | @param flags: - reserved for future use (C++: int) + | @return: register containing the operand. | | microgen_completed(self, *args) -> 'void' | This method is called when the microcode generation is done. | | prepare_gen_micro(self, *args) -> 'merror_t' - | Setup internal data to handle new instruction This method should be - | called before calling 'gen_micro()' The instruction is in INSN + | Setup internal data to handle new instruction. This method should be + | called before calling 'gen_micro()' . Usually 'gen_micro()' is called + | by the decompiler. You have to call this function explicitly only if + | you yourself call 'gen_micro()' . The instruction is in INSN + | + | store_operand(self, *args) -> 'bool' + | Generate microcode to store an operand. In case of success an + | arbitrary number of instructions can be generated (and even no + | instruction if the source and target are the same) + | + | store_operand(self, n, mop, flags=0, outins=None) -> bool + | @param n: - number of target INSN operand (C++: int) + | @param mop: - operand to be stored (C++: const mop_t &) + | @param flags: - reserved for future use (C++: int) + | @param outins: - (OUT) the last generated instruction (C++: minsn_t + | **) + | @return: success | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -23539,6 +24621,15 @@ convert_to_user_call(*args) -> 'merror_t' @return: Microcode error codes code: MERR_OK - user-defined call generated else - error (MERR_INSN == inacceptable udc.tif) +Help on function create_cfunc in module ida_hexrays: + +create_cfunc(*args) -> 'cfuncptr_t' + Create a new 'cfunc_t' object. + + create_cfunc(mba) -> cfuncptr_t + @param mba: microcode object. After creating the cfunc object it takes + the ownership of MBA. (C++: mba_t *) + Help on function create_field_name in module ida_hexrays: create_field_name(*args) -> 'qstring' @@ -24464,7 +25555,8 @@ class cwhile_t(cloop_t) Help on function debug_hexrays_ctree in module ida_hexrays: debug_hexrays_ctree(*args) -> 'void' - debug_hexrays_ctree(msg) + debug_hexrays_ctree(level, msg) + level: int msg: char const * Help on function decompile in module ida_hexrays: @@ -24863,62 +25955,6 @@ class eamap_t(builtins.object) | valuetype = | Proxy of C++ qvector< cinsn_t * > class. -Help on class fnum_array in module ida_hexrays: - -class fnum_array(builtins.object) - | Proxy of C++ wrapped_array_t< uint16,6 > class. - | - | Methods defined here: - | - | __getitem__(self, *args) -> 'unsigned short const &' - | __getitem__(self, i) -> unsigned short const & - | i: size_t - | - | __init__(self, *args) - | __init__(self, data) -> fnum_array - | data: unsigned short (&)[6] - | - | __iter__ = _bounded_getitem_iterator(self) - | Helper function, to be set as __iter__ method for qvector-, or array-based classes. - | - | __len__(self, *args) -> 'size_t' - | __len__(self) -> size_t - | - | __repr__ = _swig_repr(self) - | - | __setitem__(self, *args) -> 'void' - | __setitem__(self, i, v) - | i: size_t - | v: unsigned short const & - | - | __swig_destroy__ = delete_fnum_array(...) - | delete_fnum_array(self) - | - | _get_bytes(self, *args) -> 'bytevec_t' - | _get_bytes(self) -> bytevec_t - | - | _set_bytes(self, *args) -> 'void' - | _set_bytes(self, bts) - | bts: bytevec_t const & - | - | ---------------------------------------------------------------------- - | Data descriptors defined here: - | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | - | bytes - | _get_bytes(self) -> bytevec_t - | - | data - | fnum_array_data_get(self) -> unsigned short (&)[6] - | - | thisown - | The membership flag - Help on class fnumber_t in module ida_hexrays: class fnumber_t(builtins.object) @@ -24958,9 +25994,6 @@ class fnumber_t(builtins.object) | __swig_destroy__ = delete_fnumber_t(...) | delete_fnumber_t(self) | - | _fnumber_t__get_fnum = __get_fnum(self, *args) -> 'wrapped_array_t< uint16,6 >' - | __get_fnum(self) -> fnum_array - | | _print(self, *args) -> 'void' | _print(self) | @@ -24984,7 +26017,7 @@ class fnumber_t(builtins.object) | list of weak references to the object (if defined) | | fnum - | __get_fnum(self) -> fnum_array + | fnumber_t_fnum_get(self) -> fpvalue_t | | nbytes | fnumber_t_nbytes_get(self) -> int @@ -25020,6 +26053,10 @@ class gco_info_t(builtins.object) | @param list: list to append to (C++: mlist_t *) | @param mba: microcode object (C++: const mba_t *) | + | cvt_to_ivl(self, *args) -> 'vivl_t' + | Convert operand info to VIVL. The returned VIVL can be used, for + | example, in a call of get_valranges(). + | | is_def(self, *args) -> 'bool' | is_def(self) -> bool | @@ -25974,14 +27011,13 @@ class history_t(qvector_history_t) Help on function init_hexrays_plugin in module ida_hexrays: init_hexrays_plugin(*args) -> 'bool' - 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. + Check that your plugin is compatible with hex-rays decompiler. This + function must be called before calling any other decompiler function. init_hexrays_plugin(flags=0) -> bool @param flags: reserved, must be 0 (C++: int) - @return: true if the decompiler exists and the dispatcher pointer is - ready to use. + @return: true if the decompiler exists and is compatible with your + plugin Help on function install_hexrays_callback in module ida_hexrays: @@ -26672,6 +27708,19 @@ Help on function lnot in module ida_hexrays: lnot(e) +Help on function locate_lvar in module ida_hexrays: + +locate_lvar(*args) -> 'bool' + Find a variable by name. + + locate_lvar(out, func_ea, varname) -> bool + @param out: output buffer for the variable locator (C++: + lvar_locator_t *) + @param func_ea: function start address (C++: ea_t) + @param varname: variable name (C++: const char *) + @return: success Since VARNAME is not always enough to find the + variable, it may decompile the function. + Help on class lvar_locator_t in module ida_hexrays: class lvar_locator_t(builtins.object) @@ -27068,6 +28117,9 @@ class lvar_saved_info_t(builtins.object) | clr_noptr_lvar(self, *args) -> 'void' | clr_noptr_lvar(self) | + | clr_unused_lvar(self, *args) -> 'void' + | clr_unused_lvar(self) + | | has_info(self, *args) -> 'bool' | has_info(self) -> bool | @@ -27083,6 +28135,9 @@ class lvar_saved_info_t(builtins.object) | is_noptr_lvar(self, *args) -> 'bool' | is_noptr_lvar(self) -> bool | + | is_unused_lvar(self, *args) -> 'bool' + | is_unused_lvar(self) -> bool + | | set_forced_lvar(self, *args) -> 'void' | set_forced_lvar(self) | @@ -27095,6 +28150,9 @@ class lvar_saved_info_t(builtins.object) | set_noptr_lvar(self, *args) -> 'void' | set_noptr_lvar(self) | + | set_unused_lvar(self, *args) -> 'void' + | set_unused_lvar(self) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -27324,7 +28382,8 @@ class lvar_t(lvar_locator_t) | append_list(self, *args) -> 'void' | Append local variable to mlist. | - | append_list(self, lst, pad_if_scattered=False) + | append_list(self, mba, lst, pad_if_scattered=False) + | @param mba: ptr to the current mba_t (C++: const mba_t *) | @param lst: list to append to (C++: mlist_t *) | @param pad_if_scattered (C++: bool) | @@ -27337,6 +28396,9 @@ class lvar_t(lvar_locator_t) | clr_automapped(self, *args) -> 'void' | clr_automapped(self) | + | clr_decl_unused(self, *args) -> 'void' + | clr_decl_unused(self) + | | clr_dummy_arg(self, *args) -> 'void' | clr_dummy_arg(self) | @@ -27401,6 +28463,9 @@ class lvar_t(lvar_locator_t) | has_regname(self, *args) -> 'bool' | Has a register name? (like _RAX) | + | in_asm(self, *args) -> 'bool' + | Is variable used in an instruction translated into __asm? + | | is_aliasable(self, *args) -> 'bool' | Is the variable aliasable? | @@ -27412,6 +28477,9 @@ class lvar_t(lvar_locator_t) | is_automapped(self, *args) -> 'bool' | Was the variable automatically mapped to another variable? | + | is_decl_unused(self, *args) -> 'bool' + | Was declared as __unused by the user? See CVAR_UNUSED. + | | is_dummy_arg(self, *args) -> 'bool' | Is a dummy argument (added to fill a hole in the argument list) | @@ -27436,6 +28504,9 @@ class lvar_t(lvar_locator_t) | set_automapped(self, *args) -> 'void' | set_automapped(self) | + | set_decl_unused(self, *args) -> 'void' + | set_decl_unused(self) + | | set_dummy_arg(self, *args) -> 'void' | set_dummy_arg(self) | @@ -27688,6 +28759,9 @@ class lvar_uservec_t(builtins.object) | clear(self, *args) -> 'void' | clear(self) | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | | find_info(self, *args) -> 'lvar_saved_info_t *' | find saved user settings for given var | @@ -28182,7 +29256,7 @@ class mba_t(builtins.object) | | combine_blocks(self, *args) -> 'bool' | Combine blocks. This function merges blocks constituting linear flow. - | It calls 'remove_empty_blocks()' as well. + | It calls 'remove_empty_and_unreachable_blocks()' as well. | | common_stkvars_stkargs(self, *args) -> 'bool' | common_stkvars_stkargs(self) -> bool @@ -28199,6 +29273,23 @@ class mba_t(builtins.object) | (C++: int) | @return: pointer to the new copy | + | create_helper_call(self, *args) -> 'minsn_t *' + | Create a call of a helper function. + | + | create_helper_call(self, ea, helper, rettype=None, callargs=None, out=None) -> minsn_t + | @param ea: The desired address of the instruction (C++: ea_t) + | @param helper: The helper name (C++: const char *) + | @param rettype: The return type (NULL or empty type means 'void') + | (C++: const tinfo_t *) + | @param callargs: The helper arguments (NULL-no arguments) (C++: const + | mcallargs_t *) + | @param out: The operand where the call result should be stored. If + | this argument is not NULL, "mov helper_call(), out" will + | be generated. Otherwise "call helper()" will be generated. + | Note: the size of this operand must be equal to the + | RETTYPE size (C++: const mop_t *) + | @return: pointer to the created instruction or NULL if error + | | deleted_pairs(self, *args) -> 'bool' | deleted_pairs(self) -> bool | @@ -28325,6 +29416,9 @@ class mba_t(builtins.object) | has_passregs(self, *args) -> 'bool' | has_passregs(self) -> bool | + | has_stack_retval(self, *args) -> 'bool' + | has_stack_retval(self) -> bool + | | idaloc2vd(self, *args) -> 'vdloc_t' | idaloc2vd(self, loc, width) -> vdloc_t | @param loc (C++: const argloc_t &) @@ -28430,8 +29524,9 @@ class mba_t(builtins.object) | @return: true if at least one of the other blocks became empty or | unreachable | - | remove_empty_blocks(self, *args) -> 'bool' - | Delete all empty blocks. + | remove_empty_and_unreachable_blocks(self, *args) -> 'bool' + | Delete all empty and unreachable blocks. Blocks marked with MBL_KEEP + | won't be deleted. | | returns_fpval(self, *args) -> 'bool' | returns_fpval(self) -> bool @@ -28451,6 +29546,15 @@ class mba_t(builtins.object) | serialize(self, *args) -> 'void' | Serialize mbl array into a sequence of bytes. | + | set_maturity(self, *args) -> 'bool' + | Set maturity level. + | + | set_maturity(self, mat) -> bool + | @param mat (C++: mba_maturity_t) + | @return: true if it is time to stop analysis Plugins may use this + | function to skip some parts of the analysis. The maturity + | level cannot be decreased. + | | set_mba_flags(self, *args) -> 'void' | set_mba_flags(self, f) | @param f (C++: int) @@ -28550,6 +29654,9 @@ class mba_t(builtins.object) | consumed_argregs | mba_t_consumed_argregs_get(self) -> rlist_t | + | deprecated_idb_node + | mba_t_deprecated_idb_node_get(self) -> netnode + | | entry_ea | mba_t_entry_ea_get(self) -> ea_t | @@ -28584,7 +29691,6 @@ class mba_t(builtins.object) | mba_t_gotoff_stkvars_get(self) -> ivlset_t | | idb_node - | mba_t_idb_node_get(self) -> netnode | | idb_spoiled | mba_t_idb_spoiled_get(self) -> reginfovec_t @@ -28687,12 +29793,14 @@ class mbl_graph_t(simple_graph_t) | Method resolution order: | mbl_graph_t | simple_graph_t + | ida_gdl.gdl_graph_t | builtins.object | | Methods defined here: | | __init__(self, *args, **kwargs) - | Initialize self. See help(type(self)) for accurate signature. + | __init__(self) -> gdl_graph_t + | self: PyObject * | | __repr__ = _swig_repr(self) | @@ -28758,17 +29866,118 @@ class mbl_graph_t(simple_graph_t) | ---------------------------------------------------------------------- | Data descriptors inherited from simple_graph_t: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | colored_gdl_edges | simple_graph_t_colored_gdl_edges_get(self) -> bool | | title | simple_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | __disown__(self) + | + | __swig_destroy__ = delete_gdl_graph_t(...) + | delete_gdl_graph_t(self) + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on class mblock_t in module ida_hexrays: @@ -28959,7 +30168,7 @@ class mblock_t(builtins.object) | @return: zero or the value returned by mmv.visit_mop() | | get_reginsn_qty(self, *args) -> 'size_t' - | Calculate number of register instructions in the block. Assertions are + | Calculate number of regular instructions in the block. Assertions are | skipped by this function. | | get_valranges(self, *args) -> 'bool' @@ -29278,6 +30487,9 @@ class mcallarg_t(mop_t) | ea | mcallarg_t_ea_get(self) -> ea_t | + | flags + | mcallarg_t_flags_get(self) -> uint32 + | | name | mcallarg_t_name_get(self) -> qstring * | @@ -29617,7 +30829,8 @@ class mcallarg_t(mop_t) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) -> 'bool' @@ -29764,6 +30977,9 @@ class mcallarg_t(mop_t) | is_one(self, *args) -> 'bool' | is_one(self) -> bool | + | is_pcval(self, *args) -> 'bool' + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) -> 'bool' | is_positive_constant(self) -> bool | @@ -29911,6 +31127,11 @@ class mcallarg_t(mop_t) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) -> 'void' + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) -> 'bool' | Is it possible for the operand to use aliased memory? | @@ -29970,6 +31191,10 @@ class mcallarg_t(mop_t) | unsigned_value(self, *args) -> 'uint64' | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) -> 'void' + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) -> 'uint64' | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -30698,9 +31923,8 @@ class minsn_t(builtins.object) | is_noret_call(self, *args) -> 'bool' | Is a non-returing call? | - | is_noret_call(self, ignore_noret_icall=False) -> bool - | @param ignore_noret_icall: if set, indirect calls to noret functions - | will return false (C++: bool) + | is_noret_call(self, flags=0) -> bool + | @param flags (C++: int) | | is_optional(self, *args) -> 'bool' | is_optional(self) -> bool @@ -31227,7 +32451,7 @@ modify_user_lvar_info(*args) -> 'bool' Modify saved local variable settings of one variable. modify_user_lvar_info(func_ea, mli_flags, info) -> bool - @param func_ea (C++: ea_t) + @param func_ea: function start address (C++: ea_t) @param mli_flags: bits that specify which attrs defined by INFO are to be set (C++: uint) @param info: local variable info attrs (C++: const lvar_saved_info_t @@ -31621,7 +32845,8 @@ class mop_addr_t(mop_t) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) -> 'bool' @@ -31771,6 +32996,9 @@ class mop_addr_t(mop_t) | is_one(self, *args) -> 'bool' | is_one(self) -> bool | + | is_pcval(self, *args) -> 'bool' + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) -> 'bool' | is_positive_constant(self) -> bool | @@ -31914,6 +33142,11 @@ class mop_addr_t(mop_t) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) -> 'void' + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) -> 'bool' | Is it possible for the operand to use aliased memory? | @@ -31973,6 +33206,10 @@ class mop_addr_t(mop_t) | unsigned_value(self, *args) -> 'uint64' | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) -> 'void' + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) -> 'uint64' | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -32430,7 +33667,8 @@ class mop_t(builtins.object) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) -> 'bool' @@ -32580,6 +33818,9 @@ class mop_t(builtins.object) | is_one(self, *args) -> 'bool' | is_one(self) -> bool | + | is_pcval(self, *args) -> 'bool' + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) -> 'bool' | is_positive_constant(self) -> bool | @@ -32727,6 +33968,11 @@ class mop_t(builtins.object) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) -> 'void' + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) -> 'bool' | Is it possible for the operand to use aliased memory? | @@ -32786,6 +34032,10 @@ class mop_t(builtins.object) | unsigned_value(self, *args) -> 'uint64' | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) -> 'void' + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) -> 'uint64' | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -33353,48 +34603,6 @@ class operand_locator_t(builtins.object) | | __hash__ = None -Help on class operator_info_t in module ida_hexrays: - -class operator_info_t(builtins.object) - | Proxy of C++ operator_info_t class. - | - | Methods defined here: - | - | __init__(self, *args) - | __init__(self) -> operator_info_t - | - | __repr__ = _swig_repr(self) - | - | __swig_destroy__ = delete_operator_info_t(...) - | delete_operator_info_t(self) - | - | ---------------------------------------------------------------------- - | Data descriptors defined here: - | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | - | fixtype - | operator_info_t_fixtype_get(self) -> uchar - | - | flags - | operator_info_t_flags_get(self) -> uchar - | - | precedence - | operator_info_t_precedence_get(self) -> uchar - | - | text - | operator_info_t_text_get(self) -> char const * - | - | thisown - | The membership flag - | - | valency - | operator_info_t_valency_get(self) -> uchar - Help on class optblock_t in module ida_hexrays: class optblock_t(builtins.object) @@ -34476,6 +35684,18 @@ Help on function remove_hexrays_callback in module ida_hexrays: remove_hexrays_callback(callback) Deprecated. Please use Hexrays_Hooks instead +Help on function rename_lvar in module ida_hexrays: + +rename_lvar(*args) -> 'bool' + Rename a local variable. + + rename_lvar(func_ea, oldname, newname) -> bool + @param func_ea: function start address (C++: ea_t) + @param oldname: old name of the variable (C++: const char *) + @param newname: new name of the variable (C++: const char *) + @return: success This is a convenience function. For bulk renaming + consider using modify_user_lvars. + Help on function restore_user_cmts in module ida_hexrays: restore_user_cmts(*args) -> 'user_cmts_t *' @@ -34848,10 +36068,10 @@ class scif_t(vdloc_t) | Methods defined here: | | __init__(self, *args) - | __init__(self, _mba, n, tif) -> scif_t + | __init__(self, _mba, tif, n=None) -> scif_t | _mba: mba_t * - | n: qstring * | tif: tinfo_t * + | n: qstring * | | __repr__ = _swig_repr(self) | @@ -35024,6 +36244,9 @@ class scif_t(vdloc_t) | has_stkoff(self, *args) -> 'bool' | TRUE if argloc has a stack part. | + | in_stack(self, *args) -> 'bool' + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) -> 'bool' | See 'ALOC_NONE' . | @@ -35204,25 +36427,25 @@ set_type(*args) -> 'bool' Help on class simple_graph_t in module ida_hexrays: -class simple_graph_t(builtins.object) +class simple_graph_t(ida_gdl.gdl_graph_t) | Proxy of C++ simple_graph_t class. | + | Method resolution order: + | simple_graph_t + | ida_gdl.gdl_graph_t + | builtins.object + | | Methods defined here: | | __init__(self, *args, **kwargs) - | Initialize self. See help(type(self)) for accurate signature. + | __init__(self) -> gdl_graph_t + | self: PyObject * | | __repr__ = _swig_repr(self) | | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | colored_gdl_edges | simple_graph_t_colored_gdl_edges_get(self) -> bool | @@ -35231,6 +36454,113 @@ class simple_graph_t(builtins.object) | | title | simple_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | __disown__(self) + | + | __swig_destroy__ = delete_gdl_graph_t(...) + | delete_gdl_graph_t(self) + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on class stkvar_ref_t in module ida_hexrays: @@ -37757,6 +39087,9 @@ class var_ref_t(builtins.object) | compare(self, r) -> int | r: var_ref_t const & | + | getv(self, *args) -> 'lvar_t &' + | getv(self) -> lvar_t + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -38148,6 +39481,9 @@ class vdloc_t(ida_typeinf.argloc_t) | has_stkoff(self, *args) -> 'bool' | TRUE if argloc has a stack part. | + | in_stack(self, *args) -> 'bool' + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) -> 'bool' | See 'ALOC_NONE' . | @@ -38262,9 +39598,9 @@ class vdui_t(builtins.object) | | calc_cmt_type(self, *args) -> 'cmt_type_t' | Check if the specified line can have a comment. Due to the coordinate - | system for comments (http://www.hexblog.com/?p=60) some function lines - | cannot have comments. This function checks if a comment can be - | attached to the specified line. + | system for comments: (https://www.hex-rays.com/blog/coordinate-system- + | for-hex-rays) some function lines cannot have comments. This function + | checks if a comment can be attached to the specified line. | | calc_cmt_type(self, lnnum, cmttype) -> cmt_type_t | @param lnnum: line number (0 based) (C++: size_t) @@ -38412,13 +39748,13 @@ class vdui_t(builtins.object) | | rename_lvar(self, *args) -> 'bool' | Rename local variable. This function permanently renames a local - | variable. + | variable.::rename_lvar() | | rename_lvar(self, v, name, is_user_name) -> bool | @param v: pointer to local variable (C++: lvar_t *) | @param name: new variable name (C++: const char *) - | @param is_user_name: use true to save the new name into the database - | (C++: bool) + | @param is_user_name: use true to save the new name into the database. + | use false to delete the saved name. (C++: bool) | @return: false if failed | | rename_strmem(self, *args) -> 'bool' @@ -39104,7 +40440,7 @@ do not use function frame info (only snippet mode) ida_hexrays.DECOMP_NO_HIDE """ -do not hide display waitbox. see close_hexrays_waitboxes() +do not close display waitbox. see close_hexrays_waitboxes() """ ida_hexrays.DECOMP_NO_WAIT @@ -39197,6 +40533,11 @@ ida_hexrays.FCI_DEAD some return registers were determined dead """ +ida_hexrays.FCI_EXPLOCS +""" +all arglocs are specified explicitly +""" + ida_hexrays.FCI_FINAL """ call type is final, should not be changed @@ -39494,6 +40835,11 @@ ida_hexrays.LVINF_NOPTR variable type should not be a pointer """ +ida_hexrays.LVINF_UNUSED +""" +unused argument, corresponds to CVAR_UNUSED +""" + ida_hexrays.MBA_ASRPROP """ assertion have been propagated @@ -39684,6 +41030,11 @@ ida_hexrays.MBL_INCONST inconsistent lists: we are building them """ +ida_hexrays.MBL_KEEP +""" +do not remove even if unreachable +""" + ida_hexrays.MBL_LIST """ use/def lists are ready (not dirty) @@ -39811,7 +41162,9 @@ reuse existing window, only if the ida_hexrays.OPROP_CCFLAGS """ -condition codes register value +else: value of a condition code register (like mr_cc) + +mop_n: a pc-relative value """ ida_hexrays.OPROP_FLOAT @@ -40039,6 +41392,34 @@ class compiler_info_t(builtins.object) | thisown | The membership flag +Help on function delinf in module ida_ida: + +delinf(*args) -> 'bool' + undefine a program specific information + + delinf(tag) -> bool + @param tag: one of inftag_t constants (C++: inftag_t) + @return: success + +Help on function get_dbctx_id in module ida_ida: + +get_dbctx_id(*args) -> 'ssize_t' + Get the current database context ID + +Help on function get_dbctx_qty in module ida_ida: + +get_dbctx_qty(*args) -> 'size_t' + Get number of database contexts + +Help on function getinf_str in module ida_ida: + +getinf_str(*args) -> 'qstring *' + get program specific information (a non-scalar value) + + getinf_str(tag) -> str + @param tag: one of inftag_t constants (C++: inftag_t) + @return: number of bytes stored in the buffer (<0 - not defined) + Help on class idainfo in module ida_ida: class idainfo(builtins.object) @@ -40381,10 +41762,9 @@ Help on function inf_get_pack_mode in module ida_ida: inf_get_pack_mode(*args) -> 'int' inf_get_pack_mode() -> int -Help on function inf_is_32bit in module ida_ida: +Help on function idainfo_is_32bit in module ida_ida: -inf_is_32bit(*args) -> 'bool' - inf_is_32bit() -> bool +idainfo_is_32bit() Help on function inf_is_64bit in module ida_ida: @@ -40743,6 +42123,11 @@ Help on function inf_get_af_low in module ida_ida: inf_get_af_low(*args) -> 'ushort' Get/set low/high 16bit halves of inf.af. +Help on function inf_get_app_bitness in module ida_ida: + +inf_get_app_bitness(*args) -> 'uint' + inf_get_app_bitness() -> uint + Help on function inf_get_appcall_options in module ida_ida: inf_get_appcall_options(*args) -> 'uint32' @@ -41111,6 +42496,21 @@ inf_inc_database_change_count(*args) -> 'void' inf_inc_database_change_count(cnt=1) @param cnt (C++: int) +Help on function inf_is_16bit in module ida_ida: + +inf_is_16bit(*args) -> 'bool' + inf_is_16bit() -> bool + +Help on function inf_is_32bit_exactly in module ida_ida: + +inf_is_32bit_exactly(*args) -> 'bool' + inf_is_32bit_exactly() -> bool + +Help on function inf_is_32bit_or_higher in module ida_ida: + +inf_is_32bit_or_higher(*args) -> 'bool' + inf_is_32bit_or_higher() -> bool + Help on function inf_is_limiter_empty in module ida_ida: inf_is_limiter_empty(*args) -> 'bool' @@ -42279,6 +43679,15 @@ Help on function in module ida_ida: lambda *args +Help on function switch_dbctx in module ida_ida: + +switch_dbctx(*args) -> 'dbctx_t *' + Switch to the database with the provided context ID + + switch_dbctx(idx) -> dbctx_t * + @param idx: the index of the database to switch to (C++: size_t) + @return: the current dbctx_t instance or nullptr + Help on function to_ea in module ida_ida: to_ea(*args) -> 'ea_t' @@ -42317,7 +43726,8 @@ ida_ida.ABI_HUGEARG_ALIGN """ use natural type alignment for an argument even if its alignment exceeds double native word size (the default is to use double word -max). e.g. if this bit is set, __int128 has 16-byte alignment +max). e.g. if this bit is set, __int128 has 16-byte alignment. this +bit is not used by ida yet """ ida_ida.ABI_MAP_STKARGS @@ -42659,7 +44069,7 @@ pack the database? ida_ida.LFLG_PC_FLAT """ -32-bit program? +32-bit program (or higher)? """ ida_ida.LFLG_PC_FPP @@ -43444,7 +44854,7 @@ Help on function as_cstr in module ida_idaapi: as_cstr(val) Returns a C str from the passed value. The passed value can be of type refclass (returned by a call to buffer() or byref()) - It scans for the first and returns the string value up to that point. + It scans for the first \x00 and returns the string value up to that point. Help on function as_int32 in module ida_idaapi: @@ -44402,9 +45812,9 @@ class call_stack_info_t(builtins.object) | | __hash__ = None -Help on class call_stack_t in module ida_idd: +Help on class call_stack_info_vec_t in module ida_idd: -class call_stack_t(builtins.object) +class call_stack_info_vec_t(builtins.object) | Proxy of C++ qvector< call_stack_info_t > class. | | Methods defined here: @@ -44418,7 +45828,7 @@ class call_stack_t(builtins.object) | i: size_t | | __init__(self, *args) - | __init__(self) -> call_stack_t + | __init__(self) -> call_stack_info_vec_t | x: qvector< call_stack_info_t > const & | | __iter__ = _bounded_getitem_iterator(self) @@ -44438,8 +45848,8 @@ class call_stack_t(builtins.object) | i: size_t | v: call_stack_info_t const & | - | __swig_destroy__ = delete_call_stack_t(...) - | delete_call_stack_t(self) + | __swig_destroy__ = delete_call_stack_info_vec_t(...) + | delete_call_stack_info_vec_t(self) | | _del(self, *args) -> 'bool' | _del(self, x) -> bool @@ -44564,6 +45974,178 @@ class call_stack_t(builtins.object) | | __hash__ = None +Help on class call_stack_t in module ida_idd: + +class call_stack_t(call_stack_info_vec_t) + | Proxy of C++ call_stack_t class. + | + | Method resolution order: + | call_stack_t + | call_stack_info_vec_t + | builtins.object + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> call_stack_t + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_call_stack_t(...) + | delete_call_stack_t(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Methods inherited from call_stack_info_vec_t: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: qvector< call_stack_info_t > const & + | + | __getitem__(self, *args) -> 'call_stack_info_t const &' + | __getitem__(self, i) -> call_stack_info_t + | i: size_t + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: qvector< call_stack_info_t > const & + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: call_stack_info_t const & + | + | _del(self, *args) -> 'bool' + | _del(self, x) -> bool + | x: call_stack_info_t const & + | + | add_unique(self, *args) -> 'bool' + | add_unique(self, x) -> bool + | x: call_stack_info_t const & + | + | at(self, *args) -> 'call_stack_info_t const &' + | at(self, _idx) -> call_stack_info_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) -> 'qvector< call_stack_info_t >::const_iterator' + | begin(self) -> call_stack_info_t + | begin(self) -> call_stack_info_t + | + | capacity(self, *args) -> 'size_t' + | capacity(self) -> size_t + | + | clear(self, *args) -> 'void' + | clear(self) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'qvector< call_stack_info_t >::const_iterator' + | end(self) -> call_stack_info_t + | end(self) -> call_stack_info_t + | + | erase(self, *args) -> 'qvector< call_stack_info_t >::iterator' + | erase(self, it) -> call_stack_info_t + | it: qvector< call_stack_info_t >::iterator + | + | + | erase(self, first, last) -> call_stack_info_t + | first: qvector< call_stack_info_t >::iterator + | last: qvector< call_stack_info_t >::iterator + | + | extract(self, *args) -> 'call_stack_info_t *' + | extract(self) -> call_stack_info_t + | + | find(self, *args) -> 'qvector< call_stack_info_t >::const_iterator' + | find(self, x) -> call_stack_info_t + | x: call_stack_info_t const & + | + | + | find(self, x) -> call_stack_info_t + | x: call_stack_info_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) -> 'void' + | grow(self, x=call_stack_info_t()) + | x: call_stack_info_t const & + | + | has(self, *args) -> 'bool' + | has(self, x) -> bool + | x: call_stack_info_t const & + | + | inject(self, *args) -> 'void' + | inject(self, s, len) + | s: call_stack_info_t * + | len: size_t + | + | insert(self, *args) -> 'qvector< call_stack_info_t >::iterator' + | insert(self, it, x) -> call_stack_info_t + | it: qvector< call_stack_info_t >::iterator + | x: call_stack_info_t const & + | + | pop_back(self, *args) -> 'void' + | pop_back(self) + | + | push_back(self, *args) -> 'call_stack_info_t &' + | push_back(self, x) + | x: call_stack_info_t const & + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | reserve(self, *args) -> 'void' + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) -> 'void' + | resize(self, _newsize, x) + | _newsize: size_t + | x: call_stack_info_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) -> 'size_t' + | size(self) -> size_t + | + | swap(self, *args) -> 'void' + | swap(self, r) + | r: qvector< call_stack_info_t > & + | + | truncate(self, *args) -> 'void' + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from call_stack_info_vec_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | ---------------------------------------------------------------------- + | Data and other attributes inherited from call_stack_info_vec_t: + | + | __hash__ = None + Help on function can_exc_continue in module ida_idd: can_exc_continue(*args) -> 'bool' @@ -45655,7 +47237,7 @@ class regval_t(builtins.object) | | set_float(self, *args) -> 'void' | set_float(self, x) - | x: ushort const * + | x: fpvalue_t const & | | set_int(self, *args) -> 'void' | set_int(self, x) @@ -45680,7 +47262,7 @@ class regval_t(builtins.object) | list of weak references to the object (if defined) | | fval - | regval_t_fval_get(self) -> uint16 [6] + | regval_t_fval_get(self) -> fpvalue_t | | ival | regval_t_ival_get(self) -> uint64 @@ -46018,11 +47600,12 @@ class IDB_Hooks(builtins.object) | bookmark_changed(self, *args) -> 'void' | Boomarked position changed. | - | bookmark_changed(self, index, pos, desc) + | bookmark_changed(self, index, pos, desc, operation) | @param index (C++: uint32) | @param pos (C++: const lochist_entry_t *) - | @param desc: if desc==NULL, then the bookmark was deleted. (C++: - | const char *) + | @param desc (C++: const char *) + | @param operation: 0-added, 1-updated, 2-deleted if desc==NULL, then + | the bookmark was deleted. (C++: int) | | byte_patched(self, *args) -> 'void' | A byte has been patched. @@ -46161,6 +47744,9 @@ class IDB_Hooks(builtins.object) | compiler_changed(self, *args) -> 'void' | The kernel has changed the compiler information. (\inf{cc} structure; | 'get_abi_name' ) + | + | compiler_changed(self, adjust_inf_fields) + | @param adjust_inf_fields: may change inf fields? (C++: bool) | | deleting_enum(self, *args) -> 'void' | An enum type is to be deleted. @@ -46272,6 +47858,13 @@ class IDB_Hooks(builtins.object) | @param dt (C++: dirtree_t *) | @param inode (C++: inode_t) | + | dirtree_segm_moved(self, *args) -> 'void' + | Dirtree: inodes were changed due to a segment movement or a program + | rebasing + | + | dirtree_segm_moved(self, dt) + | @param dt (C++: dirtree_t *) + | | dump_state(self, *args) -> 'qstring' | dump_state(self) -> qstring | @@ -46475,10 +48068,11 @@ class IDB_Hooks(builtins.object) | renamed(self, *args) -> 'void' | The kernel has renamed a byte. See also the \idpcode{rename} event | - | renamed(self, ea, new_name, local_name) + | renamed(self, ea, new_name, local_name, old_name) | @param ea (C++: ea_t) - | @param new_name (C++: const char *) + | @param new_name: can be nullptr (C++: const char *) | @param local_name (C++: bool) + | @param old_name: can be nullptr (C++: const char *) | | renaming_enum(self, *args) -> 'void' | An enum or enum member is to be renamed. @@ -47023,7 +48617,7 @@ class IDP_Hooks(builtins.object) | @param to (C++: ea_t) | @param may_define (C++: bool) | @param code_ea (C++: ea_t *) - | @retval: <0 - cancel dref analysis + | @retval: <0 - failed dref analysis, >0 done dref analysis | @retval: 0 - not implemented or continue | | ev_create_flat_group(self, *args) -> 'int' @@ -47043,6 +48637,14 @@ class IDP_Hooks(builtins.object) | @retval: 1 - ok | @retval: 0 - not implemented | + | ev_create_merge_handlers(self, *args) -> 'int' + | Create merge handlers, if needed + | + | ev_create_merge_handlers(self, md) -> int + | @param md: This event is generated immediately after opening idbs. + | (C++: merge_data_t *) + | @return: must be 0 + | | ev_create_switch_xrefs(self, *args) -> 'int' | Create xrefs for a custom jump table. | @@ -47267,8 +48869,8 @@ class IDP_Hooks(builtins.object) | underscore | | ev_get_abi_info(self, abi_names, abi_opts, comp) -> int - | @param abi_names: - all possible ABis each in form abiname- - | opt1-opt2-... (C++: qstrvec_t *) + | @param abi_names: - all possible ABis each in form + | abiname-opt1-opt2-... (C++: qstrvec_t *) | @param abi_opts: - array of all possible options in form | "opt:description" or opt:hint-line#description (C++: | qstrvec_t *) @@ -47502,6 +49104,19 @@ class IDP_Hooks(builtins.object) | @retval: -1 - no | @retval: 0 - not implemented or not instruction | + | ev_is_control_flow_guard(self, *args) -> 'int' + | Detect if an instruction is a "thunk call" to a flow guard function + | (equivalent to call reg/return/nop) + | + | ev_is_control_flow_guard(self, p_reg, insn) -> int + | @param p_reg: indirect register number, may be -1 (C++: int *) + | @param insn: call/jump instruction (C++: const insn_t *) + | @retval: -1 - no thunk detected + | @retval: 1 - indirect call + | @retval: 2 - security check routine call (NOP) + | @retval: 3 - return thunk + | @retval: 0 - not implemented + | | ev_is_far_jump(self, *args) -> 'int' | is indirect far jump or call instruction? meaningful only if the | processor has 'near' and 'far' reference types @@ -47523,14 +49138,7 @@ class IDP_Hooks(builtins.object) | @retval: 2 - yes | | ev_is_insn_table_jump(self, *args) -> 'int' - | Determine if instruction is a table jump or call. If 'CF_JUMP' bit - | cannot describe all kinds of table jumps, please define this callback. - | It will be called for insns with 'CF_JUMP' bit set. - | - | ev_is_insn_table_jump(self, insn) -> int - | @param insn: the instruction (C++: const insn_t*) - | @retval: 0 - yes - | @retval: <0 - no + | Reserved. | | ev_is_jump_func(self, *args) -> 'int' | Is the function a trivial "jump" function?. @@ -47593,7 +49201,8 @@ class IDP_Hooks(builtins.object) | @param insn: instruction possibly belonging to a switch (C++: const | insn_t *) | @retval: 1 - switch is found, 'si' is filled - | @retval: 0 - no switch found or not implemented + | @retval: -1 - no switch found + | @retval: 0 - not implemented | | ev_last_cb_before_loader(self, *args) -> 'int' | ev_last_cb_before_loader(self) -> int @@ -47811,8 +49420,10 @@ class IDP_Hooks(builtins.object) | Floating point -> IEEE conversion | | ev_realcvt(self, m, e, swt) -> int - | @param m: pointer to data (C++: void *) - | @param e: internal IEEE format data (C++: uint16 *) + | @param m: ptr to processor-specific floating point value (C++: void + | *) + | @param e: IDA representation of a floating point value (C++: + | fpvalue_t *) | @param swt: operation (see realcvt() in ieee.h) (C++: uint16) | @retval: 0 - not implemented | @retval: 1 - ok @@ -47923,6 +49534,28 @@ class IDP_Hooks(builtins.object) | @retval: 1 - do not delete srranges at the item end | @retval: 0 - srranges can be deleted | + | ev_update_call_stack(self, *args) -> 'int' + | Calculate the call stack trace for the given thread. This callback is + | invoked when the process is suspended and should fill the 'trace' + | object with the information about the current call stack. Note that + | this callback is NOT invoked if the current debugger backend + | implements stack tracing via + | debugger_t::event_t::ev_update_call_stack. The debugger-specific + | algorithm takes priority. Implementing this callback in the processor + | module is useful when multiple debugging platforms follow similar + | patterns, and thus the same processor-specific algorithm can be used + | for different platforms. + | + | ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int + | @param stack: result (C++: call_stack_t *) + | @param tid: thread id (C++: int) + | @param getreg: function to get register values (C++: + | processor_t::regval_getter_t *) + | @param regvalues: register values array (C++: const regval_t *) + | @retval: 1 - ok + | @retval: -1 - failed + | @retval: 0 - unimplemented + | | ev_use_arg_types(self, *args) -> 'int' | Use information about callee arguments. | @@ -48145,11 +49778,12 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | bookmark_changed(self, *args) -> 'void' | Boomarked position changed. | - | bookmark_changed(self, index, pos, desc) + | bookmark_changed(self, index, pos, desc, operation) | @param index (C++: uint32) | @param pos (C++: const lochist_entry_t *) - | @param desc: if desc==NULL, then the bookmark was deleted. (C++: - | const char *) + | @param desc (C++: const char *) + | @param operation: 0-added, 1-updated, 2-deleted if desc==NULL, then + | the bookmark was deleted. (C++: int) | | byte_patched(self, *args) -> 'void' | A byte has been patched. @@ -48288,6 +49922,9 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | compiler_changed(self, *args) -> 'void' | The kernel has changed the compiler information. (\inf{cc} structure; | 'get_abi_name' ) + | + | compiler_changed(self, adjust_inf_fields) + | @param adjust_inf_fields: may change inf fields? (C++: bool) | | deleting_enum(self, *args) -> 'void' | An enum type is to be deleted. @@ -48399,6 +50036,13 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | @param dt (C++: dirtree_t *) | @param inode (C++: inode_t) | + | dirtree_segm_moved(self, *args) -> 'void' + | Dirtree: inodes were changed due to a segment movement or a program + | rebasing + | + | dirtree_segm_moved(self, dt) + | @param dt (C++: dirtree_t *) + | | dump_state(self, *args) -> 'qstring' | dump_state(self) -> qstring | @@ -48602,10 +50246,11 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | renamed(self, *args) -> 'void' | The kernel has renamed a byte. See also the \idpcode{rename} event | - | renamed(self, ea, new_name, local_name) + | renamed(self, ea, new_name, local_name, old_name) | @param ea (C++: ea_t) - | @param new_name (C++: const char *) + | @param new_name: can be nullptr (C++: const char *) | @param local_name (C++: bool) + | @param old_name: can be nullptr (C++: const char *) | | renaming_enum(self, *args) -> 'void' | An enum or enum member is to be renamed. @@ -49561,7 +51206,7 @@ class processor_t(IDP_Hooks) | @param to (C++: ea_t) | @param may_define (C++: bool) | @param code_ea (C++: ea_t *) - | @retval: <0 - cancel dref analysis + | @retval: <0 - failed dref analysis, >0 done dref analysis | @retval: 0 - not implemented or continue | | ev_create_func_frame(self, pfn) @@ -49739,14 +51384,7 @@ class processor_t(IDP_Hooks) | @retval: 2 - yes | | ev_is_insn_table_jump(self, *args) - | Determine if instruction is a table jump or call. If 'CF_JUMP' bit - | cannot describe all kinds of table jumps, please define this callback. - | It will be called for insns with 'CF_JUMP' bit set. - | - | ev_is_insn_table_jump(self, insn) -> int - | @param insn: the instruction (C++: const insn_t*) - | @retval: 0 - yes - | @retval: <0 - no + | Reserved. | | ev_is_ret_insn(self, *args) | Is the instruction a "return"? @@ -49798,7 +51436,8 @@ class processor_t(IDP_Hooks) | @param insn: instruction possibly belonging to a switch (C++: const | insn_t *) | @retval: 1 - switch is found, 'si' is filled - | @retval: 0 - no switch found or not implemented + | @retval: -1 - no switch found + | @retval: 0 - not implemented | | ev_may_be_func(self, *args) | Can a function start here? @@ -50314,6 +51953,14 @@ class processor_t(IDP_Hooks) | @param bitness (C++: int) | @param dataseg_sel: return value is ignored (C++: sel_t) | + | ev_create_merge_handlers(self, *args) -> 'int' + | Create merge handlers, if needed + | + | ev_create_merge_handlers(self, md) -> int + | @param md: This event is generated immediately after opening idbs. + | (C++: merge_data_t *) + | @return: must be 0 + | | ev_decorate_name(self, *args) -> 'PyObject *' | Decorate/undecorate a C symbol name. | @@ -50458,8 +52105,8 @@ class processor_t(IDP_Hooks) | underscore | | ev_get_abi_info(self, abi_names, abi_opts, comp) -> int - | @param abi_names: - all possible ABis each in form abiname- - | opt1-opt2-... (C++: qstrvec_t *) + | @param abi_names: - all possible ABis each in form + | abiname-opt1-opt2-... (C++: qstrvec_t *) | @param abi_opts: - array of all possible options in form | "opt:description" or opt:hint-line#description (C++: | qstrvec_t *) @@ -50628,6 +52275,19 @@ class processor_t(IDP_Hooks) | @retval: -1 - no | @retval: 0 - not implemented or not instruction | + | ev_is_control_flow_guard(self, *args) -> 'int' + | Detect if an instruction is a "thunk call" to a flow guard function + | (equivalent to call reg/return/nop) + | + | ev_is_control_flow_guard(self, p_reg, insn) -> int + | @param p_reg: indirect register number, may be -1 (C++: int *) + | @param insn: call/jump instruction (C++: const insn_t *) + | @retval: -1 - no thunk detected + | @retval: 1 - indirect call + | @retval: 2 - security check routine call (NOP) + | @retval: 3 - return thunk + | @retval: 0 - not implemented + | | ev_is_jump_func(self, *args) -> 'int' | Is the function a trivial "jump" function?. | @@ -50691,8 +52351,10 @@ class processor_t(IDP_Hooks) | Floating point -> IEEE conversion | | ev_realcvt(self, m, e, swt) -> int - | @param m: pointer to data (C++: void *) - | @param e: internal IEEE format data (C++: uint16 *) + | @param m: ptr to processor-specific floating point value (C++: void + | *) + | @param e: IDA representation of a floating point value (C++: + | fpvalue_t *) | @param swt: operation (see realcvt() in ieee.h) (C++: uint16) | @retval: 0 - not implemented | @retval: 1 - ok @@ -50735,6 +52397,28 @@ class processor_t(IDP_Hooks) | ev_term(self, *args) -> 'int' | The IDP module is being unloaded. | + | ev_update_call_stack(self, *args) -> 'int' + | Calculate the call stack trace for the given thread. This callback is + | invoked when the process is suspended and should fill the 'trace' + | object with the information about the current call stack. Note that + | this callback is NOT invoked if the current debugger backend + | implements stack tracing via + | debugger_t::event_t::ev_update_call_stack. The debugger-specific + | algorithm takes priority. Implementing this callback in the processor + | module is useful when multiple debugging platforms follow similar + | patterns, and thus the same processor-specific algorithm can be used + | for different platforms. + | + | ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int + | @param stack: result (C++: call_stack_t *) + | @param tid: thread id (C++: int) + | @param getreg: function to get register values (C++: + | processor_t::regval_getter_t *) + | @param regvalues: register values array (C++: const regval_t *) + | @retval: 1 - ok + | @retval: -1 - failed + | @retval: 0 - unimplemented + | | ev_use_arg_types(self, *args) -> 'int' | Use information about callee arguments. | @@ -51681,11 +53365,6 @@ Custom instruction codes defined by processor extension plugins must be greater than or equal to this """ -ida_idp.HKCB_AUTODEL -""" -automatically delete event listener object after uninstalling it -""" - ida_idp.HKCB_GLOBAL """ is global event listener? if true, the listener will survive database @@ -51964,6 +53643,16 @@ ida_idp.PLFM_PPC PowerPC. """ +ida_idp.PLFM_RISCV +""" +RISC-V. +""" + +ida_idp.PLFM_RL78 +""" +Renesas RL78. +""" + ida_idp.PLFM_S390 """ IBM's S390. @@ -52065,6 +53754,11 @@ ida_idp.PLFM_UNSP SunPlus unSP. """ +ida_idp.PLFM_XTENSA +""" +Tensilica Xtensa. +""" + ida_idp.PLFM_Z8 """ Z8. @@ -52243,6 +53937,315 @@ processor_t::use_regarg_type uses this bit in the return value to indicate that the register value has been spoiled """ === ida_idp EPYDOC INJECTIONS END === +Help on function ecleaz in module ida_ieee: + +ecleaz(*args) -> 'void' + ecleaz(x) + @param x (C++: eNI) + +Help on class fpvalue_shorts_array_t in module ida_ieee: + +class fpvalue_shorts_array_t(builtins.object) + | Proxy of C++ wrapped_array_t< uint16,FPVAL_NWORDS > class. + | + | Methods defined here: + | + | __getitem__(self, *args) -> 'unsigned short const &' + | __getitem__(self, i) -> unsigned short const & + | i: size_t + | + | __init__(self, *args) + | __init__(self, data) -> fpvalue_shorts_array_t + | data: unsigned short (&)[FPVAL_NWORDS] + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: unsigned short const & + | + | __swig_destroy__ = delete_fpvalue_shorts_array_t(...) + | delete_fpvalue_shorts_array_t(self) + | + | _get_bytes(self, *args) -> 'bytevec_t' + | _get_bytes(self) -> bytevec_t + | + | _set_bytes(self, *args) -> 'void' + | _set_bytes(self, bts) + | bts: bytevec_t const & + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | _get_bytes(self) -> bytevec_t + | + | data + | fpvalue_shorts_array_t_data_get(self) -> unsigned short (&)[FPVAL_NWORDS] + | + | thisown + | The membership flag + +Help on class fpvalue_t in module ida_ieee: + +class fpvalue_t(builtins.object) + | Proxy of C++ fpvalue_t class. + | + | Methods defined here: + | + | __add__(self, *args) -> 'fpvalue_t' + | __add__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: fpvalue_t const & + | + | __ge__(self, *args) -> 'bool' + | __ge__(self, r) -> bool + | r: fpvalue_t const & + | + | __getitem__(self, i) + | + | __gt__(self, *args) -> 'bool' + | __gt__(self, r) -> bool + | r: fpvalue_t const & + | + | __init__(self, *args) + | __init__(self) -> fpvalue_t + | in: bytevec12_t const & + | + | __iter__(self) + | + | __le__(self, *args) -> 'bool' + | __le__(self, r) -> bool + | r: fpvalue_t const & + | + | __lt__(self, *args) -> 'bool' + | __lt__(self, r) -> bool + | r: fpvalue_t const & + | + | __mul__(self, *args) -> 'fpvalue_t' + | __mul__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: fpvalue_t const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, i, v) + | + | __str__(self, *args) -> 'qstring' + | __str__(self) -> qstring + | + | __sub__(self, *args) -> 'fpvalue_t' + | __sub__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __swig_destroy__ = delete_fpvalue_t(...) + | delete_fpvalue_t(self) + | + | __truediv__(self, *args) -> 'fpvalue_t' + | __truediv__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | _get_10bytes(self, *args) -> 'void' + | _get_10bytes(self) + | + | _get_bytes(self, *args) -> 'void' + | _get_bytes(self) + | + | _get_float(self, *args) -> 'double' + | _get_float(self) -> double + | + | _get_shorts(self, *args) -> 'wrapped_array_t< uint16,FPVAL_NWORDS >' + | _get_shorts(self) -> fpvalue_shorts_array_t + | + | _set_10bytes(self, *args) -> 'void' + | _set_10bytes(self, _in) + | in: bytevec10_t const & + | + | _set_bytes(self, *args) -> 'void' + | _set_bytes(self, _in) + | in: bytevec12_t const & + | + | _set_float(self, *args) -> 'void' + | _set_float(self, v) + | v: double + | + | assign(self, *args) -> 'void' + | assign(self, r) + | r: fpvalue_t const & + | + | clear(self, *args) -> 'void' + | clear(self) + | + | compare(self, *args) -> 'int' + | compare(self, r) -> int + | r: fpvalue_t const & + | + | eabs(self, *args) -> 'void' + | Calculate absolute value. + | + | fadd(self, *args) -> 'fpvalue_error_t' + | Arithmetic operations. + | + | fadd(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | fdiv(self, *args) -> 'fpvalue_error_t' + | fdiv(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | fmul(self, *args) -> 'fpvalue_error_t' + | fmul(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | from_10bytes(self, *args) -> 'fpvalue_error_t' + | Conversions for 10-byte floating point values. + | + | from_10bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: const void *) + | + | from_12bytes(self, *args) -> 'fpvalue_error_t' + | Conversions for 12-byte floating point values. + | + | from_12bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: const void *) + | + | from_int64(self, *args) -> 'void' + | from_int64(self, x) + | @param x (C++: int64) + | + | from_str(self, *args) -> 'fpvalue_error_t' + | Convert string to IEEE. + | + | from_str(self, p) -> fpvalue_error_t + | p: char const * + | + | from_sval(self, *args) -> 'void' + | Convert integer to IEEE. + | + | from_sval(self, x) + | @param x (C++: sval_t) + | + | from_uint64(self, *args) -> 'void' + | from_uint64(self, x) + | @param x (C++: uint64) + | + | fsub(self, *args) -> 'fpvalue_error_t' + | fsub(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | get_kind(self, *args) -> 'fpvalue_kind_t' + | Get value kind. + | + | is_negative(self, *args) -> 'bool' + | Is negative value? + | + | mul_pow2(self, *args) -> 'fpvalue_error_t' + | Multiply by a power of 2. + | + | mul_pow2(self, power_of_2) -> fpvalue_error_t + | @param power_of_2 (C++: int32) + | + | negate(self, *args) -> 'void' + | Negate. + | + | to_10bytes(self, *args) -> 'fpvalue_error_t' + | to_10bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: void *) + | + | to_12bytes(self, *args) -> 'fpvalue_error_t' + | to_12bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: void *) + | + | to_int64(self, *args) -> 'fpvalue_error_t' + | to_int64(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | to_str(self, *args) -> 'void' + | Convert IEEE to string. + | + | to_str(self, mode) + | @param mode: broken down into: low byte: number of digits after '.' + | second byte: FPNUM_LENGTH third byte: FPNUM_DIGITS + | (C++: uint) + | + | to_sval(self, *args) -> 'fpvalue_error_t' + | Convert IEEE to integer (+-0.5 if round) + | + | to_sval(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | to_uint64(self, *args) -> 'fpvalue_error_t' + | to_uint64(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | _10bytes + | _get_10bytes(self) + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | _get_bytes(self) + | + | float + | _get_float(self) -> double + | + | int64 + | + | shorts + | _get_shorts(self) -> fpvalue_shorts_array_t + | + | sval + | + | thisown + | The membership flag + | + | uint64 + | + | w + | fpvalue_t_w_get(self) -> uint16 [6] + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + +=== ida_ieee EPYDOC INJECTIONS === +ida_ieee.E_SPECIAL_EXP +""" +Exponent in 'fpvalue_t' for NaN and Inf. +""" + +ida_ieee.IEEE_EXONE +""" +The exponent of 1.0. +""" +=== ida_ieee EPYDOC INJECTIONS END === Help on class Choose in module ida_kernwin: class Choose(builtins.object) @@ -52390,6 +54393,8 @@ class Choose(builtins.object) | | CH_FORCE_DEFAULT = 128 | + | CH_HAS_DIFF = 268435456 + | | CH_HAS_DIRTREE = 33554432 | | CH_MODAL = 1 @@ -52418,6 +54423,8 @@ class Choose(builtins.object) | | CH_QFTYP_WHOLE_WORDS = 16384 | + | CH_RENAME_IS_EDIT = 262144 + | | CH_RESTORE = 131072 | | EMPTY_CHOOSER = -2 @@ -53294,6 +55301,8 @@ class PluginForm(builtins.object) | | WCLS_CLOSE_LATER = 8 | + | WCLS_DELETE_LATER = 8 + | | WCLS_DONT_SAVE_SIZE = 4 | | WCLS_NO_CONTEXT = 2 @@ -53318,6 +55327,8 @@ class PluginForm(builtins.object) | | WOPN_DP_RIGHT = 262144 | + | WOPN_DP_SZHINT = 16777216 + | | WOPN_DP_TAB = 4194304 | | WOPN_DP_TAB_BEFORE = 6291456 @@ -53403,11 +55414,22 @@ class UI_Hooks(builtins.object) | debugger has been selected false: debugger menu will be | removed (user switched to "No debugger") (C++: bool) | + | desktop_applied(self, *args) -> 'void' + | a desktop has been applied + | + | desktop_applied(self, name, from_idb, type) + | @param name: the desktop name (C++: const char *) + | @param from_idb: the desktop was stored in the IDB (false if it comes + | from the registry) (C++: bool) + | @param type: the desktop type (1-disassembly, 2-debugger, 3-merge) + | (C++: int) + | | destroying_plugmod(self, *args) -> 'void' | The plugin object is about to be destroyed | - | destroying_plugmod(self, plugmod) + | destroying_plugmod(self, plugmod, entry) | @param plugmod (C++: const plugmod_t *) + | @param entry (C++: const plugin_t *) | | destroying_procmod(self, *args) -> 'void' | The processor module is about to be destroyed @@ -53437,18 +55459,23 @@ class UI_Hooks(builtins.object) | @param attrs (C++: chooser_item_attrs_t *) | | get_custom_viewer_hint(self, *args) -> 'PyObject *' - | ui wants to display a hint for a viewer (idaview or custom). If - | the REG_HINTS_MARKER sequence is found in the returned hints string, - | it will be replaced with the contents of the "regular" hints. If the - | SRCDBG_HINTS_MARKER sequence is found in the returned hints string, it - | will be replaced with the contents of the source-level debugger- - | generated hints. The following keywords might appear at the beginning - | of the returned hints: HIGHLIGHT textwhere text will be highlighted - | CAPTION captioncaption for the hint widget + | ui wants to display a hint for a viewer (idaview or custom). Every + | subscriber is supposed to append the hint lines to HINT and increment + | IMPORTANT_LINES accordingly. Completely overwriting the existing lines + | in HINT is possible but not recommended. If the REG_HINTS_MARKER + | sequence is found in the returned hints string, it will be replaced + | with the contents of the "regular" hints. If the SRCDBG_HINTS_MARKER + | sequence is found in the returned hints string, it will be replaced + | with the contents of the source-level debugger-generated hints. The + | following keywords might appear at the beginning of the returned + | hints: HIGHLIGHT textwhere text will be highlighted CAPTION + | captioncaption for the hint widget | | get_custom_viewer_hint(self, viewer, place) -> PyObject * | @param viewer: viewer (C++: TWidget*) | @param place: current position in the viewer (C++: place_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | get_ea_hint(self, *args) -> 'PyObject *' | ui wants to display a simple hint for an address. Use this event @@ -53545,7 +55572,12 @@ class UI_Hooks(builtins.object) | | saved(self, *args) -> 'void' | The kernel has saved the database. This callback just informs the - | interface. + | interface. Note that at the time this notification is sent, the + | internal paths are not updated yet, and calling + | get_path(PATH_TYPE_IDB) will return the previous path. + | + | saved(self, path) + | @param path: the database path (C++: const char *) | | saving(self, *args) -> 'void' | The kernel is flushing its buffers to the disk. The user interface @@ -53802,6 +55834,75 @@ _kludge_force_declare_dirtree_t(*args) -> 'void' _kludge_force_declare_dirtree_t(arg1) arg1: dirtree_t const * +Help on class action_ctx_base_cur_sel_t in module ida_kernwin: + +class action_ctx_base_cur_sel_t(builtins.object) + | Proxy of C++ action_ctx_base_cur_sel_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> action_ctx_base_cur_sel_t + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_action_ctx_base_cur_sel_t(...) + | delete_action_ctx_base_cur_sel_t(self) + | + | reset(self, *args) -> 'void' + | reset(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | _from + | action_ctx_base_cur_sel_t__from_get(self) -> twinpos_t + | + | thisown + | The membership flag + | + | to + | action_ctx_base_cur_sel_t_to_get(self) -> twinpos_t + +Help on class action_ctx_base_source_t in module ida_kernwin: + +class action_ctx_base_source_t(builtins.object) + | Proxy of C++ action_ctx_base_source_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> action_ctx_base_source_t + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_action_ctx_base_source_t(...) + | delete_action_ctx_base_source_t(self) + | + | reset(self, *args) -> 'void' + | reset(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | chooser + | action_ctx_base_source_t_chooser_get(self) -> chooser_base_t + | + | thisown + | The membership flag + Help on class action_ctx_base_t in module ida_kernwin: class action_ctx_base_t(builtins.object) @@ -53874,6 +55975,9 @@ class action_ctx_base_t(builtins.object) | cur_seg | action_ctx_base_t_cur_seg_get(self) -> segment_t * | + | cur_sel + | action_ctx_base_t_cur_sel_get(self) -> action_ctx_base_cur_sel_t + | | cur_strmem | action_ctx_base_t_cur_strmem_get(self) -> member_t * | @@ -53904,6 +56008,9 @@ class action_ctx_base_t(builtins.object) | regname | action_ctx_base_t_regname_get(self) -> char const * | + | source + | action_ctx_base_t_source_get(self) -> action_ctx_base_source_t + | | thisown | The membership flag | @@ -54476,6 +56583,168 @@ choose_xref(*args) -> 'ea_t' @param to: referenced address (C++: ea_t) @return: ea of selected xref, BADADDR if none selected +Help on class chooser_base_t in module ida_kernwin: + +class chooser_base_t(builtins.object) + | Proxy of C++ chooser_base_t class. + | + | Methods defined here: + | + | __init__(self, *args, **kwargs) + | Initialize self. See help(type(self)) for accurate signature. + | + | __repr__ = _swig_repr(self) + | + | ask_item_attrs(self, *args) -> 'bool' + | should chooser generate ui_get_chooser_item_attrs events? + | + | can_del(self, *args) -> 'bool' + | can_del(self) -> bool + | + | can_edit(self, *args) -> 'bool' + | can_edit(self) -> bool + | + | can_filter(self, *args) -> 'bool' + | can_filter(self) -> bool + | + | can_ins(self, *args) -> 'bool' + | is an operation allowed? + | + | can_refresh(self, *args) -> 'bool' + | can_refresh(self) -> bool + | + | can_sort(self, *args) -> 'bool' + | can_sort(self) -> bool + | + | get_builtin_number(self, *args) -> 'uint' + | get number of the built-in chooser + | + | get_count(self, *args) -> 'size_t' + | get the number of elements in the chooser + | + | get_ea(self, *args) -> 'ea_t' + | get an address of an element. Used to set breakpoint in any chooser + | which implements this callback. + | + | get_ea(self, arg2) -> ea_t + | arg2: size_t + | @return: the effective address, BADADDR if the element has no address + | + | get_quick_filter_initial_mode(self, *args) -> 'int' + | get_quick_filter_initial_mode(self) -> int + | + | get_row(self, *args) -> 'PyObject *' + | get a description of an element. + | + | get_row(self, n) -> PyObject * + | @param n: element number (0.. get_count() -1) (C++: size_t) + | + | has_diff_capability(self, *args) -> 'bool' + | has_diff_capability(self) -> bool + | + | has_dirtree(self, *args) -> 'bool' + | has_dirtree(self) -> bool + | + | is_force_default(self, *args) -> 'bool' + | should selection of the already opened non-modal chooser be changed? + | + | is_modal(self, *args) -> 'bool' + | is choose modal? + | + | is_multi(self, *args) -> 'bool' + | is multi-selection allowed? + | + | is_noidb(self, *args) -> 'bool' + | can use the chooser before opening the database? + | + | is_quick_filter_visible_initially(self, *args) -> 'bool' + | is_quick_filter_visible_initially(self) -> bool + | + | is_same(self, *args) -> 'bool' + | do the current and the given objects hold the same data? + | + | is_same(self, other) -> bool + | @param other (C++: const chooser_base_t *) + | + | is_status_bar_hidden(self, *args) -> 'bool' + | is_status_bar_hidden(self) -> bool + | + | popup_allowed(self, *args) -> 'bool' + | is a popup action allowed? + | + | popup_allowed(self, i) -> bool + | @param i (C++: int) + | + | should_rename_trigger_edit(self, *args) -> 'bool' + | should_rename_trigger_edit(self) -> bool + | + | should_restore_geometry(self, *args) -> 'bool' + | should_restore_geometry(self) -> bool + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | columns + | chooser_base_t_columns_get(self) -> int + | + | deflt_col + | chooser_base_t_deflt_col_get(self) -> int + | + | header + | chooser_base_t_header_get(self) -> char const *const * + | + | height + | chooser_base_t_height_get(self) -> int + | + | icon + | chooser_base_t_icon_get(self) -> int + | + | popup_names + | chooser_base_t_popup_names_get(self) -> qstring [chooser_base_t::NSTDPOPUPS] + | + | thisown + | The membership flag + | + | title + | chooser_base_t_title_get(self) -> char const * + | + | width + | chooser_base_t_width_get(self) -> int + | + | widths + | chooser_base_t_widths_get(self) -> int const * + | + | x0 + | chooser_base_t_x0_get(self) -> int + | + | x1 + | chooser_base_t_x1_get(self) -> int + | + | y0 + | chooser_base_t_y0_get(self) -> int + | + | y1 + | chooser_base_t_y1_get(self) -> int + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | NSTDPOPUPS = 4 + | + | POPUP_DEL = 1 + | + | POPUP_EDIT = 2 + | + | POPUP_INS = 0 + | + | POPUP_REFRESH = 3 + Help on class chooser_item_attrs_t in module ida_kernwin: class chooser_item_attrs_t(builtins.object) @@ -54717,12 +56986,8 @@ del_hotkey(*args) -> 'bool' Help on function del_idc_hotkey in module ida_kernwin: del_idc_hotkey(*args) -> 'bool' - Delete IDC function hotkey ( 'ui_del_idckey' ). - del_idc_hotkey(hotkey) -> bool - @param hotkey: hotkey name (C++: const char *) - @retval: 1 - ok - @retval: 0 - failed + @param hotkey (C++: const char *) Help on function delete_menu in module ida_kernwin: @@ -55503,7 +57768,10 @@ Help on function get_chooser_obj in module ida_kernwin: get_chooser_obj(*args) -> 'void *' Get the underlying object of the specified chooser ( - 'ui_get_chooser_obj' ).This is object is chooser-specific. + 'ui_get_chooser_obj' ).This attemps to find the choser by its title + and, if found, returns the result of calling its + 'chooser_base_t::get_chooser_obj()' method.This is object is chooser- + specific. get_chooser_obj(chooser_caption) -> void * @param chooser_caption (C++: const char *) @@ -56041,6 +58309,14 @@ is_idaq(*args) -> 'bool' is_idaq() -> bool Returns True or False depending if IDAPython is hosted by IDAQ +Help on function is_idaview in module ida_kernwin: + +is_idaview(*args) -> 'bool' + Is the given custom view an idaview? ( 'ui_is_idaview' ) + + is_idaview(v) -> bool + @param v (C++: TWidget *) + Help on function is_msg_inited in module ida_kernwin: is_msg_inited(*args) -> 'bool' @@ -56109,6 +58385,14 @@ jumpto(*args) -> 'bool' y: int @return: success +Help on function l_compare2 in module ida_kernwin: + +l_compare2(*args) -> 'int' + l_compare2(t1, t2, ud) -> int + @param t1 (C++: const place_t *) + @param t2 (C++: const place_t *) + @param ud (C++: void *) + Help on class line_rendering_output_entries_refs_t in module ida_kernwin: class line_rendering_output_entries_refs_t(builtins.object) @@ -56344,6 +58628,89 @@ class line_rendering_output_entry_t(builtins.object) | | __hash__ = None +Help on class linearray_t in module ida_kernwin: + +class linearray_t(builtins.object) + | Proxy of C++ linearray_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self, _ud) -> linearray_t + | _ud: void * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_linearray_t(...) + | delete_linearray_t(self) + | + | beginning(self, *args) -> 'bool' + | Are we at the beginning? + | + | down(self, *args) -> 'qstring const *' + | Get a line from down direction. place is ok BEFORE + | + | ending(self, *args) -> 'bool' + | ending(self) -> bool + | + | get_bg_color(self, *args) -> 'bgcolor_t' + | Get current background color. (the same behavior as with 'get_place()' + | : good before 'down()' and after 'up()' ) + | + | get_dlnnum(self, *args) -> 'int' + | Get default line number. (the same behavior as with 'get_place()' : + | good before 'down()' and after 'up()' ) + | + | get_linecnt(self, *args) -> 'int' + | Get number of lines for the current place. (the same behavior as with + | 'get_place()' : good before 'down()' and after 'up()' ) + | + | get_pfx_color(self, *args) -> 'bgcolor_t' + | Get current prefix color. (the same behavior as with 'get_place()' : + | good before 'down()' and after 'up()' ) + | + | get_place(self, *args) -> 'place_t *' + | Get the current place. If called before 'down()' , then returns place + | of line which will be returned by 'down()' . If called after 'up()' , + | then returns place if line returned by 'up()' . + | + | set_place(self, *args) -> 'int' + | Position the array. This function must be called before calling any + | other member functions. 'linearray_t' doesn't own 'place_t' + | structures. The caller must take care of 'place_t' objects. + | + | set_place(self, new_at) -> int + | @param new_at: new position of the array (C++: const place_t *) + | @return: the delta of lines that the linearray_t had to adjust the + | place by. For example, if the place_t has a lnnum of 5, + | but it turns out, upon generating lines, that the number of + | lines for that particular place is only 2, then 3 will be + | returned. + | + | set_userdata(self, *args) -> 'void' + | Change the user data. + | + | set_userdata(self, userd) + | @param userd (C++: void *) + | + | up(self, *args) -> 'qstring const *' + | Get a line from up direction. place is ok AFTER + | + | userdata(self, *args) -> 'void *' + | Get pointer to user data. + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + Help on class lines_rendering_input_t in module ida_kernwin: class lines_rendering_input_t(builtins.object) @@ -56484,7 +58851,7 @@ msg(*args) -> 'PyObject *' Help on function msg_clear in module ida_kernwin: msg_clear(*args) -> 'void' - Clear the "Output window". + Clear the "Output" window. Help on function msg_get_lines in module ida_kernwin: @@ -56499,7 +58866,7 @@ msg_get_lines(*args) -> 'PyObject *' Help on function msg_save in module ida_kernwin: msg_save(*args) -> 'bool' - Save the "Output window" contents into a file + Save the "Output" window contents into a file msg_save(path) -> bool @param path: The path of the file to save the contents into. An empty @@ -56516,6 +58883,15 @@ nomem(*args) -> 'void' nomem(format) @param format (C++: const char *) +Help on function open_bookmarks_window in module ida_kernwin: + +open_bookmarks_window(*args) -> 'TWidget *' + Open the bookmarks window ( 'ui_open_builtin' ). + + open_bookmarks_window(w) -> TWidget * + @param w (C++: TWidget *) + @return: pointer to resulting window + Help on function open_bpts_window in module ida_kernwin: open_bpts_window(*args) -> 'TWidget *' @@ -56581,7 +58957,7 @@ open_frame_window(*args) -> 'TWidget *' Help on function open_funcs_window in module ida_kernwin: open_funcs_window(*args) -> 'TWidget *' - Open the functions window ( 'ui_open_builtin' ). + Open the 'Functions' window ( 'ui_open_builtin' ). open_funcs_window(ea) -> TWidget * @param ea: index of entry to select by default (C++: ea_t) @@ -56688,7 +59064,7 @@ open_stack_window(*args) -> 'TWidget *' Help on function open_strings_window in module ida_kernwin: open_strings_window(*args) -> 'TWidget *' - Open the strings window ( 'ui_open_builtin' ). + Open the 'Strings' window ( 'ui_open_builtin' ). open_strings_window(ea, selstart=BADADDR, selend=BADADDR) -> TWidget * @param ea: index of entry to select by default (C++: ea_t) @@ -56721,7 +59097,7 @@ open_tils_window(*args) -> 'TWidget *' Help on function open_trace_window in module ida_kernwin: open_trace_window(*args) -> 'TWidget *' - Open the trace window ( 'ui_open_builtin' ). + Open the tracing window ( 'ui_open_builtin' ). Help on function open_url in module ida_kernwin: @@ -56995,7 +59371,7 @@ plgform_new(*args) -> 'PyObject *' Help on function plgform_show in module ida_kernwin: plgform_show(*args) -> 'bool' - plgform_show(py_link, py_obj, caption, options=WOPN_DP_TAB|WOPN_RESTORE) -> bool + plgform_show(py_link, py_obj, caption, options=(0x0040 << 16)|0x00000004u) -> bool py_link: PyObject * py_obj: PyObject * caption: char const * @@ -57010,6 +59386,13 @@ process_ui_action(*args) -> 'bool' @param name: action name @return: Boolean +Help on function py_chooser_base_t_get_row in module ida_kernwin: + +py_chooser_base_t_get_row(*args) -> 'PyObject *' + py_chooser_base_t_get_row(chobj, n) -> PyObject * + chobj: chooser_base_t const * + n: size_t + Help on function py_get_ask_form in module ida_kernwin: py_get_ask_form(*args) -> 'size_t' @@ -57304,6 +59687,14 @@ Help on function refresh_choosers in module ida_kernwin: refresh_choosers(*args) -> 'void' refresh_choosers() +Help on function refresh_custom_viewer in module ida_kernwin: + +refresh_custom_viewer(*args) -> 'void' + Refresh custom ida viewer ( 'ui_refresh_custom_viewer' ) + + refresh_custom_viewer(custom_viewer) + @param custom_viewer (C++: TWidget *) + Help on function refresh_idaview in module ida_kernwin: refresh_idaview(*args) -> 'void' @@ -59728,6 +62119,11 @@ ida_kernwin.ACF_HAS_SELECTION there is currently a valid selection """ +ida_kernwin.ACF_HAS_SOURCE +""" +'source' field is present +""" + ida_kernwin.ACF_XTRN_EA """ cur_ea is in 'externs' segment @@ -59825,6 +62221,11 @@ ida_kernwin.BWN_ADDRWATCH the 'Watch List' window """ +ida_kernwin.BWN_BOOKMARKS +""" +a persistent 'Bookmarks' widget +""" + ida_kernwin.BWN_BPTS """ breakpoints @@ -60096,7 +62497,7 @@ type libraries ida_kernwin.BWN_TRACE """ -trace view +tracing view """ ida_kernwin.BWN_UNDOHIST @@ -60119,6 +62520,21 @@ ida_kernwin.BWN_XREFS xrefs """ +ida_kernwin.CDVF_LINEICONS +""" +icons can be drawn over the line control +""" + +ida_kernwin.CDVF_NOLINES +""" +don't show line numbers +""" + +ida_kernwin.CDVF_STATUSBAR +""" +keep the status bar in the custom viewer +""" + ida_kernwin.CHCOL_DEC """ decimal number @@ -60198,42 +62614,6 @@ ida_kernwin.CHITEM_UNDER underline the item """ -ida_kernwin.CHOOSER_MENU_EDIT -""" -Values of the 'menu_index' parameter. - -Obsolete. Please don't use -""" - -ida_kernwin.CHOOSER_MENU_JUMP -""" -Obsolete. Please don't use. -""" - -ida_kernwin.CHOOSER_MENU_SEARCH -""" -Obsolete. Please don't use. -""" - -ida_kernwin.CHOOSER_MULTI_SELECTION -""" -enable for multiple selections. A callback of type -'chooser_multi_cb_t' will be called for all selected items. -""" - -ida_kernwin.CHOOSER_NO_SELECTION -""" -Flags. - -enable even if there's no selected item. 'n' will be NO_SELECTION for -a callback. -""" - -ida_kernwin.CHOOSER_POPUP_MENU -""" -Add command to the popup menu. -""" - ida_kernwin.CH_ATTRS """ generate ui_get_chooser_item_attrs (gui only) @@ -60270,6 +62650,11 @@ if a non-modal chooser was already open, change selection to the default one """ +ida_kernwin.CH_HAS_DIFF +""" +The chooser can be used in a diffing/merging workflow. +""" + ida_kernwin.CH_HAS_DIRTREE """ The chooser can provide a 'dirtree_t' , meaning a tree-like structure @@ -60310,6 +62695,16 @@ ida_kernwin.CH_NOIDB use the chooser before opening the database """ +ida_kernwin.CH_NO_FILTER +""" +The chooser will not have filtering abilities. +""" + +ida_kernwin.CH_NO_SORT +""" +The chooser will not have sorting abilities. +""" + ida_kernwin.CH_NO_STATUS_BAR """ don't show a status bar @@ -60346,6 +62741,12 @@ ida_kernwin.CH_QFTYP_WHOLE_WORDS whole words quick filter type """ +ida_kernwin.CH_RENAME_IS_EDIT +""" +triggering a 'edit/rename' (i.e., F2 shortcut) on a cell, should call +the edit() callback for the corresponding row. +""" + ida_kernwin.CH_RESTORE """ restore floating position if present (equivalent of WOPN_RESTORE) (GUI @@ -60478,6 +62879,27 @@ ida_kernwin.CREATETB_ADV toolbar is for 'advanced mode' only """ +ida_kernwin.CVNF_ACT +""" +activate (i.e., switch to) the viewer. Activation is performed before +the new 'lochist_entry_t' instance is actually copied to the viewer's +'lochist_t' (otherwise, if the viewer was invisible its +on_location_changed() handler wouldn't be called.) +""" + +ida_kernwin.CVNF_JUMP +""" +'lochist_t' before going to the new location + +push the current position in this viewer's +""" + +ida_kernwin.CVNF_LAZY +""" +try and move the cursor to a line displaying the 'place_t' if +possible. This might disregard the Y position in case of success +""" + ida_kernwin.DP_BEFORE """ used with 'DP_INSIDE' . @@ -60510,6 +62932,12 @@ ida_kernwin.DP_RIGHT Dock src_form to the right of dest_form. """ +ida_kernwin.DP_SZHINT +""" +When floating or in a splitter (i.e., not tabbed), use the widget's +size hint to determine the best geometry (Qt only) +""" + ida_kernwin.DP_TAB """ Place src_form into a tab next to dest_form, if dest_form is in a tab @@ -60583,6 +63011,26 @@ ida_kernwin.HIST_TYPE type declarations """ +ida_kernwin.IDCHK_ARG +""" +bad argument(s) +""" + +ida_kernwin.IDCHK_KEY +""" +bad hotkey name +""" + +ida_kernwin.IDCHK_MAX +""" +too many IDC hotkeys +""" + +ida_kernwin.IDCHK_OK +""" +ok +""" + ida_kernwin.IWID_ADDRWATCH """ address watches (47) @@ -60593,6 +63041,11 @@ ida_kernwin.IWID_ALL mask """ +ida_kernwin.IWID_BOOKMARKS +""" +bookmarks list (59) +""" + ida_kernwin.IWID_BPTS """ breakpoints (13) @@ -60846,7 +63299,7 @@ type libraries (9) ida_kernwin.IWID_TRACE """ -trace view (16) +tracing view (16) """ ida_kernwin.IWID_UNDOHIST @@ -60920,6 +63373,17 @@ the corresponding makeplace() class implementation should return new instances. """ +ida_kernwin.RENADDR_HR +""" +dialog for "Pseudocode" additional flags: 0x01 Library function 0x02 +Mark as decompiled +""" + +ida_kernwin.RENADDR_IDA +""" +dialog for "IDA View" +""" + ida_kernwin.SETMENU_APP """ add menu item after the specified path @@ -60935,6 +63399,16 @@ ida_kernwin.SETMENU_INS add menu item before the specified path (default) """ +ida_kernwin.SVF_COPY_LINES +""" +keep a local copy of '*lines' +""" + +ida_kernwin.SVF_LINES_BYPTR +""" +remember the 'lines' ptr. do not make a copy of '*lines' +""" + ida_kernwin.UIJMP_ACTIVATE """ activate the new window @@ -60969,6 +63443,97 @@ Ctrl is pressedstate & 8 => Mouse left button is pressedstate & 16 => Mouse right button is pressedstate & 32 => Mouse middle button is pressedstate & 128 => Meta is pressed (OSX only) """ + +ida_kernwin.WCLS_DELETE_LATER +""" +assign the deletion of the widget to the UI loop ///< +""" + +ida_kernwin.WCLS_DONT_SAVE_SIZE +""" +don't save size of the window +""" + +ida_kernwin.WCLS_NO_CONTEXT +""" +don't change the current context (useful for toolbars) +""" + +ida_kernwin.WCLS_SAVE +""" +save state in desktop config +""" + +ida_kernwin.WOPN_CLOSED_BY_ESC +""" +override idagui.cfg:CLOSED_BY_ESC: esc will close +""" + +ida_kernwin.WOPN_DP_BEFORE +""" +place widget before dst_form in the tab bar instead of after used with +'WOPN_DP_INSIDE' and 'WOPN_DP_TAB' +""" + +ida_kernwin.WOPN_DP_BOTTOM +""" +Dock widget below dest_ctrl. +""" + +ida_kernwin.WOPN_DP_FLOATING +""" +Make widget floating. +""" + +ida_kernwin.WOPN_DP_INSIDE +""" +Create a new tab bar with both widget and dest_ctrl. +""" + +ida_kernwin.WOPN_DP_LEFT +""" +Dock widget to the left of dest_ctrl. +""" + +ida_kernwin.WOPN_DP_RIGHT +""" +Dock widget to the right of dest_ctrl. +""" + +ida_kernwin.WOPN_DP_SZHINT +""" +when floating or in a splitter (i.e., not tabbed), use the widget's +size hint to determine the best geometry (Qt only) +""" + +ida_kernwin.WOPN_DP_TAB +""" +Place widget into a tab next to dest_ctrl, if dest_ctrl is in a tab +bar (otherwise the same as 'WOPN_DP_INSIDE' ) +""" + +ida_kernwin.WOPN_DP_TOP +""" +Dock widget above dest_ctrl. +""" + +ida_kernwin.WOPN_NOT_CLOSED_BY_ESC +""" +override idagui.cfg:CLOSED_BY_ESC: esc will not close +""" + +ida_kernwin.WOPN_PERSIST +""" +widget will remain available when starting or stopping debugger +sessions +""" + +ida_kernwin.WOPN_RESTORE +""" +if the widget was the only widget in a floating area the last time it +was closed, it will be restored as floating, with the same +position+size as before +""" === ida_kernwin EPYDOC INJECTIONS END === Help on function COLSTR in module ida_lines: @@ -61633,7 +64198,9 @@ Help on function file2base in module ida_loader: file2base(*args) -> 'int' Load portion of file into the database. This function will include - (ea1..ea2) into the addressing space of the program (make it enabled) + (ea1..ea2) into the addressing space of the program (make it + enabled).The storage type of the specified range will be changed to + STT_VA. file2base(li, pos, ea1, ea2, patchable) -> int @param li: pointer of input source (C++: linput_t *) @@ -63837,6 +66404,12 @@ Help on function get_server_connection in module ida_lumina: get_server_connection(*args) -> 'lumina_client_t *' get_server_connection() -> lumina_client_t +Help on function get_server_connection2 in module ida_lumina: + +get_server_connection2(*args) -> 'lumina_client_t *' + get_server_connection2(feature) -> lumina_client_t + @param feature (C++: lumina_feature_t) + Help on function has_backup_metadata in module ida_lumina: has_backup_metadata(*args) -> 'bool' @@ -65965,6 +68538,11 @@ class bookmarks_t(builtins.object) | index: uint32 | ud: void * | + | get_dirtree_id(*args) -> 'dirtree_id_t' + | get_dirtree_id(e, ud) -> dirtree_id_t + | e: lochist_entry_t const & + | ud: void * + | | mark(*args) -> 'uint32' | mark(e, index, title, desc, ud) -> uint32 | e: lochist_entry_t const & @@ -66022,6 +68600,13 @@ bookmarks_t_get_desc(*args) -> 'qstring *' index: uint32 ud: void * +Help on function bookmarks_t_get_dirtree_id in module ida_moves: + +bookmarks_t_get_dirtree_id(*args) -> 'dirtree_id_t' + bookmarks_t_get_dirtree_id(e, ud) -> dirtree_id_t + e: lochist_entry_t const & + ud: void * + Help on function bookmarks_t_mark in module ida_moves: bookmarks_t_mark(*args) -> 'uint32' @@ -66313,9 +68898,6 @@ class renderer_info_t(builtins.object) | __swig_destroy__ = delete_renderer_info_t(...) | delete_renderer_info_t(self) | - | clear(self, *args) -> 'void' - | clear(self) - | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -66806,7 +69388,7 @@ Help on function clr_abits in module ida_nalt: clr_abits(*args) -> 'void' clr_abits(ea, bits) @param ea (C++: ea_t) - @param bits (C++: uint32) + @param bits (C++: aflags_t) Help on function clr_align_flow in module ida_nalt: @@ -67200,7 +69782,7 @@ find_custom_refinfo(*args) -> 'int' Help on function get_abi_name in module ida_nalt: -get_abi_name(*args) +get_abi_name() Help on function get_absbase in module ida_nalt: @@ -67210,8 +69792,8 @@ get_absbase(*args) -> 'ea_t' Help on function get_aflags in module ida_nalt: -get_aflags(*args) -> 'uint32' - get_aflags(ea) -> uint32 +get_aflags(*args) -> 'aflags_t' + get_aflags(ea) -> aflags_t @param ea (C++: ea_t) Help on function get_alignment in module ida_nalt: @@ -67263,6 +69845,11 @@ get_default_encoding_idx(*args) -> 'int' encoding is set - byte values are displayed without conversion. (C++: int) +Help on function get_elapsed_secs in module ida_nalt: + +get_elapsed_secs(*args) -> 'size_t' + Get seconds database stayed open. + Help on function get_encoding_bpu in module ida_nalt: get_encoding_bpu(*args) -> 'int' @@ -67292,6 +69879,24 @@ Help on function get_gotea in module ida_nalt: get_gotea(*args) -> 'ea_t' get_gotea() -> ea_t +Help on function get_ida_notepad_text in module ida_nalt: + +get_ida_notepad_text(*args) -> 'ssize_t' + Get notead text. + + get_ida_notepad_text(text) -> ssize_t + @param text (C++: qstring *) + +Help on function get_idb_ctime in module ida_nalt: + +get_idb_ctime(*args) -> 'time_t' + Get database creation timestamp. + +Help on function get_idb_nopens in module ida_nalt: + +get_idb_nopens(*args) -> 'size_t' + Get number of times the database is opened. + Help on function get_ids_modnode in module ida_nalt: get_ids_modnode(*args) -> 'netnode' @@ -67320,6 +69925,15 @@ get_ind_purged(*args) -> 'ea_t' get_ind_purged(ea) -> ea_t @param ea (C++: ea_t) +Help on function get_initial_ida_version in module ida_nalt: + +get_initial_ida_version(*args) -> 'ushort' + Get version of ida which created the database (string format like + "7.5") + + get_initial_ida_version(ver) -> ssize_t + @param ver (C++: qstring *) + Help on function get_input_file_path in module ida_nalt: get_input_file_path(*args) -> 'size_t' @@ -67331,6 +69945,11 @@ get_item_color(*args) -> 'bgcolor_t' get_item_color(ea) -> bgcolor_t @param ea (C++: ea_t) +Help on function get_loader_format_name in module ida_nalt: + +get_loader_format_name(*args) -> 'qstring *' + Get file format name for loader modules. + Help on function get_op_tinfo in module ida_nalt: get_op_tinfo(*args) -> 'bool' @@ -67373,6 +69992,22 @@ get_source_linnum(*args) -> 'uval_t' get_source_linnum(ea) -> uval_t @param ea (C++: ea_t) +Help on function get_srcdbg_paths in module ida_nalt: + +get_srcdbg_paths(*args) -> 'ssize_t' + Get source debug paths. + + get_srcdbg_paths(paths) -> ssize_t + @param paths (C++: qstring *) + +Help on function get_srcdbg_undesired_paths in module ida_nalt: + +get_srcdbg_undesired_paths(*args) -> 'ssize_t' + Get user-closed source files. + + get_srcdbg_undesired_paths(paths) -> ssize_t + @param paths (C++: qstring *) + Help on function get_str_encoding_idx in module ida_nalt: get_str_encoding_idx(*args) -> 'uchar' @@ -67411,6 +70046,12 @@ get_str_type_prefix_length(*args) -> 'size_t' get_str_type_prefix_length(strtype) -> size_t @param strtype (C++: int32) +Help on function get_strid in module ida_nalt: + +get_strid(*args) -> 'tid_t' + get_strid(ea) -> tid_t + @param ea (C++: ea_t) + Help on function get_strtype_bpu in module ida_nalt: get_strtype_bpu(*args) -> 'int' @@ -67440,6 +70081,36 @@ getnode(*args) -> 'netnode' getnode(ea) -> netnode @param ea (C++: ea_t) +Help on function has_aflag_linnum in module ida_nalt: + +has_aflag_linnum(*args) -> 'bool' + has_aflag_linnum(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_lname in module ida_nalt: + +has_aflag_lname(*args) -> 'bool' + has_aflag_lname(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti in module ida_nalt: + +has_aflag_ti(*args) -> 'bool' + has_aflag_ti(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti0 in module ida_nalt: + +has_aflag_ti0(*args) -> 'bool' + has_aflag_ti0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti1 in module ida_nalt: + +has_aflag_ti1(*args) -> 'bool' + has_aflag_ti1(flags) -> bool + @param flags (C++: aflags_t) + Help on function has_lname in module ida_nalt: has_lname(*args) -> 'bool' @@ -67500,6 +70171,180 @@ is__invsign1(*args) -> 'bool' is__invsign1(ea) -> bool @param ea (C++: ea_t) +Help on function is_aflag__bnot0 in module ida_nalt: + +is_aflag__bnot0(*args) -> 'bool' + is_aflag__bnot0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__bnot1 in module ida_nalt: + +is_aflag__bnot1(*args) -> 'bool' + is_aflag__bnot1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__invsign0 in module ida_nalt: + +is_aflag__invsign0(*args) -> 'bool' + is_aflag__invsign0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__invsign1 in module ida_nalt: + +is_aflag__invsign1(*args) -> 'bool' + is_aflag__invsign1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_align_flow in module ida_nalt: + +is_aflag_align_flow(*args) -> 'bool' + is_aflag_align_flow(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_colored_item in module ida_nalt: + +is_aflag_colored_item(*args) -> 'bool' + is_aflag_colored_item(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_data_guessed_by_hexrays in module ida_nalt: + +is_aflag_data_guessed_by_hexrays(*args) -> 'bool' + is_aflag_data_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_fixed_spd in module ida_nalt: + +is_aflag_fixed_spd(*args) -> 'bool' + is_aflag_fixed_spd(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_func_guessed_by_hexrays in module ida_nalt: + +is_aflag_func_guessed_by_hexrays(*args) -> 'bool' + is_aflag_func_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_hidden_border in module ida_nalt: + +is_aflag_hidden_border(*args) -> 'bool' + is_aflag_hidden_border(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_hidden_item in module ida_nalt: + +is_aflag_hidden_item(*args) -> 'bool' + is_aflag_hidden_item(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_libitem in module ida_nalt: + +is_aflag_libitem(*args) -> 'bool' + is_aflag_libitem(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_lzero0 in module ida_nalt: + +is_aflag_lzero0(*args) -> 'bool' + is_aflag_lzero0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_lzero1 in module ida_nalt: + +is_aflag_lzero1(*args) -> 'bool' + is_aflag_lzero1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_manual_insn in module ida_nalt: + +is_aflag_manual_insn(*args) -> 'bool' + is_aflag_manual_insn(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_noret in module ida_nalt: + +is_aflag_noret(*args) -> 'bool' + is_aflag_noret(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_notcode in module ida_nalt: + +is_aflag_notcode(*args) -> 'bool' + is_aflag_notcode(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_notproc in module ida_nalt: + +is_aflag_notproc(*args) -> 'bool' + is_aflag_notproc(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_public_name in module ida_nalt: + +is_aflag_public_name(*args) -> 'bool' + is_aflag_public_name(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_retfp in module ida_nalt: + +is_aflag_retfp(*args) -> 'bool' + is_aflag_retfp(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_terse_struc in module ida_nalt: + +is_aflag_terse_struc(*args) -> 'bool' + is_aflag_terse_struc(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_tilcmt in module ida_nalt: + +is_aflag_tilcmt(*args) -> 'bool' + is_aflag_tilcmt(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_determined_by_hexrays in module ida_nalt: + +is_aflag_type_determined_by_hexrays(*args) -> 'bool' + is_aflag_type_determined_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_guessed_by_hexrays in module ida_nalt: + +is_aflag_type_guessed_by_hexrays(*args) -> 'bool' + is_aflag_type_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_guessed_by_ida in module ida_nalt: + +is_aflag_type_guessed_by_ida(*args) -> 'bool' + is_aflag_type_guessed_by_ida(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_usersp in module ida_nalt: + +is_aflag_usersp(*args) -> 'bool' + is_aflag_usersp(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_userti in module ida_nalt: + +is_aflag_userti(*args) -> 'bool' + is_aflag_userti(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_weak_name in module ida_nalt: + +is_aflag_weak_name(*args) -> 'bool' + is_aflag_weak_name(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_zstroff in module ida_nalt: + +is_aflag_zstroff(*args) -> 'bool' + is_aflag_zstroff(flags) -> bool + @param flags (C++: aflags_t) + Help on function is_align_flow in module ida_nalt: is_align_flow(*args) -> 'bool' @@ -67512,6 +70357,12 @@ is_colored_item(*args) -> 'bool' is_colored_item(ea) -> bool @param ea (C++: ea_t) +Help on function is_data_guessed_by_hexrays in module ida_nalt: + +is_data_guessed_by_hexrays(*args) -> 'bool' + is_data_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + Help on function is_finally_visible_item in module ida_nalt: is_finally_visible_item(*args) -> 'bool' @@ -67526,6 +70377,12 @@ is_fixed_spd(*args) -> 'bool' is_fixed_spd(ea) -> bool @param ea (C++: ea_t) +Help on function is_func_guessed_by_hexrays in module ida_nalt: + +is_func_guessed_by_hexrays(*args) -> 'bool' + is_func_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + Help on function is_hidden_border in module ida_nalt: is_hidden_border(*args) -> 'bool' @@ -67608,6 +70465,24 @@ is_tilcmt(*args) -> 'bool' is_tilcmt(ea) -> bool @param ea (C++: ea_t) +Help on function is_type_determined_by_hexrays in module ida_nalt: + +is_type_determined_by_hexrays(*args) -> 'bool' + is_type_determined_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + +Help on function is_type_guessed_by_hexrays in module ida_nalt: + +is_type_guessed_by_hexrays(*args) -> 'bool' + is_type_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + +Help on function is_type_guessed_by_ida in module ida_nalt: + +is_type_guessed_by_ida(*args) -> 'bool' + is_type_guessed_by_ida(ea) -> bool + @param ea (C++: ea_t) + Help on function is_usersp in module ida_nalt: is_usersp(*args) -> 'bool' @@ -67727,7 +70602,7 @@ class printop_t(builtins.object) | list of weak references to the object (if defined) | | aflags - | printop_t_aflags_get(self) -> flags_t + | printop_t_aflags_get(self) -> aflags_t | | features | printop_t_features_get(self) -> uchar @@ -67848,7 +70723,7 @@ retrieve_input_file_sha256(*args) -> 'uchar [ANY]' Help on function retrieve_input_file_size in module ida_nalt: -retrieve_input_file_size(*args) -> 'uint32' +retrieve_input_file_size(*args) -> 'size_t' Get size of input file in bytes. Help on function set__bnot0 in module ida_nalt: @@ -67880,7 +70755,7 @@ Help on function set_abits in module ida_nalt: set_abits(*args) -> 'void' set_abits(ea, bits) @param ea (C++: ea_t) - @param bits (C++: uint32) + @param bits (C++: aflags_t) Help on function set_absbase in module ida_nalt: @@ -67894,7 +70769,7 @@ Help on function set_aflags in module ida_nalt: set_aflags(*args) -> 'void' set_aflags(ea, flags) @param ea (C++: ea_t) - @param flags (C++: uint32) + @param flags (C++: aflags_t) Help on function set_align_flow in module ida_nalt: @@ -67945,6 +70820,12 @@ set_custom_data_type_ids(*args) -> 'void' @param ea (C++: ea_t) @param cdis (C++: const custom_data_type_ids_t *) +Help on function set_data_guessed_by_hexrays in module ida_nalt: + +set_data_guessed_by_hexrays(*args) -> 'void' + set_data_guessed_by_hexrays(ea) + @param ea (C++: ea_t) + Help on function set_default_encoding_idx in module ida_nalt: set_default_encoding_idx(*args) -> 'bool' @@ -67961,6 +70842,12 @@ set_fixed_spd(*args) -> 'void' set_fixed_spd(ea) @param ea (C++: ea_t) +Help on function set_func_guessed_by_hexrays in module ida_nalt: + +set_func_guessed_by_hexrays(*args) -> 'void' + set_func_guessed_by_hexrays(ea) + @param ea (C++: ea_t) + Help on function set_gotea in module ida_nalt: set_gotea(*args) -> 'void' @@ -67991,6 +70878,15 @@ set_has_ti1(*args) -> 'void' set_has_ti1(ea) @param ea (C++: ea_t) +Help on function set_ida_notepad_text in module ida_nalt: + +set_ida_notepad_text(*args) -> 'void' + Set notead text. + + set_ida_notepad_text(text, size=0) + @param text (C++: const char *) + @param size (C++: size_t) + Help on function set_ids_modnode in module ida_nalt: set_ids_modnode(*args) -> 'void' @@ -68020,6 +70916,14 @@ set_libitem(*args) -> 'void' set_libitem(ea) @param ea (C++: ea_t) +Help on function set_loader_format_name in module ida_nalt: + +set_loader_format_name(*args) -> 'void' + Set file format name for loader modules. + + set_loader_format_name(name) + @param name (C++: const char *) + Help on function set_lzero0 in module ida_nalt: set_lzero0(*args) -> 'void' @@ -68066,8 +70970,8 @@ set_outfile_encoding_idx(*args) -> 'bool' set encoding to be used when producing files set_outfile_encoding_idx(idx) -> bool - @param idx: - + @param idx: the encoding index idx can be 0 to use the IDB's default + 1-byte-per-unit encoding (C++: int) Help on function set_refinfo in module ida_nalt: @@ -68109,6 +71013,22 @@ set_source_linnum(*args) -> 'void' @param ea (C++: ea_t) @param lnnum (C++: uval_t) +Help on function set_srcdbg_paths in module ida_nalt: + +set_srcdbg_paths(*args) -> 'void' + Set source debug paths. + + set_srcdbg_paths(paths) + @param paths (C++: const char *) + +Help on function set_srcdbg_undesired_paths in module ida_nalt: + +set_srcdbg_undesired_paths(*args) -> 'void' + Set user-closed source files. + + set_srcdbg_undesired_paths(paths) + @param paths (C++: const char *) + Help on function set_str_type in module ida_nalt: set_str_type(*args) -> 'void' @@ -68149,6 +71069,18 @@ set_tinfo(*args) -> 'bool' @param ea (C++: ea_t) @param tif (C++: const tinfo_t *) +Help on function set_type_determined_by_hexrays in module ida_nalt: + +set_type_determined_by_hexrays(*args) -> 'void' + set_type_determined_by_hexrays(ea) + @param ea (C++: ea_t) + +Help on function set_type_guessed_by_ida in module ida_nalt: + +set_type_guessed_by_ida(*args) -> 'void' + set_type_guessed_by_ida(ea) + @param ea (C++: ea_t) + Help on function set_usemodsp in module ida_nalt: set_usemodsp(*args) -> 'void' @@ -68352,6 +71284,9 @@ class switch_info_t(builtins.object) | is_subtract(self, *args) -> 'bool' | is_subtract(self) -> bool | + | is_user_defined(self, *args) -> 'bool' + | is_user_defined(self) -> bool + | | set_elbase(self, *args) -> 'void' | set_elbase(self, base) | @param base (C++: ea_t) @@ -68462,6 +71397,20 @@ unhide_item(*args) -> 'void' unhide_item(ea) @param ea (C++: ea_t) +Help on function upd_abits in module ida_nalt: + +upd_abits(*args) -> 'void' + upd_abits(ea, clr_bits, set_bits) + @param ea (C++: ea_t) + @param clr_bits (C++: aflags_t) + @param set_bits (C++: aflags_t) + +Help on function uses_aflag_modsp in module ida_nalt: + +uses_aflag_modsp(*args) -> 'bool' + uses_aflag_modsp(flags) -> bool + @param flags (C++: aflags_t) + Help on function uses_modsp in module ida_nalt: uses_modsp(*args) -> 'bool' @@ -68507,6 +71456,26 @@ ida_nalt.AFL_HIDDEN the item is hidden completely """ +ida_nalt.AFL_HR_DETERMINED +""" +the type is definitely guessed by the decompiler +""" + +ida_nalt.AFL_HR_GUESSED_DATA +""" +the data type is guessed by the decompiler +""" + +ida_nalt.AFL_HR_GUESSED_FUNC +""" +the function type is guessed by the decompiler +""" + +ida_nalt.AFL_IDA_GUESSED +""" +the type is guessed by IDA +""" + ida_nalt.AFL_LIB """ item from the standard library. low level flag, is used to set @@ -68586,7 +71555,8 @@ terse structure variable display? ida_nalt.AFL_TI """ -has typeinfo? ( 'NSUP_TYPEINFO' ) +has typeinfo? ( 'NSUP_TYPEINFO' ); used only for addresses, not for +'member_t' """ ida_nalt.AFL_TI0 @@ -68604,6 +71574,11 @@ ida_nalt.AFL_TILCMT has type comment? (such a comment may be changed by IDA) """ +ida_nalt.AFL_TYPE_GUESSED +""" +who guessed the type information? +""" + ida_nalt.AFL_USEMODSP """ example: pop [rsp+N] @@ -68618,9 +71593,8 @@ user-defined SP value ida_nalt.AFL_USERTI """ -(comes from the user or type library) - -the type information is definitive. +the type information is definitive. (comes from the user or type +library) if not set see 'AFL_TYPE_GUESSED' """ ida_nalt.AFL_WEAKNAM @@ -69029,9 +72003,8 @@ Patch netnode tag. ida_nalt.REFINFO_CUSTOM """ -a custom reference the kernel will call \\ph{notify}(ph.custom_offset, -.... that can change all arguments used for calculations. This flag is -useful for custom fixups +a custom reference. see 'custom_refinfo_handler_t' . the id of the +custom refinfo is stored under the REFINFO_TYPE mask. """ ida_nalt.REFINFO_NOBASE @@ -69068,7 +72041,9 @@ usual) being added to it ida_nalt.REFINFO_TYPE """ -reference type +reference ID if REFINFO_CUSTOM set + +reference type (reftype_t), or custom """ ida_nalt.RIDX_ABINAME @@ -69141,11 +72116,6 @@ ida_nalt.RIDX_PROBLEMS problem lists """ -ida_nalt.RIDX_SELECTED_EXTLANG -""" -last selected extlang name (from the execute script box) -""" - ida_nalt.RIDX_SELECTORS """ 2..63 are for selector_t blob (see init_selectors()) @@ -69306,11 +72276,6 @@ ida_nalt.SWI_JSIZE jump offset expansion bit """ -ida_nalt.SWI_RESERVED -""" -was: SWI_DEFAULT -""" - ida_nalt.SWI_SELFREL """ jump address is relative to the element not to ELBASE @@ -69350,6 +72315,11 @@ ida_nalt.SWI_SUBTRACT table values are subtracted from the elbase instead of being added """ +ida_nalt.SWI_USER +""" +user specified switch (starting from version 2) +""" + ida_nalt.SWI_V32 """ 32-bit values in table @@ -69924,7 +72894,7 @@ is_ident_cp(*args) -> 'bool' Help on function is_in_nlist in module ida_name: is_in_nlist(*args) -> 'bool' - Is name included into names list? + Is the name included into the name list? is_in_nlist(ea) -> bool @param ea (C++: ea_t) @@ -70046,7 +73016,7 @@ make_name_weak(*args) -> 'void' Help on function rebuild_nlist in module ida_name: rebuild_nlist(*args) -> 'void' - Rebuild names list. + Rebuild the name list. Help on function reorder_dummy_names in module ida_name: @@ -70102,8 +73072,8 @@ set_name(*args) -> 'bool' @param flags: Set name flags . If a bit is not specified, then the corresponding action is not performed and the name will retain the same bits as before calling this function. - For new names, default is: non-public, non-weak, non- - auto. (C++: int) + For new names, default is: non-public, non-weak, + non-auto. (C++: int) @retval: 1 - ok, name is changed @retval: 0 - failure, a warning is displayed @@ -70630,8 +73600,8 @@ class netnode(builtins.object) | tag: uchar | | copyto(self, *args) -> 'size_t' - | copyto(self, target, count=1) -> size_t - | target: netnode + | copyto(self, destnode, count=1) -> size_t + | destnode: netnode | count: nodeidx_t | | create(self, *args) -> 'bool' @@ -70806,8 +73776,8 @@ class netnode(builtins.object) | tag: uchar | | moveto(self, *args) -> 'size_t' - | moveto(self, target, count=1) -> size_t - | target: netnode + | moveto(self, destnode, count=1) -> size_t + | destnode: netnode | count: nodeidx_t | | next(self, *args) -> 'bool' @@ -70988,6 +73958,13 @@ class netnode(builtins.object) | value_exists(self) -> bool | | ---------------------------------------------------------------------- + | Static methods defined here: + | + | exist(*args) -> 'bool' + | exist(_name) -> bool + | _name: char const * + | + | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ @@ -71004,6 +73981,12 @@ class netnode(builtins.object) | | __hash__ = None +Help on function netnode_exist in module ida_netnode: + +netnode_exist(*args) -> 'bool' + netnode_exist(_name) -> bool + _name: char const * + === ida_netnode EPYDOC INJECTIONS === ida_netnode.BADNODE """ @@ -71188,10 +74171,10 @@ Help on function op_offset in module ida_offset: op_offset(*args) -> 'bool' See 'op_offset_ex()' - op_offset(ea, n, type, target=BADADDR, base=0, tdelta=0) -> bool + op_offset(ea, n, type_and_flags, target=BADADDR, base=0, tdelta=0) -> bool @param ea (C++: ea_t) @param n (C++: int) - @param type (C++: reftype_t) + @param type_and_flags (C++: uint32) @param target (C++: ea_t) @param base (C++: ea_t) @param tdelta (C++: adiff_t) @@ -73417,7 +76400,7 @@ UTF-16 codepage. ida_pro.IDA_SDK_VERSION """ -IDA SDK v7.5. +IDA SDK v7.6. """ ida_pro.IDBDEC_ESCAPE @@ -75303,6 +78286,15 @@ class segment_t(ida_range.range_t) | comorg(self, *args) -> 'bool' | comorg(self) -> bool | + | is_16bit(self, *args) -> 'bool' + | Is a 16-bit segment? + | + | is_32bit(self, *args) -> 'bool' + | Is a 32-bit segment? + | + | is_64bit(self, *args) -> 'bool' + | Is a 64-bit segment? + | | is_header_segm(self, *args) -> 'bool' | is_header_segm(self) -> bool | @@ -75350,11 +78342,7 @@ class segment_t(ida_range.range_t) | segment structure may be modified directly, there are special | functions to modify some fields. | - | use32(self, *args) -> 'bool' - | Use 32 bit segment addressing? - | - | use64(self, *args) -> 'bool' - | Use 64 bit segment addressing? + | use64 = is_64bit(self, *args) -> 'bool' | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -75774,7 +78762,9 @@ silent mode, no "Adding segment..." in the messages window ida_segment.ADDSEG_SPARSE """ -use sparse storage method for the new segment +use sparse storage method for the new ranges of the created segment. +please note that the ranges that were already enabled before creating +the segment will not change their storage type. """ ida_segment.CSS_BREAK @@ -76463,11 +79453,124 @@ ida_segregs.SR_user the value is specified by the user """ === ida_segregs EPYDOC INJECTIONS END === +Help on function generate_til_with_parser in module ida_srclang: + +generate_til_with_parser(*args) -> 'int' + Generate a standalone IDA type library from the given header file, + using the parser with the given name + + generate_til_with_parser(parser_name, tilname, tildesc, tildir, header) -> int + @param parser_name: name of the target parser (C++: const char *) + @param tilname: the name of the resulting type library (C++: const + char *) + @param tildesc: a short description of the TIL (C++: const char *) + @param tildir: directory where the TIL will be stored (C++: const char + *) + @param header: path to a header file (C++: const char *) + @retval: -1 - no parser was found with the given name + @retval: -2 - operation is not supported by the given parser + @retval: 0 - ok + @retval: else - an error occurred when generating the til, consult the + output window + +Help on function parse_decls_for_srclang in module ida_srclang: + +parse_decls_for_srclang(*args) -> 'int' + Parse type declarations in the specified language + + parse_decls_for_srclang(lang, til, input, is_path) -> int + @param lang: the source language(s) expected in the input (C++: + srclang_t) + @param til: type library to store the types (C++: til_t *) + @param input: input source. can be a file path or decl string (C++: + const char *) + @param is_path: true if input parameter is a path to a source file, + false if the input is an in-memory source snippet + (C++: bool) + @retval: -1 - no parser was found that supports the given source + language(s) + @retval: else - the number of errors encountered in the input source + +Help on function parse_decls_with_parser in module ida_srclang: + +parse_decls_with_parser(*args) -> 'int' + Parse type declarations using the parser with the specified name + + parse_decls_with_parser(parser_name, til, input, is_path) -> int + @param parser_name: name of the target parser (C++: const char *) + @param til: type library to store the types (C++: til_t *) + @param input: input source. can be a file path or decl string (C++: + const char *) + @param is_path: true if input parameter is a path to a source file, + false if the input is an in-memory source snippet + (C++: bool) + @retval: -1 - no parser was found with the given name + @retval: else - the number of errors encountered in the input source + +Help on function select_parser_by_name in module ida_srclang: + +select_parser_by_name(*args) -> 'bool' + Set the parser with the given name as the current parser. Pass NULL or + an empty string to select the default parser. + + select_parser_by_name(name) -> bool + @param name (C++: const char *) + @return: false if no parser was found with the given name + +Help on function select_parser_by_srclang in module ida_srclang: + +select_parser_by_srclang(*args) -> 'bool' + Set the parser that supports the given language(s) as the current + parser. The selected parser must support all languages specified by + the given 'srclang_t' . + + select_parser_by_srclang(lang) -> bool + @param lang (C++: srclang_t) + @return: false if no such parser was found + +Help on function set_parser_argv in module ida_srclang: + +set_parser_argv(*args) -> 'int' + Set the command-line args to use for invocations of the parser with + the given name + + set_parser_argv(parser_name, argv) -> int + @param parser_name: name of the target parser (C++: const char *) + @param argv: argument list (C++: const char *) + @retval: -1 - no parser was found with the given name + @retval: -2 - the operation is not supported by the given parser + @retval: else - all other values indicate success + +=== ida_srclang EPYDOC INJECTIONS === +ida_srclang.SRCLANG_C +""" +C. +""" + +ida_srclang.SRCLANG_CPP +""" +C++. +""" + +ida_srclang.SRCLANG_GO +""" +Golang (not supported yet) +""" + +ida_srclang.SRCLANG_OBJC +""" +Objective-C. +""" + +ida_srclang.SRCLANG_SWIFT +""" +Swift (not supported yet) +""" +=== ida_srclang EPYDOC INJECTIONS END === Help on function build_strlist in module ida_strlist: build_strlist(*args) -> 'void' - Build the string list. You should initialize options before this call - using the restore_config() or setup_strings_window() methods. + Rebuild the string list. Help on function clear_strlist in module ida_strlist: @@ -76485,13 +79588,14 @@ get_strlist_item(*args) -> 'bool' Help on function get_strlist_options in module ida_strlist: -get_strlist_options(*args) -> 'strwinsetup_t *' - Get access to the static string list options. +get_strlist_options(*args) -> 'strwinsetup_t const *' + Get the static string list options. Help on function get_strlist_qty in module ida_strlist: get_strlist_qty(*args) -> 'size_t' - Get number of elements in the string list. + Get number of elements in the string list. The list will be loaded + from the database (if saved) or built from scratch. Help on class string_info_t in module ida_strlist: @@ -76556,9 +79660,6 @@ class strwinsetup_t(builtins.object) | _set_strtypes(self, py_t) -> PyObject * | py_t: PyObject * | - | is_initialized(self, *args) -> 'bool' - | is_initialized(self) -> bool - | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -76728,6 +79829,20 @@ Help on function get_first_struc_idx in module ida_struct: get_first_struc_idx(*args) -> 'uval_t' Get index of first structure. +Help on function get_innermost_member in module ida_struct: + +get_innermost_member(*args) -> 'PyObject *' + get_innermost_member(sptr, offset) -> PyObject * + Get the innermost member at the given offset + @param sptr: the starting structure + @param offset: offset into the starting structure + @return: + - None on failure + - tuple(member_t, struct_t, offset) + where member_t: a member in SPTR (it is not a structure), + struct_t: the innermost structure, + offset: remaining offset into the returned member + Help on function get_last_struc_idx in module ida_struct: get_last_struc_idx(*args) -> 'uval_t' @@ -78749,7 +81864,10 @@ append_abi_opts(*args) -> 'bool' Help on function append_argloc in module ida_typeinf: append_argloc(*args) -> 'bool' - Serialize argument location. + Serialize argument location Deserialize an argument location. Argument + FORBID_STKOFF check location type. It can be used, for example, to + check the return location of a function that cannot return a value in + the stack append_argloc(out, vloc) -> bool @param out (C++: qtype *) @@ -79007,6 +82125,9 @@ class argloc_t(builtins.object) | has_stkoff(self, *args) -> 'bool' | TRUE if argloc has a stack part. | + | in_stack(self, *args) -> 'bool' + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) -> 'bool' | See 'ALOC_NONE' . | @@ -79302,6 +82423,9 @@ class argpart_t(argloc_t) | has_stkoff(self, *args) -> 'bool' | TRUE if argloc has a stack part. | + | in_stack(self, *args) -> 'bool' + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) -> 'bool' | See 'ALOC_NONE' . | @@ -80093,6 +83217,15 @@ del_tinfo_attr(*args) -> 'bool' key: qstring const & make_copy: bool +Help on function del_vftable_ea in module ida_typeinf: + +del_vftable_ea(*args) -> 'bool' + Delete the address of a vftable instance for a vftable type. + + del_vftable_ea(ordinal) -> bool + @param ordinal: ordinal number of a vftable type. (C++: uint32) + @return: success + Help on function deref_ptr in module ida_typeinf: deref_ptr(*args) -> 'bool' @@ -80562,12 +83695,10 @@ class enum_type_data_t(enum_member_vec_t) Help on function extract_argloc in module ida_typeinf: extract_argloc(*args) -> 'bool' - Deserialize argument location. - - extract_argloc(vloc, ptype, is_retval) -> bool + extract_argloc(vloc, ptype, forbid_stkoff) -> bool @param vloc (C++: argloc_t *) @param ptype (C++: const type_t **) - @param is_retval (C++: bool) + @param forbid_stkoff (C++: bool) Help on function find_tinfo_udt_member in module ida_typeinf: @@ -80666,6 +83797,9 @@ class func_type_data_t(funcargvec_t) | @param purged (C++: int) | @param cc_flags (C++: int) | + | is_golang_cc(self, *args) -> 'bool' + | is_golang_cc(self) -> bool + | | is_high(self, *args) -> 'bool' | is_high(self) -> bool | @@ -81361,6 +84495,26 @@ get_type_ordinal(*args) -> 'int32' @param ti (C++: const til_t *) @param name (C++: const char *) +Help on function get_vftable_ea in module ida_typeinf: + +get_vftable_ea(*args) -> 'ea_t' + Get address of a virtual function table. + + get_vftable_ea(ordinal) -> ea_t + @param ordinal: ordinal number of a vftable type. (C++: uint32) + @return: address of the corresponding virtual function table in the + current database. + +Help on function get_vftable_ordinal in module ida_typeinf: + +get_vftable_ordinal(*args) -> 'uint32' + Get ordinal number of the virtual function table. + + get_vftable_ordinal(vftable_ea) -> uint32 + @param vftable_ea: address of a virtual function table. (C++: ea_t) + @return: ordinal number of the corresponding vftable type. 0 - + failure. + Help on function guess_func_cc in module ida_typeinf: guess_func_cc(*args) -> 'cm_t' @@ -81568,6 +84722,14 @@ Help on function is_gcc64 in module ida_typeinf: is_gcc64(*args) -> 'bool' Is the target compiler 64 bit gcc? +Help on function is_golang_cc in module ida_typeinf: + +is_golang_cc(*args) -> 'bool' + GO language calling convention (return value in stack)? + + is_golang_cc(cc) -> bool + @param cc (C++: cm_t) + Help on function is_ordinal_name in module ida_typeinf: is_ordinal_name(*args) -> 'bool' @@ -83221,6 +86383,17 @@ set_type_alias(*args) -> 'bool' @param src_ordinal (C++: uint32) @param dst_ordinal (C++: uint32) +Help on function set_vftable_ea in module ida_typeinf: + +set_vftable_ea(*args) -> 'bool' + Set the address of a vftable instance for a vftable type. + + set_vftable_ea(ordinal, vftable_ea) -> bool + @param ordinal: ordinal number of the corresponding vftable type. + (C++: uint32) + @param vftable_ea: address of a virtual function table. (C++: ea_t) + @return: success + Help on class simd_info_t in module ida_typeinf: class simd_info_t(builtins.object) @@ -83283,6 +86456,11 @@ store_til(*args) -> 'bool' const char *) @return: success +Help on function switch_to_golang in module ida_typeinf: + +switch_to_golang(*args) -> 'void' + switch to GOLANG calling convention (to be used as default CC) + Help on class text_sink_t in module ida_typeinf: class text_sink_t(builtins.object) @@ -84805,6 +87983,9 @@ class udt_type_data_t(udtmembervec_t) | is_vftable(self, *args) -> 'bool' | is_vftable(self) -> bool | + | set_vftable(self, *args) -> 'void' + | set_vftable(self) + | | swap(self, *args) -> 'void' | swap(self, r) | @param r (C++: udt_type_data_t &) @@ -85190,6 +88371,11 @@ unpack_object_from_idb(*args) -> 'PyObject *' ea: ea_t pio_flags: int +Help on function use_golang_cc in module ida_typeinf: + +use_golang_cc(*args) -> 'bool' + is GOLANG calling convention used by default? + Help on class valstr_t in module ida_typeinf: class valstr_t(builtins.object) @@ -85589,6 +88775,11 @@ ida_typeinf.CC_CDECL_OK can use __cdecl calling convention? """ +ida_typeinf.CC_GOLANG_OK +""" +can use __golang calling convention +""" + ida_typeinf.CC_HAS_ELLIPSIS """ function has a variable list of arguments? @@ -85620,6 +88811,11 @@ ida_typeinf.FAI_STRUCT was initially a structure """ +ida_typeinf.FAI_UNUSED +""" +argument is not used by the function +""" + ida_typeinf.FTI_ALL """ all defined bits @@ -85642,6 +88838,11 @@ ida_typeinf.FTI_DEFCALL default call """ +ida_typeinf.FTI_EXPLOCS +""" +all arglocs are specified explicitly +""" + ida_typeinf.FTI_FARCALL """ far call @@ -86656,23 +89857,6 @@ get_printable_immvals(*args) -> 'PyObject *' @param F: flags for the specified address (C++: flags_t) @return: number of immediate values (0..2* UA_MAXOP ) -Help on function guess_table_address in module ida_ua: - -guess_table_address(*args) -> 'ea_t' - Guess the jump table address (ibm pc specific) - - guess_table_address(insn) -> ea_t - @param insn - an ida_ua.insn_t, or an address (C++: const insn_t &) - -Help on function guess_table_size in module ida_ua: - -guess_table_size(*args) -> 'asize_t' - Guess the jump table size. - - guess_table_size(insn, jump_table) -> asize_t - @param insn - an ida_ua.insn_t, or an address (C++: const insn_t &) - @param jump_table (C++: ea_t) - Help on function insn_add_cref in module ida_ua: insn_add_cref(*args) -> 'void' @@ -86850,6 +90034,10 @@ class insn_t(builtins.object) | | Op6 | + | Op7 + | + | Op8 + | | __dict__ | dictionary for instance variables (if defined) | @@ -87670,6 +90858,9 @@ class outctx_t(outctx_base_t) | procmod | outctx_t_procmod_get(self) -> procmod_t | + | saved_immvals + | outctx_t_saved_immvals_get(self) -> uval_t [8] + | | thisown | The membership flag | @@ -89591,12 +92782,17 @@ clear_trace(filename) Help on function create_align in module ida_bytes: create_align(*args) -> 'bool' - Alignment: 0 or 2..32. If it is 0, is will be calculated. + Create an alignment item. create_align(ea, length, alignment) -> bool - @param ea (C++: ea_t) - @param length (C++: asize_t) - @param alignment (C++: int) + @param ea: linear address (C++: ea_t) + @param length: size of the item in bytes. 0 means to infer from + ALIGNMENT (C++: asize_t) + @param alignment: alignment exponent. Example: 3 means align to 8 + bytes. 0 means to infer from LENGTH It is forbidden + to specify both LENGTH and ALIGNMENT as 0. (C++: + int) + @return: success Help on function create_array in module idc: @@ -89920,12 +93116,8 @@ del_hidden_range(*args) -> 'bool' Help on function del_idc_hotkey in module ida_kernwin: del_idc_hotkey(*args) -> 'bool' - Delete IDC function hotkey ( 'ui_del_idckey' ). - del_idc_hotkey(hotkey) -> bool - @param hotkey: hotkey name (C++: const char *) - @retval: 1 - ok - @retval: 0 - failed + @param hotkey (C++: const char *) Help on function del_items in module ida_bytes: @@ -92498,9 +95690,9 @@ load_debugger(*args) -> 'bool' Help on function load_trace_file in module ida_dbg: load_trace_file(*args) -> 'qstring *' - Load a recorded trace file in the trace window. If the call succeeds - and 'buf' is not null, the description of the trace stored in the - binary trace file will be returned in 'buf' + Load a recorded trace file in the 'Tracing' window. If the call + succeeds and 'buf' is not null, the description of the trace stored in + the binary trace file will be returned in 'buf' load_trace_file(filename) -> str @param filename (C++: const char *) @@ -92689,10 +95881,10 @@ Help on function op_offset in module ida_offset: op_offset(*args) -> 'bool' See 'op_offset_ex()' - op_offset(ea, n, type, target=BADADDR, base=0, tdelta=0) -> bool + op_offset(ea, n, type_and_flags, target=BADADDR, base=0, tdelta=0) -> bool @param ea (C++: ea_t) @param n (C++: int) - @param type (C++: reftype_t) + @param type_and_flags (C++: uint32) @param target (C++: ea_t) @param base (C++: ea_t) @param tdelta (C++: adiff_t) diff --git a/python/idautils.py b/python/idautils.py index 4f456e3..f55f206 100644 --- a/python/idautils.py +++ b/python/idautils.py @@ -515,7 +515,7 @@ class Strings(object): return self._toseq(True) def clear_cache(self): - """Clears the strings list cache""" + """Clears the string list cache""" ida_strlist.clear_strlist() def __init__(self, default_setup = False): @@ -536,7 +536,7 @@ class Strings(object): def refresh(self): - """Refreshes the strings list""" + """Refreshes the string list""" ida_strlist.build_strlist() self.size = ida_strlist.get_strlist_qty() diff --git a/pywraps.cpp b/pywraps.cpp index 52460e9..6684df1 100644 --- a/pywraps.cpp +++ b/pywraps.cpp @@ -509,7 +509,7 @@ static int pyvar_to_idcvar2( else if ( PyFloat_Check(py_var.o) ) { double dresult = PyFloat_AsDouble(py_var.o); - ieee_realcvt((void *)&dresult, idc_var->e, 3); + ieee_realcvt((void *)&dresult, &idc_var->e, 3); idc_var->vtype = VT_FLOAT; } // void* @@ -831,7 +831,7 @@ int ida_export idcvar_to_pyvar( if ( *py_var == NULL ) { double x; - if ( processor_t::realcvt(&x, (uint16 *)idc_var.e, (sizeof(x)/2-1)|010) != 1 ) + if ( processor_t::realcvt(&x, (fpvalue_t*)&idc_var.e, (sizeof(x)/2-1)|010) != 1 ) INTERR(30160); *py_var = newref_t(PyFloat_FromDouble(x)); diff --git a/pywraps.hpp b/pywraps.hpp index 2c79a03..7e0a498 100644 --- a/pywraps.hpp +++ b/pywraps.hpp @@ -118,6 +118,7 @@ static const char S_ON_GET_SIZE[] = "OnGetSize"; static const char S_ON_GETTEXT[] = "OnGetText"; static const char S_ON_GET_DIRTREE[] = "OnGetDirTree"; static const char S_ON_INDEX_TO_INODE[] = "OnIndexToInode"; +static const char S_ON_INDEX_TO_DIFFPOS[] = "OnIndexToDiffpos"; static const char S_ON_ACTIVATE[] = "OnActivate"; static const char S_ON_DEACTIVATE[] = "OnDeactivate"; static const char S_ON_SELECT[] = "OnSelect"; diff --git a/pywraps/py_bytes.hpp b/pywraps/py_bytes.hpp index fac9aa2..5086658 100644 --- a/pywraps/py_bytes.hpp +++ b/pywraps/py_bytes.hpp @@ -332,15 +332,13 @@ static PyObject *py_get_8bit(ea_t ea, uint32 v, int nbit) //------------------------------------------------------------------------- /* # -def bin_search(start_ea, end_ea, image, imask, step, flags): +def bin_search(start_ea, end_ea, data, flags): """ Search for a set of bytes in the program @param start_ea: linear address, start of range to search @param end_ea: linear address, end of range to search (exclusive) - @param image: the set of bytes to search for - @param imask: a bitfield representing the mask in 'image' (can be None) - @param step: either BIN_SEARCH_FORWARD, or BIN_SEARCH_BACKWARD + @param data: the prepared data to search for (see parse_binpat_str()) @param flags: combination of BIN_SEARCH_* flags @return: the address of a match, or ida_idaapi.BADADDR if not found """ diff --git a/pywraps/py_dbg.hpp b/pywraps/py_dbg.hpp index ee8825d..08e3ff7 100644 --- a/pywraps/py_dbg.hpp +++ b/pywraps/py_dbg.hpp @@ -95,16 +95,16 @@ static bool _to_reg_val(regval_t **out, regval_t *buf, const char *name, PyObjec static bool convert_float(regval_t *lout, PyObject *in, op_dtype_t) { - eNE ene; + fpvalue_t fpval; _cvt_status_t status(PyExc_TypeError, "Expected float value"); double dbl = PyFloat_AsDouble(in); status.ok = PyErr_Occurred() == NULL; if ( status.ok ) - status.ok = ieee_realcvt(&dbl, ene, 003 /*load double*/) == 0; + status.ok = ieee_realcvt(&dbl, &fpval, 003 /*load double*/) == REAL_ERROR_OK; if ( !status.ok ) status.failed(PyExc_ValueError).sprnt("Float conversion failed"); if ( status.ok ) - lout->set_float(ene); + lout->set_float(fpval); return status.ok; } @@ -256,7 +256,7 @@ static PyObject *_from_reg_val( case dt_ldbl: { double dbl; - status.ok = ieee_realcvt(&dbl, (uint16 *) rv.fval, 013 /*store double*/) == 0; + status.ok = rv.fval.to_double(&dbl) == REAL_ERROR_OK; if ( status.ok ) res = PyFloat_FromDouble(dbl); } diff --git a/pywraps/py_graph.hpp b/pywraps/py_graph.hpp index 9ee42ad..7316c39 100644 --- a/pywraps/py_graph.hpp +++ b/pywraps/py_graph.hpp @@ -657,10 +657,10 @@ ssize_t py_graph_t::gr_callback(int code, va_list va) ret = 0; break; } - //grcode_changed_graph, // new graph has been set - //grcode_user_size, // calculate node size for user-defined graph - //grcode_user_title, // render node title of a user-defined graph - //grcode_user_draw, // render node of a user-defined graph + // grcode_changed_graph, // new graph has been set + // grcode_user_size, // calculate node size for user-defined graph + // grcode_user_title, // render node title of a user-defined graph + // grcode_user_draw, // render node of a user-defined graph return ret; } diff --git a/pywraps/py_hexrays.hpp b/pywraps/py_hexrays.hpp index b7a9f06..5e65589 100644 --- a/pywraps/py_hexrays.hpp +++ b/pywraps/py_hexrays.hpp @@ -1,18 +1,25 @@ //------------------------------------------------------------------------- // +static bool do_not_check_ctree = false; #ifdef WITH_HEXRAYS +#define DCLVL_SIMPLE 1 +#define DCLVL_FULL 2 static int _debug_hexrays_ctree = -1; -static bool is_debug_hexrays_ctree() +static int is_debug_hexrays_ctree(int level) { if ( _debug_hexrays_ctree < 0 ) - _debug_hexrays_ctree = qgetenv("IDAPYTHON_DEBUG_HEXRAYS_CTREEE"); - return bool(_debug_hexrays_ctree); + { + qstring tmp; + if ( qgetenv("IDAPYTHON_DEBUG_HEXRAYS_CTREE", &tmp) ) + _debug_hexrays_ctree = atol(tmp.c_str()); + } + return _debug_hexrays_ctree >= level; } //------------------------------------------------------------------------- -static void debug_hexrays_ctree(const char *format, ...) +static void debug_hexrays_ctree(int level, const char *format, ...) { - if ( is_debug_hexrays_ctree() ) + if ( is_debug_hexrays_ctree(level) ) { va_list va; va_start(va, format); @@ -27,17 +34,18 @@ static void debug_hexrays_ctree(const char *format, ...) // - hexrays is unloaded before IDAPython // - we receive the notification about hexrays going away and: // + call hexrays_unloading__clear_python_clearable_references(); -// + set 'hexdsp = exit_time_dummy_hexdsp' (an NOP hexdsp) +// + set 'do_not_check_ctree = true' // - we receive 'ui_database_closed', and -// + set 'hexdsp = init_time_dummy_hexdsp' +// + use 'idapython_dummy_hexdsp' +// + set 'do_not_check_ctree = false' // - IDAPython is unloaded, and during cleanup of the runtime data, // reachable citem_t's will get destroyed. // => this means we vill receive 'hx_c*t_cleanup' and 'hx_remitem' -// notifications most likely in the init_time_dummy_hexdsp(), -// rather than in exit_time_dummy_hexdsp() -- which is more than -// just a little counter-intuitive. -static void *idaapi init_time_dummy_hexdsp(int code, ...) +// notifications most likely in the idapython_dummy_hexdsp() +static void *idaapi idapython_dummy_hexdsp(int code, ...) { + if ( do_not_check_ctree ) + return nullptr; switch ( code ) { case hx_remitem: @@ -47,7 +55,7 @@ static void *idaapi init_time_dummy_hexdsp(int code, ...) case hx_mba_t_term: case hx_valrng_t_clear: { -#ifdef _DEBUG +#ifdef TESTABLE_BUILD va_list va; va_start(va, code); void *item = va_arg(va, void *); @@ -72,7 +80,7 @@ static void *idaapi init_time_dummy_hexdsp(int code, ...) break; case hx_remove_optinsn_handler: { -#ifdef _DEBUG +#ifdef TESTABLE_BUILD static bool in_removal = false; if ( !in_removal ) { @@ -88,7 +96,7 @@ static void *idaapi init_time_dummy_hexdsp(int code, ...) break; case hx_remove_optblock_handler: { -#ifdef _DEBUG +#ifdef TESTABLE_BUILD static bool in_removal = false; if ( !in_removal ) { @@ -110,7 +118,7 @@ static void *idaapi init_time_dummy_hexdsp(int code, ...) bool install = va_argi(va, bool); if ( install ) goto BAD_CODE; -#ifdef _DEBUG +#ifdef TESTABLE_BUILD static bool in_removal = false; if ( !in_removal ) { @@ -135,7 +143,11 @@ BAD_CODE: return NULL; } -hexdsp_t *hexdsp = init_time_dummy_hexdsp; +hexdsp_t *get_idapython_hexdsp() +{ + auto hrdsp = get_hexdsp(); + return hrdsp == nullptr ? idapython_dummy_hexdsp : hrdsp; +} #endif // WITH_HEXRAYS #define MODULE_NAME "Hex-Rays Decompiler" // Copied from vd/hexrays.cpp @@ -158,8 +170,8 @@ void delete_qstring_printer_t(qstring_printer_t *qs) //------------------------------------------------------------------------- // A set of objects that were created from IDAPython. This is necessary in // order to delete those objects before the hexrays plugin is unloaded. -// Otherwise, IDAPython will still delete them, but the plugin's 'hexdsp' -// dispatcher function will point to dlclose()'d code. +// Otherwise, IDAPython will still delete them, but the plugin's +// dispatcher function will point to idapython_dummy_hexdsp enum hx_clearable_type_t { hxclr_unknown = 0, @@ -184,13 +196,28 @@ DECLARE_TYPE_AS_MOVABLE(hx_clearable_t); typedef qvector hx_clearables_t; static hx_clearables_t python_clearables; + +//------------------------------------------------------------------------- +static void debug_hexrays_dump_clearable_instances(int level=DCLVL_FULL) +{ + if ( is_debug_hexrays_ctree(level) ) + { + for ( size_t i = 0, n = python_clearables.size(); i < n; ++i ) + { + const hx_clearable_t &hxc = python_clearables[i]; + debug_hexrays_ctree(level, "\t#%3d: %p (%d)\n", int(i), hxc.ptr, int(hxc.type)); + } + } +} + +//------------------------------------------------------------------------- void hexrays_unloading__clear_python_clearable_references(void) { - debug_hexrays_ctree("hexrays_unloading__clear_python_clearable_references()\n"); + debug_hexrays_ctree(DCLVL_SIMPLE, "hexrays_unloading__clear_python_clearable_references()\n"); for ( size_t i = 0, n = python_clearables.size(); i < n; ++i ) { const hx_clearable_t &hxc = python_clearables[i]; - debug_hexrays_ctree("cleaning up %p (%d)\n", hxc.ptr, int(hxc.type)); + debug_hexrays_ctree(DCLVL_SIMPLE, "cleaning up %p (%d)\n", hxc.ptr, int(hxc.type)); switch ( hxc.type ) { case hxclr_cfuncptr: @@ -244,7 +271,8 @@ void hexrays_register_python_clearable_instance( hx_clearable_t &hxc = python_clearables.push_back(); hxc.ptr = ptr; hxc.type = type; - debug_hexrays_ctree("registered %p\n", hxc.ptr); + debug_hexrays_ctree(DCLVL_SIMPLE, "registered %p\n", hxc.ptr); + debug_hexrays_dump_clearable_instances(DCLVL_FULL); } //------------------------------------------------------------------------- @@ -253,16 +281,18 @@ void hexrays_register_python_clearable_instance( // runtime, or it will be done by the C tree itself later. void hexrays_deregister_python_clearable_instance(void *ptr) { + debug_hexrays_ctree(DCLVL_SIMPLE, "maybe de-registering %p\n", ptr); for ( size_t i = 0, n = python_clearables.size(); i < n; ++i ) { const hx_clearable_t &hxc = python_clearables[i]; if ( hxc.ptr == ptr ) { + debug_hexrays_ctree(DCLVL_SIMPLE, "de-registered %p\n", hxc.ptr); python_clearables.erase(python_clearables.begin() + i); - debug_hexrays_ctree("de-registered %p\n", hxc.ptr); break; } } + debug_hexrays_dump_clearable_instances(DCLVL_FULL); } //------------------------------------------------------------------------- @@ -278,46 +308,23 @@ hx_clearable_type_t hexrays_is_registered_python_clearable_instance( //------------------------------------------------------------------------- // //------------------------------------------------------------------------- -static bool is_hexrays_plugin(const plugin_info_t *pinfo) +static bool is_hexrays_plugin(const plugin_t *entry) { - bool is_hx = false; - if ( pinfo != NULL && pinfo->entry != NULL ) - { - const plugin_t *p = pinfo->entry; - if ( streq(p->wanted_name, MODULE_NAME) ) - is_hx = true; - } - return is_hx; + return entry != nullptr && streq(entry->wanted_name, MODULE_NAME); } //------------------------------------------------------------------------- static void try_init() { init_hexrays_plugin(0); - if ( hexdsp != NULL ) + if ( get_hexdsp() != nullptr ) msg("IDAPython Hex-Rays bindings initialized.\n"); } -//------------------------------------------------------------------------- -static void *idaapi exit_time_dummy_hexdsp(int /*code*/, ...) -{ -/* This callback exists to avoid crashes if the user calls any hexrays functions - after unloading the decompiler. - switch ( code ) - { - case hx_cexpr_t_cleanup: break; - case hx_cinsn_t_cleanup: break; - default: break; - }*/ - return NULL; -} - //------------------------------------------------------------------------- inline bool hexdsp_inited() { - return hexdsp != NULL - && hexdsp != init_time_dummy_hexdsp - && hexdsp != exit_time_dummy_hexdsp; + return get_hexdsp() != nullptr; } //------------------------------------------------------------------------- @@ -330,18 +337,19 @@ static ssize_t idaapi ida_hexrays_ui_notification(void *, int code, va_list va) if ( !hexdsp_inited() ) { const plugin_info_t *pi = va_arg(va, plugin_info_t *); - if ( is_hexrays_plugin(pi) ) + if ( pi != nullptr && is_hexrays_plugin(pi->entry) ) try_init(); } break; - case ui_plugin_unloading: - if ( hexdsp != NULL && hexdsp != init_time_dummy_hexdsp ) + case ui_destroying_plugmod: + if ( get_hexdsp() != nullptr ) { - const plugin_info_t *pi = va_arg(va, plugin_info_t *); - if ( is_hexrays_plugin(pi) ) + /*const plugmod_t *plugmod =*/ va_arg(va, plugmod_t *); + const plugin_t *entry = va_arg(va, plugin_t *); + if ( is_hexrays_plugin(entry) ) { - QASSERT(30500, hexdsp != exit_time_dummy_hexdsp); + QASSERT(30500, !do_not_check_ctree); // Make sure all the refcounted objects are cleared right away. hexrays_unloading__clear_python_clearable_references(); @@ -349,12 +357,12 @@ static ssize_t idaapi ida_hexrays_ui_notification(void *, int code, va_list va) // Make sure all hooks are unhooked hexrays_unloading__unhook_hooks(); - hexdsp = exit_time_dummy_hexdsp; + do_not_check_ctree = true; } } break; case ui_database_closed: - hexdsp = init_time_dummy_hexdsp; + do_not_check_ctree = false; break; } return 0; @@ -389,9 +397,9 @@ static bool remove_udc_filter(udc_filter_t *instance) // //------------------------------------------------------------------------- -void py_debug_hexrays_ctree(const char *msg) +void py_debug_hexrays_ctree(int level, const char *msg) { - debug_hexrays_ctree(msg); + debug_hexrays_ctree(level, msg); } //--------------------------------------------------------------------- diff --git a/pywraps/py_hexrays_hooks.hpp b/pywraps/py_hexrays_hooks.hpp index c0ee039..d40e9ae 100644 --- a/pywraps/py_hexrays_hooks.hpp +++ b/pywraps/py_hexrays_hooks.hpp @@ -90,13 +90,23 @@ private: newref_t py_rc(PySequence_GetItem(o, 0)); newref_t py_hint(PySequence_GetItem(o, 1)); newref_t py_implines(PySequence_GetItem(o, 2)); + qstring plugin_hint; if ( IDAPyInt_Check(py_rc.o) && IDAPyStr_Check(py_hint.o) && IDAPyInt_Check(py_implines.o) - && IDAPyStr_AsUTF8(out_hint, py_hint.o) ) + && IDAPyStr_AsUTF8(&plugin_hint, py_hint.o) ) { + if ( !out_hint->empty() + && out_hint->last() != '\n' + && !plugin_hint.empty() ) + { + out_hint->append('\n'); + } + out_hint->append(plugin_hint); rc = IDAPyInt_AsLong(py_rc.o); - *out_implines = IDAPyInt_AsLong(py_implines.o); + if ( rc == 2 ) + rc = 0; + *out_implines += IDAPyInt_AsLong(py_implines.o); } } return rc; diff --git a/pywraps/py_ida.py b/pywraps/py_ida.py index e95eff9..d413a96 100644 --- a/pywraps/py_ida.py +++ b/pywraps/py_ida.py @@ -45,7 +45,7 @@ idainfo_get_pack_mode = inf_get_pack_mode idainfo_set_pack_mode = inf_set_pack_mode __make_idainfo_accessors(None, "get_pack_mode", "set_pack_mode") -idainfo_is_32bit = inf_is_32bit +def idainfo_is_32bit(): return not inf_is_16bit() # in reality this means "is 32bit or higher" __make_idainfo_getter("is_32bit") idainfo_is_64bit = inf_is_64bit diff --git a/pywraps/py_idaapi.py b/pywraps/py_idaapi.py index fb01e07..0a7d454 100644 --- a/pywraps/py_idaapi.py +++ b/pywraps/py_idaapi.py @@ -312,7 +312,7 @@ class PyIdc_cvt_refclass__(pyidc_cvt_helper__): def as_cstr(val): """ Returns a C str from the passed value. The passed value can be of type refclass (returned by a call to buffer() or byref()) - It scans for the first \x00 and returns the string value up to that point. + It scans for the first \\x00 and returns the string value up to that point. """ if isinstance(val, PyIdc_cvt_refclass__): val = val.value diff --git a/pywraps/py_ieee.hpp b/pywraps/py_ieee.hpp new file mode 100644 index 0000000..d1b2bea --- /dev/null +++ b/pywraps/py_ieee.hpp @@ -0,0 +1,5 @@ +// +typedef bytevec_t bytevec12_t; +typedef bytevec_t bytevec10_t; +// + diff --git a/pywraps/py_ieee.py b/pywraps/py_ieee.py new file mode 100644 index 0000000..0cb7edf --- /dev/null +++ b/pywraps/py_ieee.py @@ -0,0 +1,11 @@ + +# Note that we DON'T define EZERO/EONE/ETWO to be fpvalue_t objects, +# because there is no way to make them read-only, which means EZERO +# could represent something entirely different from zero if the +# user mistakenly modifies it. + +# +EZERO = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +EONE = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xFF\x3F" +ETWO = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x40" +# diff --git a/pywraps/py_kernwin.hpp b/pywraps/py_kernwin.hpp index 4d2e688..674a1d3 100644 --- a/pywraps/py_kernwin.hpp +++ b/pywraps/py_kernwin.hpp @@ -10,13 +10,13 @@ // Context structure used by add|del_idc_hotkey() struct py_idchotkey_ctx_t { - qstring hotkey; + qstring action_name; ref_t pyfunc; py_idchotkey_ctx_t( - const char *_hotkey, + const char *_action_name, PyObject *_pyfunc) - : hotkey(_hotkey), + : action_name(_action_name), pyfunc(borref_t(_pyfunc)) {} }; @@ -411,7 +411,7 @@ bool py_del_hotkey(PyObject *pyctx) return false; py_idchotkey_ctx_t *ctx = (py_idchotkey_ctx_t *) PyCapsule_GetPointer(pyctx, VALID_CAPSULE_NAME); - if ( ctx == NULL || !del_idc_hotkey(ctx->hotkey.c_str()) ) + if ( ctx == NULL || !unregister_action(ctx->action_name.c_str()) ) return false; delete ctx; @@ -476,7 +476,7 @@ PyObject *py_add_hotkey(const char *hotkey, PyObject *pyfunc) break; // Create new context - py_idchotkey_ctx_t *ctx = new py_idchotkey_ctx_t(hotkey, pyfunc); + py_idchotkey_ctx_t *ctx = new py_idchotkey_ctx_t(idc_func_name.c_str(), pyfunc); // Bind IDC variable w/ the PyCallable gvar->set_pvoid(pyfunc); @@ -486,7 +486,7 @@ PyObject *py_add_hotkey(const char *hotkey, PyObject *pyfunc) } while (false); } // Cleanup - del_idc_hotkey(hotkey); + unregister_action(idc_func_name.c_str()); Py_RETURN_NONE; } @@ -893,14 +893,14 @@ private: static ssize_t handle_hint_output(PyObject *o, qstring *hint, int *important_lines) { - ssize_t rc = 0; if ( o != NULL && PyTuple_Check(o) && PyTuple_Size(o) == 2 ) { borref_t el0(PyTuple_GetItem(o, 0)); + qstring plug_hint; if ( el0 != NULL && IDAPyStr_Check(el0.o) - && IDAPyStr_AsUTF8(hint, el0.o) - && !hint->empty() ) + && IDAPyStr_AsUTF8(&plug_hint, el0.o) + && !plug_hint.empty() ) { borref_t el1(PyTuple_GetItem(o, 1)); if ( el1 != NULL && IDAPyInt_Check(el1.o) ) @@ -908,13 +908,15 @@ private: long lns = IDAPyInt_AsLong(el1.o); if ( lns > 0 ) { - *important_lines = lns; - rc = 1; + if ( !hint->empty() && hint->last() != '\n' ) + hint->append('\n'); + hint->append(plug_hint); + *important_lines += lns; } } } } - return rc; + return 0; } static ssize_t handle_hint_output(PyObject *o, qstring *hint, ea_t, int, int *important_lines) @@ -1041,6 +1043,29 @@ struct disasm_line_t DECLARE_TYPE_AS_MOVABLE(disasm_line_t); typedef qvector disasm_text_t; +//------------------------------------------------------------------------- +// tuple(fields, icon, attr) +static PyObject *py_chooser_base_t_get_row( + const chooser_base_t *chobj, + size_t n) +{ + qstrvec_t fields; + fields.resize(chobj->columns); + chooser_item_attrs_t *attrs = new chooser_item_attrs_t; + int icon; + chobj->get_row(&fields, &icon, attrs, n); + + PyObject *tuple = PyTuple_New(3); + PyTuple_SetItem(tuple, 0, qstrvec2pylist(fields)); + PyTuple_SetItem(tuple, 1, IDAPyInt_FromLong(icon)); + PyObject *py_attrs = SWIG_NewPointerObj( + SWIG_as_voidptr(attrs), + SWIGTYPE_p_chooser_item_attrs_t, + SWIG_POINTER_OWN); + PyTuple_SetItem(tuple, 2, py_attrs); + return tuple; +} + //------------------------------------------------------------------------- void py_gen_disasm_text(disasm_text_t &text, ea_t ea1, ea_t ea2, bool truncate_lines) { diff --git a/pywraps/py_kernwin.py b/pywraps/py_kernwin.py index 2dfe42d..33adab2 100644 --- a/pywraps/py_kernwin.py +++ b/pywraps/py_kernwin.py @@ -1,17 +1,5 @@ # ----------------------------------------------------------------------- # -DP_LEFT = 0x0001 -DP_TOP = 0x0002 -DP_RIGHT = 0x0004 -DP_BOTTOM = 0x0008 -DP_INSIDE = 0x0010 -# if not before, then it is after -# (use DP_INSIDE | DP_BEFORE to insert a tab before a given tab) -# this flag alone cannot be used to determine orientation -DP_BEFORE = 0x0020 -# used with combination of other flags -DP_TAB = 0x0040 -DP_FLOATING = 0x0080 # ---------------------------------------------------------------------- def load_custom_icon(file_name=None, data=None, format=None): diff --git a/pywraps/py_kernwin_choose.hpp b/pywraps/py_kernwin_choose.hpp index 30cc168..bf00f34 100644 --- a/pywraps/py_kernwin_choose.hpp +++ b/pywraps/py_kernwin_choose.hpp @@ -14,59 +14,64 @@ static void py_get_int(PyObject *self, T *prm, const char *name) enum feature_t { - CFEAT_INIT = 0x0001, - CFEAT_GETICON = 0x0002, - CFEAT_GETATTR = 0x0004, - CFEAT_INS = 0x0008, - CFEAT_DEL = 0x0010, - CFEAT_EDIT = 0x0020, - CFEAT_ENTER = 0x0040, - CFEAT_REFRESH = 0x0080, - CFEAT_SELECT = 0x0100, - CFEAT_ONCLOSE = 0x0200, - CFEAT_EMBEDDED = 0x0400, - CFEAT_GETDIRTREE = 0x0800, - CFEAT_INDEX2INODE = 0x1000, + CFEAT_INIT = 0x0001, + CFEAT_GETICON = 0x0002, + CFEAT_GETATTR = 0x0004, + CFEAT_INS = 0x0008, + CFEAT_DEL = 0x0010, + CFEAT_EDIT = 0x0020, + CFEAT_ENTER = 0x0040, + CFEAT_REFRESH = 0x0080, + CFEAT_SELECT = 0x0100, + CFEAT_ONCLOSE = 0x0200, + CFEAT_EMBEDDED = 0x0400, + CFEAT_GETDIRTREE = 0x0800, + CFEAT_INDEX2INODE = 0x1000, + CFEAT_INDEX2DIFFPOS = 0x2000, }; //------------------------------------------------------------------------ // we do not use virtual subclasses so we use #define for common code -#define DEFINE_COMMON_CALLBACKS \ - virtual const void *get_obj_id(size_t *len) const override \ - { \ - return mixin_get_obj_id(len); \ - } \ - virtual void *get_chooser_obj() override \ - { \ - return mixin_get_chooser_obj(); \ - } \ - virtual bool idaapi init() override \ - { \ - return mixin_init(this); \ - } \ - virtual size_t idaapi get_count() const override \ - { \ - return mixin_get_count(); \ - } \ - virtual void idaapi get_row( \ - qstrvec_t *cols, \ - int *icon_, \ - chooser_item_attrs_t *attrs, \ - size_t n) const override \ - { \ - mixin_get_row(cols, icon_, attrs, n, this); \ - } \ - virtual void idaapi closed() override \ - { \ - mixin_closed(this); \ - } \ - virtual dirtree_t *idaapi get_dirtree() override \ - { \ - return mixin_get_dirtree(this); \ - } \ - virtual inode_t idaapi index_to_inode(size_t n) const override \ - { \ - return mixin_index_to_inode(n); \ +#define DEFINE_COMMON_CALLBACKS \ + virtual const void *get_obj_id(size_t *len) const override \ + { \ + return mixin_get_obj_id(len); \ + } \ + virtual void *get_chooser_obj() override \ + { \ + return mixin_get_chooser_obj(); \ + } \ + virtual bool idaapi init() override \ + { \ + return mixin_init(this); \ + } \ + virtual size_t idaapi get_count() const override \ + { \ + return mixin_get_count(); \ + } \ + virtual void idaapi get_row( \ + qstrvec_t *cols, \ + int *icon_, \ + chooser_item_attrs_t *attrs, \ + size_t n) const override \ + { \ + mixin_get_row(cols, icon_, attrs, n, this); \ + } \ + virtual void idaapi closed() override \ + { \ + mixin_closed(this); \ + } \ + virtual dirtree_t *idaapi get_dirtree() override \ + { \ + return mixin_get_dirtree(this); \ + } \ + virtual inode_t idaapi index_to_inode(size_t n) const override \ + { \ + return mixin_index_to_inode(n); \ + } \ + virtual diffpos_t idaapi index_to_diffpos(size_t n) const override \ + { \ + return mixin_index_to_diffpos(n); \ } @@ -226,6 +231,7 @@ bool py_chooser_props_t::do_extract_from_pyobject( { S_ON_CLOSE, CFEAT_ONCLOSE, 0 }, { S_ON_GET_DIRTREE, CFEAT_GETDIRTREE, CH_HAS_DIRTREE }, { S_ON_INDEX_TO_INODE, CFEAT_INDEX2INODE, CH_HAS_DIRTREE }, + { S_ON_INDEX_TO_DIFFPOS, CFEAT_INDEX2DIFFPOS, CH_HAS_DIFF }, }; // we can forbid some callbacks explicitly uint32 forbidden_cb = 0; @@ -305,6 +311,7 @@ protected: void mixin_closed(chooser_base_t *chobj); dirtree_t *mixin_get_dirtree(const chooser_base_t *chobj); inode_t mixin_index_to_inode(size_t n) const; + diffpos_t mixin_index_to_diffpos(size_t n) const; void mixin_init_chooser_base_from_props(chooser_base_t *cb); private: @@ -497,6 +504,24 @@ inode_t py_chooser_mixin_t::mixin_index_to_inode(size_t n) const return inode; } +//------------------------------------------------------------------------- +diffpos_t py_chooser_mixin_t::mixin_index_to_diffpos(size_t n) const +{ + diffpos_t diffpos = diffpos_t(-1); // BADDIFF; + if ( has_feature(CFEAT_INDEX2DIFFPOS) ) + { + PYW_GIL_GET; + pycall_res_t pyres(PyObject_CallMethod(self.o, (char *) S_ON_INDEX_TO_DIFFPOS, PY_BV_SZ, Py_ssize_t(n))); + if ( pyres.result != NULL ) + { + uint64 u64; + if ( PyW_GetNumber(pyres.result.o, &u64) ) + diffpos = diffpos_t(u64); + } + } + return diffpos; +} + //------------------------------------------------------------------------- void py_chooser_mixin_t::mixin_init_chooser_base_from_props( chooser_base_t *cb) @@ -820,6 +845,16 @@ PyObject *choose_find(const char *title) //--------------------------------------------------------------------------- // + +#define CHOOSER_NO_SELECTION 0x01 +#define CHOOSER_MULTI_SELECTION 0x02 +#define CHOOSER_POPUP_MENU 0x04 + + // The following are obsolete, only present for bw-compat +#define CHOOSER_MENU_EDIT 0 +#define CHOOSER_MENU_JUMP 1 +#define CHOOSER_MENU_SEARCH 2 + PyObject *choose_find(const char *title); void choose_refresh(PyObject *self); void choose_close(PyObject *self); diff --git a/pywraps/py_kernwin_choose.py b/pywraps/py_kernwin_choose.py index d777582..227a69b 100644 --- a/pywraps/py_kernwin_choose.py +++ b/pywraps/py_kernwin_choose.py @@ -62,6 +62,10 @@ class Choose(object): CH_RESTORE = _ida_kernwin.CH_RESTORE """restore floating position if present (equivalent of WOPN_RESTORE) (GUI version only)""" + CH_RENAME_IS_EDIT = _ida_kernwin.CH_RENAME_IS_EDIT + """triggering a 'edit/rename' (i.e., F2 shortcut) on a cell, + should call the edit() callback for the corresponding row.""" + CH_BUILTIN_SHIFT = _ida_kernwin.CH_BUILTIN_SHIFT CH_BUILTIN_MASK = _ida_kernwin.CH_BUILTIN_MASK @@ -69,6 +73,9 @@ class Choose(object): can be provided to the user (instead of a flat table)""" CH_HAS_DIRTREE = _ida_kernwin.CH_HAS_DIRTREE + """The chooser can be used in a diffing/merging workflow""" + CH_HAS_DIFF = _ida_kernwin.CH_HAS_DIFF + # column flags (are specified in the widths array) CHCOL_PLAIN = _ida_kernwin.CHCOL_PLAIN CHCOL_PATH = _ida_kernwin.CHCOL_PATH diff --git a/pywraps/py_kernwin_plgform.py b/pywraps/py_kernwin_plgform.py index 23f8c58..9e8b163 100644 --- a/pywraps/py_kernwin_plgform.py +++ b/pywraps/py_kernwin_plgform.py @@ -13,44 +13,49 @@ class PluginForm(object): WOPN_MDI = 0x01 # no-op WOPN_TAB = 0x02 # no-op - WOPN_RESTORE = 0x04 + WOPN_RESTORE = _ida_kernwin.WOPN_RESTORE """ if the widget is the only widget in a floating area when it is closed, remember that area's geometry. The next time that widget is created as floating (i.e., WOPN_DP_FLOATING) its geometry will be restored (e.g., "Execute script" """ - WOPN_ONTOP = 0x08 # no-op - WOPN_MENU = 0x10 # no-op - WOPN_CENTERED = 0x20 # no-op - WOPN_PERSIST = 0x40 + WOPN_ONTOP = 0x08 # no-op + WOPN_MENU = 0x10 # no-op + WOPN_CENTERED = 0x20 # no-op + WOPN_PERSIST = _ida_kernwin.WOPN_PERSIST """form will persist until explicitly closed with Close()""" - WOPN_DP_LEFT = 0x00010000 + WOPN_DP_LEFT = _ida_kernwin.WOPN_DP_LEFT """ Dock widget to the left of dest_ctrl""" - WOPN_DP_TOP = 0x00020000 + WOPN_DP_TOP = _ida_kernwin.WOPN_DP_TOP """ Dock widget above dest_ctrl""" - WOPN_DP_RIGHT = 0x00040000 + WOPN_DP_RIGHT = _ida_kernwin.WOPN_DP_RIGHT """ Dock widget to the right of dest_ctrl""" - WOPN_DP_BOTTOM = 0x00080000 + WOPN_DP_BOTTOM = _ida_kernwin.WOPN_DP_BOTTOM """ Dock widget below dest_ctrl""" - WOPN_DP_INSIDE = 0x00100000 + WOPN_DP_INSIDE = _ida_kernwin.WOPN_DP_INSIDE """ Create a new tab bar with both widget and dest_ctrl""" - WOPN_DP_TAB = 0x00400000 + WOPN_DP_TAB = _ida_kernwin.WOPN_DP_TAB """ Place widget into a tab next to dest_ctrl, if dest_ctrl is in a tab bar (otherwise the same as #WOPN_DP_INSIDE) """ - WOPN_DP_BEFORE = 0x00200000 + WOPN_DP_BEFORE = _ida_kernwin.WOPN_DP_BEFORE """ place widget before dst_form in the tab bar instead of after used with #WOPN_DP_INSIDE and #WOPN_DP_TAB """ - WOPN_DP_FLOATING=0x00800000 + WOPN_DP_FLOATING = _ida_kernwin.WOPN_DP_FLOATING + """ + When floating or in a splitter (i.e., not tabbed), + use the widget's size hint to determine the best + geometry (Qt only) + """ + WOPN_DP_SZHINT = _ida_kernwin.WOPN_DP_SZHINT """ Make widget floating""" - WOPN_DP_INSIDE_BEFORE = WOPN_DP_INSIDE | WOPN_DP_BEFORE - WOPN_DP_TAB_BEFORE = WOPN_DP_TAB | WOPN_DP_BEFORE - + WOPN_DP_INSIDE_BEFORE = _ida_kernwin.WOPN_DP_INSIDE_BEFORE + WOPN_DP_TAB_BEFORE = _ida_kernwin.WOPN_DP_TAB_BEFORE WOPN_CREATE_ONLY = {} @@ -180,17 +185,20 @@ class PluginForm(object): return _ida_kernwin.plgform_get_widget(self.__clink__) - WCLS_SAVE = 0x1 + WCLS_SAVE = _ida_kernwin.WCLS_SAVE """Save state in desktop config""" - WCLS_NO_CONTEXT = 0x2 + WCLS_NO_CONTEXT = _ida_kernwin.WCLS_NO_CONTEXT """Don't change the current context (useful for toolbars)""" - WCLS_DONT_SAVE_SIZE = 0x4 + WCLS_DONT_SAVE_SIZE = _ida_kernwin.WCLS_DONT_SAVE_SIZE """Don't save size of the window""" - WCLS_CLOSE_LATER = 0x8 + WCLS_DELETE_LATER = _ida_kernwin.WCLS_DELETE_LATER """This flag should be used when Close() is called from an event handler""" + + WCLS_CLOSE_LATER = WCLS_DELETE_LATER + # plg = PluginForm() diff --git a/pywraps/py_nalt.py b/pywraps/py_nalt.py index f81e18d..68540e1 100644 --- a/pywraps/py_nalt.py +++ b/pywraps/py_nalt.py @@ -6,9 +6,9 @@ def get_switch_info(*args): else: si, ea = args return None if _real_get_switch_info(si, ea) <= 0 else si -def get_abi_name(*args): +def get_abi_name(): import ida_typeinf - return ida_typeinf.get_abi_name(args) + return ida_typeinf.get_abi_name() # # diff --git a/pywraps/py_struct.hpp b/pywraps/py_struct.hpp index 03c278a..a0cc1ff 100644 --- a/pywraps/py_struct.hpp +++ b/pywraps/py_struct.hpp @@ -3,6 +3,37 @@ #define __PY_STRUCT__ // + +//------------------------------------------------------------------------- +/* +# +def get_innermost_member(sptr, offset): + """ + Get the innermost member at the given offset + @param sptr: the starting structure + @param offset: offset into the starting structure + @return: + - None on failure + - tuple(member_t, struct_t, offset) + where member_t: a member in SPTR (it is not a structure), + struct_t: the innermost structure, + offset: remaining offset into the returned member + """ + pass +# +*/ +PyObject *py_get_innermost_member(struc_t *sptr, asize_t offset) +{ + PYW_GIL_CHECK_LOCKED_SCOPE(); + member_t *mptr = get_innermost_member(&sptr, &offset); + if ( mptr == nullptr ) + Py_RETURN_NONE; + return Py_BuildValue("(OO" PY_BV_ASIZE ")", + SWIG_NewPointerObj(SWIG_as_voidptr(mptr), SWIGTYPE_p_member_t, 0), + SWIG_NewPointerObj(SWIG_as_voidptr(sptr), SWIGTYPE_p_struc_t, 0), + bvasize_t(offset)); +} + // #endif // __PY_STRUCT__ diff --git a/pywraps/sidc.py b/pywraps/sidc.py index 383d0ce..4160d7a 100644 --- a/pywraps/sidc.py +++ b/pywraps/sidc.py @@ -4,7 +4,7 @@ # # Misc constants # -UA_MAXOP = 6 +UA_MAXOP = 8 # ---------------------------------------------------------------------- # instruc_t related constants @@ -256,6 +256,7 @@ OOF_ZSTROFF = 0x0200 # meaningful only if is_stroff(uFlag) OOF_NOBNOT = 0x0400 # prohibit use of binary not OOF_SPACES = 0x0800 # do not suppress leading spaces # currently works only for floating point numbers +OOF_ANYSERIAL = 0x1000 # if enum: select first available serial # ---------------------------------------------------------------------- diff --git a/release_api_contents2.txt b/release_api_contents2.txt index 54ad1c5..824493d 100644 --- a/release_api_contents2.txt +++ b/release_api_contents2.txt @@ -22,6 +22,7 @@ 'DBG_Hooks_dbg_trace', 'DBG_Hooks_hook', 'DBG_Hooks_unhook', + 'Hexrays_Hooks_build_callinfo', 'Hexrays_Hooks_close_pseudocode', 'Hexrays_Hooks_cmt_changed', 'Hexrays_Hooks_combine', @@ -95,6 +96,7 @@ 'IDB_Hooks_dirtree_rank', 'IDB_Hooks_dirtree_rmdir', 'IDB_Hooks_dirtree_rminode', + 'IDB_Hooks_dirtree_segm_moved', 'IDB_Hooks_enum_bf_changed', 'IDB_Hooks_enum_cmt_changed', 'IDB_Hooks_enum_created', @@ -188,6 +190,7 @@ 'IDP_Hooks_ev_coagulate_dref', 'IDP_Hooks_ev_create_flat_group', 'IDP_Hooks_ev_create_func_frame', + 'IDP_Hooks_ev_create_merge_handlers', 'IDP_Hooks_ev_create_switch_xrefs', 'IDP_Hooks_ev_creating_segm', 'IDP_Hooks_ev_decorate_name', @@ -233,6 +236,7 @@ 'IDP_Hooks_ev_is_basic_block_end', 'IDP_Hooks_ev_is_call_insn', 'IDP_Hooks_ev_is_cond_insn', + 'IDP_Hooks_ev_is_control_flow_guard', 'IDP_Hooks_ev_is_far_jump', 'IDP_Hooks_ev_is_indirect_jump', 'IDP_Hooks_ev_is_insn_table_jump', @@ -277,6 +281,7 @@ 'IDP_Hooks_ev_term', 'IDP_Hooks_ev_treat_hindering_item', 'IDP_Hooks_ev_undefine', + 'IDP_Hooks_ev_update_call_stack', 'IDP_Hooks_ev_use_arg_types', 'IDP_Hooks_ev_use_regarg_type', 'IDP_Hooks_ev_use_stkarg_type', @@ -300,6 +305,7 @@ 'UI_Hooks_database_closed', 'UI_Hooks_database_inited', 'UI_Hooks_debugger_menu_change', + 'UI_Hooks_desktop_applied', 'UI_Hooks_destroying_plugmod', 'UI_Hooks_destroying_procmod', 'UI_Hooks_finish_populating_widget_popup', @@ -364,8 +370,35 @@ '_ll_make_num', '_ll_make_ref', '_ll_new_block', + 'abstract_graph_t_callback_ud_get', + 'abstract_graph_t_callback_ud_set', + 'abstract_graph_t_circle_center_get', + 'abstract_graph_t_circle_center_set', + 'abstract_graph_t_circle_radius_get', + 'abstract_graph_t_circle_radius_set', + 'abstract_graph_t_create_circle_layout', + 'abstract_graph_t_create_tree_layout', + 'abstract_graph_t_current_layout_get', + 'abstract_graph_t_current_layout_set', + 'abstract_graph_t_get_edge', + 'abstract_graph_t_grcall', + 'abstract_graph_t_grcall__varargs__', + 'abstract_graph_t_nrect', + 'abstract_graph_t_rect_edges_made_get', + 'abstract_graph_t_rect_edges_made_set', + 'abstract_graph_t_set_callback', + 'abstract_graph_t_title_get', + 'abstract_graph_t_title_set', 'accepts_small_udts', 'accepts_udts', + 'action_ctx_base_cur_sel_t__from_get', + 'action_ctx_base_cur_sel_t__from_set', + 'action_ctx_base_cur_sel_t_reset', + 'action_ctx_base_cur_sel_t_to_get', + 'action_ctx_base_cur_sel_t_to_set', + 'action_ctx_base_source_t_chooser_get', + 'action_ctx_base_source_t_chooser_set', + 'action_ctx_base_source_t_reset', 'action_ctx_base_t__get_form', 'action_ctx_base_t__get_form_title', 'action_ctx_base_t__get_form_type', @@ -387,6 +420,8 @@ 'action_ctx_base_t_cur_func_set', 'action_ctx_base_t_cur_seg_get', 'action_ctx_base_t_cur_seg_set', + 'action_ctx_base_t_cur_sel_get', + 'action_ctx_base_t_cur_sel_set', 'action_ctx_base_t_cur_strmem_get', 'action_ctx_base_t_cur_strmem_set', 'action_ctx_base_t_cur_struc_get', @@ -403,6 +438,8 @@ 'action_ctx_base_t_regname_get', 'action_ctx_base_t_regname_set', 'action_ctx_base_t_reset', + 'action_ctx_base_t_source_get', + 'action_ctx_base_t_source_set', 'action_ctx_base_t_widget_get', 'action_ctx_base_t_widget_set', 'action_ctx_base_t_widget_title_get', @@ -541,6 +578,7 @@ 'argloc_t_get_rrel__SWIG_1', 'argloc_t_has_reg', 'argloc_t_has_stkoff', + 'argloc_t_in_stack', 'argloc_t_is_badloc', 'argloc_t_is_custom', 'argloc_t_is_ea', @@ -902,6 +940,8 @@ 'begin_type_updating', 'bin_flag', 'bin_search', + 'bin_search__SWIG_0', + 'bin_search__SWIG_1', 'bit_bound_t_nbits_get', 'bit_bound_t_nbits_set', 'bit_bound_t_sbits_get', @@ -1050,6 +1090,7 @@ 'bookmarks_t_find_index', 'bookmarks_t_get', 'bookmarks_t_get_desc', + 'bookmarks_t_get_dirtree_id', 'bookmarks_t_mark', 'bookmarks_t_size', 'boolvec_t___eq__', @@ -1266,46 +1307,46 @@ 'call_stack_info_t_funcea_set', 'call_stack_info_t_funcok_get', 'call_stack_info_t_funcok_set', - 'call_stack_t___eq__', - 'call_stack_t___getitem__', - 'call_stack_t___len__', - 'call_stack_t___ne__', - 'call_stack_t___setitem__', - 'call_stack_t__del', - 'call_stack_t_add_unique', - 'call_stack_t_at', - 'call_stack_t_begin', - 'call_stack_t_begin__SWIG_0', - 'call_stack_t_begin__SWIG_1', - 'call_stack_t_capacity', - 'call_stack_t_clear', - 'call_stack_t_empty', - 'call_stack_t_end', - 'call_stack_t_end__SWIG_0', - 'call_stack_t_end__SWIG_1', - 'call_stack_t_erase', - 'call_stack_t_erase__SWIG_0', - 'call_stack_t_erase__SWIG_1', - 'call_stack_t_extract', - 'call_stack_t_find', - 'call_stack_t_find__SWIG_0', - 'call_stack_t_find__SWIG_1', - 'call_stack_t_grow', - 'call_stack_t_has', - 'call_stack_t_inject', - 'call_stack_t_insert', - 'call_stack_t_pop_back', - 'call_stack_t_push_back', - 'call_stack_t_push_back__SWIG_0', - 'call_stack_t_push_back__SWIG_1', - 'call_stack_t_qclear', - 'call_stack_t_reserve', - 'call_stack_t_resize', - 'call_stack_t_resize__SWIG_0', - 'call_stack_t_resize__SWIG_1', - 'call_stack_t_size', - 'call_stack_t_swap', - 'call_stack_t_truncate', + 'call_stack_info_vec_t___eq__', + 'call_stack_info_vec_t___getitem__', + 'call_stack_info_vec_t___len__', + 'call_stack_info_vec_t___ne__', + 'call_stack_info_vec_t___setitem__', + 'call_stack_info_vec_t__del', + 'call_stack_info_vec_t_add_unique', + 'call_stack_info_vec_t_at', + 'call_stack_info_vec_t_begin', + 'call_stack_info_vec_t_begin__SWIG_0', + 'call_stack_info_vec_t_begin__SWIG_1', + 'call_stack_info_vec_t_capacity', + 'call_stack_info_vec_t_clear', + 'call_stack_info_vec_t_empty', + 'call_stack_info_vec_t_end', + 'call_stack_info_vec_t_end__SWIG_0', + 'call_stack_info_vec_t_end__SWIG_1', + 'call_stack_info_vec_t_erase', + 'call_stack_info_vec_t_erase__SWIG_0', + 'call_stack_info_vec_t_erase__SWIG_1', + 'call_stack_info_vec_t_extract', + 'call_stack_info_vec_t_find', + 'call_stack_info_vec_t_find__SWIG_0', + 'call_stack_info_vec_t_find__SWIG_1', + 'call_stack_info_vec_t_grow', + 'call_stack_info_vec_t_has', + 'call_stack_info_vec_t_inject', + 'call_stack_info_vec_t_insert', + 'call_stack_info_vec_t_pop_back', + 'call_stack_info_vec_t_push_back', + 'call_stack_info_vec_t_push_back__SWIG_0', + 'call_stack_info_vec_t_push_back__SWIG_1', + 'call_stack_info_vec_t_qclear', + 'call_stack_info_vec_t_reserve', + 'call_stack_info_vec_t_resize', + 'call_stack_info_vec_t_resize__SWIG_0', + 'call_stack_info_vec_t_resize__SWIG_1', + 'call_stack_info_vec_t_size', + 'call_stack_info_vec_t_swap', + 'call_stack_info_vec_t_truncate', 'callregs_t_by_slots', 'callregs_t_fpregs_get', 'callregs_t_fpregs_set', @@ -1326,6 +1367,8 @@ 'can_exc_continue', 'cancel_exec_request', 'cancel_thread_exec_requests', + 'cancellable_graph_t_cancelled_get', + 'cancellable_graph_t_cancelled_set', 'carg_t___eq__', 'carg_t___ge__', 'carg_t___gt__', @@ -1829,6 +1872,43 @@ 'choose_til', 'choose_trace_file', 'choose_xref', + 'chooser_base_t_ask_item_attrs', + 'chooser_base_t_can_del', + 'chooser_base_t_can_edit', + 'chooser_base_t_can_filter', + 'chooser_base_t_can_ins', + 'chooser_base_t_can_refresh', + 'chooser_base_t_can_sort', + 'chooser_base_t_columns_get', + 'chooser_base_t_deflt_col_get', + 'chooser_base_t_get_builtin_number', + 'chooser_base_t_get_count', + 'chooser_base_t_get_ea', + 'chooser_base_t_get_quick_filter_initial_mode', + 'chooser_base_t_get_row', + 'chooser_base_t_has_diff_capability', + 'chooser_base_t_has_dirtree', + 'chooser_base_t_header_get', + 'chooser_base_t_height_get', + 'chooser_base_t_icon_get', + 'chooser_base_t_is_force_default', + 'chooser_base_t_is_modal', + 'chooser_base_t_is_multi', + 'chooser_base_t_is_noidb', + 'chooser_base_t_is_quick_filter_visible_initially', + 'chooser_base_t_is_same', + 'chooser_base_t_is_status_bar_hidden', + 'chooser_base_t_popup_allowed', + 'chooser_base_t_popup_names_get', + 'chooser_base_t_should_rename_trigger_edit', + 'chooser_base_t_should_restore_geometry', + 'chooser_base_t_title_get', + 'chooser_base_t_width_get', + 'chooser_base_t_widths_get', + 'chooser_base_t_x0_get', + 'chooser_base_t_x1_get', + 'chooser_base_t_y0_get', + 'chooser_base_t_y1_get', 'chooser_item_attrs_t_color_get', 'chooser_item_attrs_t_color_set', 'chooser_item_attrs_t_flags_get', @@ -2044,6 +2124,7 @@ 'codegen_t_ii_set', 'codegen_t_insn_get', 'codegen_t_insn_set', + 'codegen_t_load_effective_address', 'codegen_t_load_operand', 'codegen_t_mb_get', 'codegen_t_mb_set', @@ -2051,12 +2132,65 @@ 'codegen_t_mba_set', 'codegen_t_microgen_completed', 'codegen_t_prepare_gen_micro', + 'codegen_t_store_operand', 'collect_stack_trace', 'compact_til', 'compare_tinfo', 'compile_idc_file', 'compile_idc_snippet', 'compile_idc_text', + 'compiled_binpat_t___eq__', + 'compiled_binpat_t___ne__', + 'compiled_binpat_t_all_bytes_defined', + 'compiled_binpat_t_bytes_get', + 'compiled_binpat_t_bytes_set', + 'compiled_binpat_t_encidx_get', + 'compiled_binpat_t_encidx_set', + 'compiled_binpat_t_mask_get', + 'compiled_binpat_t_mask_set', + 'compiled_binpat_t_qclear', + 'compiled_binpat_t_strlits_get', + 'compiled_binpat_t_strlits_set', + 'compiled_binpat_vec_t___eq__', + 'compiled_binpat_vec_t___getitem__', + 'compiled_binpat_vec_t___len__', + 'compiled_binpat_vec_t___ne__', + 'compiled_binpat_vec_t___setitem__', + 'compiled_binpat_vec_t__del', + 'compiled_binpat_vec_t_add_unique', + 'compiled_binpat_vec_t_at', + 'compiled_binpat_vec_t_begin', + 'compiled_binpat_vec_t_begin__SWIG_0', + 'compiled_binpat_vec_t_begin__SWIG_1', + 'compiled_binpat_vec_t_capacity', + 'compiled_binpat_vec_t_clear', + 'compiled_binpat_vec_t_empty', + 'compiled_binpat_vec_t_end', + 'compiled_binpat_vec_t_end__SWIG_0', + 'compiled_binpat_vec_t_end__SWIG_1', + 'compiled_binpat_vec_t_erase', + 'compiled_binpat_vec_t_erase__SWIG_0', + 'compiled_binpat_vec_t_erase__SWIG_1', + 'compiled_binpat_vec_t_extract', + 'compiled_binpat_vec_t_find', + 'compiled_binpat_vec_t_find__SWIG_0', + 'compiled_binpat_vec_t_find__SWIG_1', + 'compiled_binpat_vec_t_grow', + 'compiled_binpat_vec_t_has', + 'compiled_binpat_vec_t_inject', + 'compiled_binpat_vec_t_insert', + 'compiled_binpat_vec_t_pop_back', + 'compiled_binpat_vec_t_push_back', + 'compiled_binpat_vec_t_push_back__SWIG_0', + 'compiled_binpat_vec_t_push_back__SWIG_1', + 'compiled_binpat_vec_t_qclear', + 'compiled_binpat_vec_t_reserve', + 'compiled_binpat_vec_t_resize', + 'compiled_binpat_vec_t_resize__SWIG_0', + 'compiled_binpat_vec_t_resize__SWIG_1', + 'compiled_binpat_vec_t_size', + 'compiled_binpat_vec_t_swap', + 'compiled_binpat_vec_t_truncate', 'compiler_info_t_cm_get', 'compiler_info_t_cm_set', 'compiler_info_t_defalign_get', @@ -2093,6 +2227,7 @@ 'create_align', 'create_byte', 'create_bytearray_linput', + 'create_cfunc', 'create_code_viewer', 'create_custdata', 'create_data', @@ -2424,6 +2559,7 @@ 'del_tinfo_attr', 'del_tryblks', 'del_value', + 'del_vftable_ea', 'del_virt_module', 'delay_slot_insn', 'delete_DBG_Hooks', @@ -2437,6 +2573,9 @@ 'delete___qsemaphore_t', 'delete___qthread_t', 'delete___qtimer_t', + 'delete_abstract_graph_t', + 'delete_action_ctx_base_cur_sel_t', + 'delete_action_ctx_base_source_t', 'delete_action_ctx_base_t', 'delete_action_desc_t', 'delete_addon_info_t', @@ -2467,8 +2606,10 @@ 'delete_bpt_vec_t', 'delete_bptaddr_t', 'delete_call_stack_info_t', + 'delete_call_stack_info_vec_t', 'delete_call_stack_t', 'delete_callregs_t', + 'delete_cancellable_graph_t', 'delete_carg_t', 'delete_carglist_t', 'delete_cases_and_targets_t', @@ -2503,6 +2644,8 @@ 'delete_cloop_t', 'delete_cnumber_t', 'delete_codegen_t', + 'delete_compiled_binpat_t', + 'delete_compiled_binpat_vec_t', 'delete_compiler_info_t', 'delete_const_aloc_visitor_t', 'delete_creturn_t', @@ -2520,6 +2663,14 @@ 'delete_data_type_t', 'delete_debapp_attrs_t', 'delete_debug_event_t', + 'delete_direntry_t', + 'delete_direntry_vec_t', + 'delete_dirspec_t', + 'delete_dirtree_cursor_t', + 'delete_dirtree_cursor_vec_t', + 'delete_dirtree_iterator_t', + 'delete_dirtree_selection_t', + 'delete_dirtree_t', 'delete_disasm_line_t', 'delete_disasm_text_t', 'delete_dyn_ea_array', @@ -2552,8 +2703,9 @@ 'delete_file_enumerator_t', 'delete_fixup_data_t', 'delete_fixup_info_t', - 'delete_fnum_array', 'delete_fnumber_t', + 'delete_fpvalue_shorts_array_t', + 'delete_fpvalue_t', 'delete_func_item_iterator_t', 'delete_func_parent_iterator_t', 'delete_func_t', @@ -2562,6 +2714,7 @@ 'delete_funcarg_t', 'delete_funcargvec_t', 'delete_gco_info_t', + 'delete_gdl_graph_t', 'delete_generic_linput_t', 'delete_graph_chains_t', 'delete_graph_item_t', @@ -2597,6 +2750,7 @@ 'delete_ivlset_t', 'delete_line_rendering_output_entries_refs_t', 'delete_line_rendering_output_entry_t', + 'delete_linearray_t', 'delete_lines_rendering_input_t', 'delete_lines_rendering_output_t', 'delete_loader_input_t', @@ -2655,7 +2809,6 @@ 'delete_op_t', 'delete_operand_locator_t', 'delete_operands_array', - 'delete_operator_info_t', 'delete_opinfo_t', 'delete_optblock_t', 'delete_optinsn_t', @@ -2818,6 +2971,7 @@ 'delete_xrefblk_t', 'delete_xreflist_entry_t', 'delete_xreflist_t', + 'delinf', 'demangle_name', 'deref_idcv', 'deref_ptr', @@ -2828,6 +2982,158 @@ 'detach_custom_data_format', 'detach_process', 'diff_trace_file', + 'direntry_t___eq__', + 'direntry_t___lt__', + 'direntry_t___ne__', + 'direntry_t_idx_get', + 'direntry_t_idx_set', + 'direntry_t_isdir_get', + 'direntry_t_isdir_set', + 'direntry_t_valid', + 'direntry_vec_t___eq__', + 'direntry_vec_t___getitem__', + 'direntry_vec_t___len__', + 'direntry_vec_t___ne__', + 'direntry_vec_t___setitem__', + 'direntry_vec_t__del', + 'direntry_vec_t_add_unique', + 'direntry_vec_t_at', + 'direntry_vec_t_begin', + 'direntry_vec_t_begin__SWIG_0', + 'direntry_vec_t_begin__SWIG_1', + 'direntry_vec_t_capacity', + 'direntry_vec_t_clear', + 'direntry_vec_t_empty', + 'direntry_vec_t_end', + 'direntry_vec_t_end__SWIG_0', + 'direntry_vec_t_end__SWIG_1', + 'direntry_vec_t_erase', + 'direntry_vec_t_erase__SWIG_0', + 'direntry_vec_t_erase__SWIG_1', + 'direntry_vec_t_extract', + 'direntry_vec_t_find', + 'direntry_vec_t_find__SWIG_0', + 'direntry_vec_t_find__SWIG_1', + 'direntry_vec_t_grow', + 'direntry_vec_t_has', + 'direntry_vec_t_inject', + 'direntry_vec_t_insert', + 'direntry_vec_t_pop_back', + 'direntry_vec_t_push_back', + 'direntry_vec_t_push_back__SWIG_0', + 'direntry_vec_t_push_back__SWIG_1', + 'direntry_vec_t_qclear', + 'direntry_vec_t_reserve', + 'direntry_vec_t_resize', + 'direntry_vec_t_resize__SWIG_0', + 'direntry_vec_t_resize__SWIG_1', + 'direntry_vec_t_size', + 'direntry_vec_t_swap', + 'direntry_vec_t_truncate', + 'dirspec_t_flags_get', + 'dirspec_t_flags_set', + 'dirspec_t_get_attrs', + 'dirspec_t_get_inode', + 'dirspec_t_get_name', + 'dirspec_t_nodename_get', + 'dirspec_t_nodename_set', + 'dirspec_t_rename_inode', + 'dirspec_t_unlink_inode', + 'dirtree_cursor_t___eq__', + 'dirtree_cursor_t___ge__', + 'dirtree_cursor_t___gt__', + 'dirtree_cursor_t___le__', + 'dirtree_cursor_t___lt__', + 'dirtree_cursor_t___ne__', + 'dirtree_cursor_t_compare', + 'dirtree_cursor_t_is_root_cursor', + 'dirtree_cursor_t_parent_get', + 'dirtree_cursor_t_parent_set', + 'dirtree_cursor_t_rank_get', + 'dirtree_cursor_t_rank_set', + 'dirtree_cursor_t_root_cursor', + 'dirtree_cursor_t_set_root_cursor', + 'dirtree_cursor_t_valid', + 'dirtree_cursor_vec_t___eq__', + 'dirtree_cursor_vec_t___getitem__', + 'dirtree_cursor_vec_t___len__', + 'dirtree_cursor_vec_t___ne__', + 'dirtree_cursor_vec_t___setitem__', + 'dirtree_cursor_vec_t__del', + 'dirtree_cursor_vec_t_add_unique', + 'dirtree_cursor_vec_t_at', + 'dirtree_cursor_vec_t_begin', + 'dirtree_cursor_vec_t_begin__SWIG_0', + 'dirtree_cursor_vec_t_begin__SWIG_1', + 'dirtree_cursor_vec_t_capacity', + 'dirtree_cursor_vec_t_clear', + 'dirtree_cursor_vec_t_empty', + 'dirtree_cursor_vec_t_end', + 'dirtree_cursor_vec_t_end__SWIG_0', + 'dirtree_cursor_vec_t_end__SWIG_1', + 'dirtree_cursor_vec_t_erase', + 'dirtree_cursor_vec_t_erase__SWIG_0', + 'dirtree_cursor_vec_t_erase__SWIG_1', + 'dirtree_cursor_vec_t_extract', + 'dirtree_cursor_vec_t_find', + 'dirtree_cursor_vec_t_find__SWIG_0', + 'dirtree_cursor_vec_t_find__SWIG_1', + 'dirtree_cursor_vec_t_grow', + 'dirtree_cursor_vec_t_has', + 'dirtree_cursor_vec_t_inject', + 'dirtree_cursor_vec_t_insert', + 'dirtree_cursor_vec_t_pop_back', + 'dirtree_cursor_vec_t_push_back', + 'dirtree_cursor_vec_t_push_back__SWIG_0', + 'dirtree_cursor_vec_t_push_back__SWIG_1', + 'dirtree_cursor_vec_t_qclear', + 'dirtree_cursor_vec_t_reserve', + 'dirtree_cursor_vec_t_resize', + 'dirtree_cursor_vec_t_resize__SWIG_0', + 'dirtree_cursor_vec_t_resize__SWIG_1', + 'dirtree_cursor_vec_t_size', + 'dirtree_cursor_vec_t_swap', + 'dirtree_cursor_vec_t_truncate', + 'dirtree_iterator_t_cursor_get', + 'dirtree_iterator_t_cursor_set', + 'dirtree_iterator_t_pattern_get', + 'dirtree_iterator_t_pattern_set', + 'dirtree_t_change_rank', + 'dirtree_t_chdir', + 'dirtree_t_errstr', + 'dirtree_t_findfirst', + 'dirtree_t_findnext', + 'dirtree_t_get_abspath', + 'dirtree_t_get_abspath__SWIG_0', + 'dirtree_t_get_abspath__SWIG_1', + 'dirtree_t_get_dir_size', + 'dirtree_t_get_entry_attrs', + 'dirtree_t_get_entry_name', + 'dirtree_t_get_nodename', + 'dirtree_t_get_parent_cursor', + 'dirtree_t_get_rank', + 'dirtree_t_getcwd', + 'dirtree_t_isdir', + 'dirtree_t_isdir__SWIG_0', + 'dirtree_t_isdir__SWIG_1', + 'dirtree_t_isfile', + 'dirtree_t_isfile__SWIG_0', + 'dirtree_t_isfile__SWIG_1', + 'dirtree_t_link', + 'dirtree_t_link__SWIG_0', + 'dirtree_t_link__SWIG_1', + 'dirtree_t_load', + 'dirtree_t_mkdir', + 'dirtree_t_notify_dirtree', + 'dirtree_t_rename', + 'dirtree_t_resolve_cursor', + 'dirtree_t_resolve_path', + 'dirtree_t_rmdir', + 'dirtree_t_save', + 'dirtree_t_set_nodename', + 'dirtree_t_unlink', + 'dirtree_t_unlink__SWIG_0', + 'dirtree_t_unlink__SWIG_1', 'disable_bblk_trace', 'disable_bpt', 'disable_bpt__SWIG_0', @@ -2885,16 +3191,20 @@ 'disown_IDP_Hooks', 'disown_UI_Hooks', 'disown_View_Hooks', + 'disown_abstract_graph_t', 'disown_aloc_visitor_t', 'disown_argtinfo_helper_t', + 'disown_cancellable_graph_t', 'disown_cfunc_parentee_t', 'disown_chain_visitor_t', 'disown_choose_ioport_parser_t', 'disown_const_aloc_visitor_t', 'disown_ctree_parentee_t', 'disown_ctree_visitor_t', + 'disown_dirspec_t', 'disown_enum_member_visitor_t', 'disown_file_enumerator_t', + 'disown_gdl_graph_t', 'disown_graph_node_visitor_t', 'disown_graph_path_visitor_t', 'disown_graph_visitor_t', @@ -2905,7 +3215,6 @@ 'disown_minsn_visitor_t', 'disown_mlist_mop_visitor_t', 'disown_mop_visitor_t', - 'disown_mutable_graph_t', 'disown_optblock_t', 'disown_optinsn_t', 'disown_predicate_t', @@ -3024,6 +3333,7 @@ 'eamap_size', 'eamap_t_at', 'eamap_t_size', + 'ecleaz', 'eclose', 'edge_info_t_color_get', 'edge_info_t_color_set', @@ -3329,15 +3639,8 @@ 'float_flag', 'flt_flag', 'flush_buffers', - 'fnum_array___getitem__', - 'fnum_array___len__', - 'fnum_array___setitem__', - 'fnum_array__get_bytes', - 'fnum_array__set_bytes', - 'fnum_array_data_get', 'fnumber_t___eq__', 'fnumber_t___ge__', - 'fnumber_t___get_fnum', 'fnumber_t___gt__', 'fnumber_t___le__', 'fnumber_t___lt__', @@ -3371,6 +3674,56 @@ 'formchgcbfa_set_field_value', 'formchgcbfa_set_focused_field', 'formchgcbfa_show_field', + 'fpvalue_shorts_array_t___getitem__', + 'fpvalue_shorts_array_t___len__', + 'fpvalue_shorts_array_t___setitem__', + 'fpvalue_shorts_array_t__get_bytes', + 'fpvalue_shorts_array_t__set_bytes', + 'fpvalue_shorts_array_t_data_get', + 'fpvalue_t___add__', + 'fpvalue_t___eq__', + 'fpvalue_t___ge__', + 'fpvalue_t___gt__', + 'fpvalue_t___le__', + 'fpvalue_t___lt__', + 'fpvalue_t___mul__', + 'fpvalue_t___ne__', + 'fpvalue_t___str__', + 'fpvalue_t___sub__', + 'fpvalue_t___truediv__', + 'fpvalue_t__get_10bytes', + 'fpvalue_t__get_bytes', + 'fpvalue_t__get_float', + 'fpvalue_t__get_shorts', + 'fpvalue_t__set_10bytes', + 'fpvalue_t__set_bytes', + 'fpvalue_t__set_float', + 'fpvalue_t_assign', + 'fpvalue_t_clear', + 'fpvalue_t_compare', + 'fpvalue_t_eabs', + 'fpvalue_t_fadd', + 'fpvalue_t_fdiv', + 'fpvalue_t_fmul', + 'fpvalue_t_from_10bytes', + 'fpvalue_t_from_12bytes', + 'fpvalue_t_from_int64', + 'fpvalue_t_from_str', + 'fpvalue_t_from_sval', + 'fpvalue_t_from_uint64', + 'fpvalue_t_fsub', + 'fpvalue_t_get_kind', + 'fpvalue_t_is_negative', + 'fpvalue_t_mul_pow2', + 'fpvalue_t_negate', + 'fpvalue_t_to_10bytes', + 'fpvalue_t_to_12bytes', + 'fpvalue_t_to_int64', + 'fpvalue_t_to_str', + 'fpvalue_t_to_sval', + 'fpvalue_t_to_uint64', + 'fpvalue_t_w_get', + 'fpvalue_t_w_set', 'frame_off_args', 'frame_off_lvars', 'frame_off_retaddr', @@ -3378,6 +3731,8 @@ 'free_chunk', 'free_custom_icon', 'free_idcv', + 'free_regarg', + 'free_regvar', 'free_til', 'func_contains', 'func_does_return', @@ -3478,6 +3833,7 @@ 'func_type_data_t_flags_set', 'func_type_data_t_get_call_method', 'func_type_data_t_guess_cc', + 'func_type_data_t_is_golang_cc', 'func_type_data_t_is_high', 'func_type_data_t_is_noret', 'func_type_data_t_is_pure', @@ -3545,6 +3901,7 @@ 'funcargvec_t_truncate', 'gcc_layout', 'gco_info_t_append_to_list', + 'gco_info_t_cvt_to_ivl', 'gco_info_t_flags_get', 'gco_info_t_flags_set', 'gco_info_t_is_def', @@ -3554,6 +3911,28 @@ 'gco_info_t_name_set', 'gco_info_t_size_get', 'gco_info_t_size_set', + 'gdl_graph_t_begin', + 'gdl_graph_t_edge', + 'gdl_graph_t_empty', + 'gdl_graph_t_end', + 'gdl_graph_t_entry', + 'gdl_graph_t_exists', + 'gdl_graph_t_exit', + 'gdl_graph_t_front', + 'gdl_graph_t_get_edge_color', + 'gdl_graph_t_get_node_color', + 'gdl_graph_t_get_node_label', + 'gdl_graph_t_nedge', + 'gdl_graph_t_node_qty', + 'gdl_graph_t_npred', + 'gdl_graph_t_nsucc', + 'gdl_graph_t_pred', + 'gdl_graph_t_print_edge', + 'gdl_graph_t_print_graph_attributes', + 'gdl_graph_t_print_node', + 'gdl_graph_t_print_node_attributes', + 'gdl_graph_t_size', + 'gdl_graph_t_succ', 'gen_complex_call_chart', 'gen_decorate_name', 'gen_disasm_text', @@ -3653,6 +4032,8 @@ 'get_data_elsize', 'get_data_value', 'get_db_byte', + 'get_dbctx_id', + 'get_dbctx_qty', 'get_dbg_byte', 'get_dbg_memory_info', 'get_dbg_reg_info', @@ -3675,6 +4056,7 @@ 'get_ea_name', 'get_ea_viewer_history_info', 'get_effective_spd', + 'get_elapsed_secs', 'get_elf_debug_file_directory', 'get_encoding_bpu', 'get_encoding_name', @@ -3777,6 +4159,7 @@ 'get_hidden_range_num', 'get_hidden_range_qty', 'get_highlight', + 'get_ida_notepad_text', 'get_ida_subdirs', 'get_idainfo_by_type', 'get_idasgn_desc', @@ -3784,6 +4167,8 @@ 'get_idasgn_qty', 'get_idasgn_title', 'get_idati', + 'get_idb_ctime', + 'get_idb_nopens', 'get_idb_notifier_addr', 'get_idb_notifier_ud_addr', 'get_idc_filename', @@ -3800,6 +4185,10 @@ 'get_import_module_qty', 'get_ind_purged', 'get_inf_structure', + 'get_initial_ida_version', + 'get_initial_ida_version__SWIG_0', + 'get_initial_ida_version__SWIG_1', + 'get_innermost_member', 'get_input_file_path', 'get_insn_tev_reg_mem', 'get_insn_tev_reg_result', @@ -3821,6 +4210,7 @@ 'get_last_serial_enum_member', 'get_last_struc_idx', 'get_linput_type', + 'get_loader_format_name', 'get_local_var', 'get_local_vars', 'get_long_name', @@ -3976,11 +4366,14 @@ 'get_spd', 'get_special_folder', 'get_sptr', + 'get_srcdbg_paths', + 'get_srcdbg_undesired_paths', 'get_srcinfo_provider', 'get_sreg', 'get_sreg_range', 'get_sreg_range_num', 'get_sreg_ranges_qty', + 'get_std_dirtree', 'get_step_trace_options', 'get_stkvar', 'get_stock_tinfo', @@ -3990,6 +4383,7 @@ 'get_str_type', 'get_str_type_code', 'get_str_type_prefix_length', + 'get_strid', 'get_strlist_item', 'get_strlist_options', 'get_strlist_qty', @@ -4042,6 +4436,8 @@ 'get_unsigned_mcode', 'get_user_idadir', 'get_user_strlist_options', + 'get_vftable_ea', + 'get_vftable_ordinal', 'get_view_renderer_type', 'get_viewer_graph', 'get_viewer_place_type', @@ -4059,6 +4455,7 @@ 'get_zero_ranges', 'getb_reginsn', 'getf_reginsn', + 'getinf_str', 'getn_bpt', 'getn_enum', 'getn_fchunk', @@ -4118,10 +4515,14 @@ 'group_crinfo_t_text_get', 'group_crinfo_t_text_set', 'guess_func_cc', - 'guess_table_address', - 'guess_table_size', 'guess_tinfo', 'handle_debug_event', + 'handle_fixups_in_macro', + 'has_aflag_linnum', + 'has_aflag_lname', + 'has_aflag_ti', + 'has_aflag_ti0', + 'has_aflag_ti1', 'has_any_name', 'has_auto_name', 'has_cached_cfunc', @@ -4371,7 +4772,6 @@ 'idc_parse_types', 'idc_print_type', 'idc_set_local_type', - 'idc_value_t___get_e', 'idc_value_t__create_empty_string', 'idc_value_t_c_str', 'idc_value_t_clear', @@ -4499,6 +4899,7 @@ 'inf_get_af2_low', 'inf_get_af_high', 'inf_get_af_low', + 'inf_get_app_bitness', 'inf_get_appcall_options', 'inf_get_apptype', 'inf_get_asmtype', @@ -4576,7 +4977,9 @@ 'inf_hide_libfuncs', 'inf_huge_arg_align', 'inf_inc_database_change_count', - 'inf_is_32bit', + 'inf_is_16bit', + 'inf_is_32bit_exactly', + 'inf_is_32bit_or_higher', 'inf_is_64bit', 'inf_is_auto_enabled', 'inf_is_be', @@ -4953,6 +5356,35 @@ 'is__invsign1', 'is_action_enabled', 'is_additive', + 'is_aflag__bnot0', + 'is_aflag__bnot1', + 'is_aflag__invsign0', + 'is_aflag__invsign1', + 'is_aflag_align_flow', + 'is_aflag_colored_item', + 'is_aflag_data_guessed_by_hexrays', + 'is_aflag_fixed_spd', + 'is_aflag_func_guessed_by_hexrays', + 'is_aflag_hidden_border', + 'is_aflag_hidden_item', + 'is_aflag_libitem', + 'is_aflag_lzero0', + 'is_aflag_lzero1', + 'is_aflag_manual_insn', + 'is_aflag_noret', + 'is_aflag_notcode', + 'is_aflag_notproc', + 'is_aflag_public_name', + 'is_aflag_retfp', + 'is_aflag_terse_struc', + 'is_aflag_tilcmt', + 'is_aflag_type_determined_by_hexrays', + 'is_aflag_type_guessed_by_hexrays', + 'is_aflag_type_guessed_by_ida', + 'is_aflag_usersp', + 'is_aflag_userti', + 'is_aflag_weak_name', + 'is_aflag_zstroff', 'is_align', 'is_align_flow', 'is_align_insn', @@ -4989,6 +5421,7 @@ 'is_custom', 'is_data', 'is_data_far', + 'is_data_guessed_by_hexrays', 'is_database_flag', 'is_debugger_busy', 'is_debugger_memory', @@ -5019,6 +5452,7 @@ 'is_forced_operand', 'is_func', 'is_func_entry', + 'is_func_guessed_by_hexrays', 'is_func_locked', 'is_func_tail', 'is_func_trace_enabled', @@ -5027,10 +5461,12 @@ 'is_gcc32', 'is_gcc64', 'is_ghost_enum', + 'is_golang_cc', 'is_head', 'is_hidden_border', 'is_hidden_item', 'is_idaq', + 'is_idaview', 'is_ident', 'is_ident_cp', 'is_in_nlist', @@ -5147,6 +5583,7 @@ 'is_type_complex', 'is_type_const', 'is_type_correct', + 'is_type_determined_by_hexrays', 'is_type_double', 'is_type_enum', 'is_type_ext_arithmetic', @@ -5154,6 +5591,8 @@ 'is_type_float', 'is_type_floating', 'is_type_func', + 'is_type_guessed_by_hexrays', + 'is_type_guessed_by_ida', 'is_type_int', 'is_type_int128', 'is_type_int16', @@ -5259,6 +5698,7 @@ 'jumpto', 'jumpto__SWIG_0', 'jumpto__SWIG_1', + 'l_compare2', 'last_idcv_attr', 'leading_zero_important', 'lexcompare', @@ -5318,6 +5758,18 @@ 'line_rendering_output_entry_t_line_set', 'line_rendering_output_entry_t_nchars_get', 'line_rendering_output_entry_t_nchars_set', + 'linearray_t_beginning', + 'linearray_t_down', + 'linearray_t_ending', + 'linearray_t_get_bg_color', + 'linearray_t_get_dlnnum', + 'linearray_t_get_linecnt', + 'linearray_t_get_pfx_color', + 'linearray_t_get_place', + 'linearray_t_set_place', + 'linearray_t_set_userdata', + 'linearray_t_up', + 'linearray_t_userdata', 'lines_rendering_input_t_cb_get', 'lines_rendering_input_t_cb_set', 'lines_rendering_input_t_sections_lines_get', @@ -5369,6 +5821,7 @@ 'loader_t_flags_set', 'loader_t_version_get', 'loader_t_version_set', + 'locate_lvar', 'lochist_entry_t_acquire_place', 'lochist_entry_t_is_valid', 'lochist_entry_t_place', @@ -5508,6 +5961,7 @@ 'lvar_saved_info_t_clr_forced_lvar', 'lvar_saved_info_t_clr_nomap_lvar', 'lvar_saved_info_t_clr_noptr_lvar', + 'lvar_saved_info_t_clr_unused_lvar', 'lvar_saved_info_t_cmt_get', 'lvar_saved_info_t_cmt_set', 'lvar_saved_info_t_flags_get', @@ -5517,6 +5971,7 @@ 'lvar_saved_info_t_is_kept', 'lvar_saved_info_t_is_nomap_lvar', 'lvar_saved_info_t_is_noptr_lvar', + 'lvar_saved_info_t_is_unused_lvar', 'lvar_saved_info_t_ll_get', 'lvar_saved_info_t_ll_set', 'lvar_saved_info_t_name_get', @@ -5525,6 +5980,7 @@ 'lvar_saved_info_t_set_keep', 'lvar_saved_info_t_set_nomap_lvar', 'lvar_saved_info_t_set_noptr_lvar', + 'lvar_saved_info_t_set_unused_lvar', 'lvar_saved_info_t_size_get', 'lvar_saved_info_t_size_set', 'lvar_saved_info_t_type_get', @@ -5574,6 +6030,7 @@ 'lvar_t_clear_used', 'lvar_t_clr_arg_var', 'lvar_t_clr_automapped', + 'lvar_t_clr_decl_unused', 'lvar_t_clr_dummy_arg', 'lvar_t_clr_fake_var', 'lvar_t_clr_floating_var', @@ -5603,9 +6060,11 @@ 'lvar_t_has_user_info', 'lvar_t_has_user_name', 'lvar_t_has_user_type', + 'lvar_t_in_asm', 'lvar_t_is_aliasable', 'lvar_t_is_arg_var', 'lvar_t_is_automapped', + 'lvar_t_is_decl_unused', 'lvar_t_is_dummy_arg', 'lvar_t_is_fake_var', 'lvar_t_is_floating_var', @@ -5624,6 +6083,7 @@ 'lvar_t_name_set', 'lvar_t_set_arg_var', 'lvar_t_set_automapped', + 'lvar_t_set_decl_unused', 'lvar_t_set_dummy_arg', 'lvar_t_set_fake_var', 'lvar_t_set_final_lvar_type', @@ -5655,6 +6115,7 @@ 'lvar_t_width_get', 'lvar_t_width_set', 'lvar_uservec_t_clear', + 'lvar_uservec_t_empty', 'lvar_uservec_t_find_info', 'lvar_uservec_t_keep_info', 'lvar_uservec_t_lmaps_get', @@ -5749,7 +6210,10 @@ 'mba_t_consumed_argregs_get', 'mba_t_consumed_argregs_set', 'mba_t_copy_block', + 'mba_t_create_helper_call', 'mba_t_deleted_pairs', + 'mba_t_deprecated_idb_node_get', + 'mba_t_deprecated_idb_node_set', 'mba_t_deserialize', 'mba_t_display_numaddrs', 'mba_t_display_valnums', @@ -5801,9 +6265,8 @@ 'mba_t_has_bad_sp', 'mba_t_has_over_chains', 'mba_t_has_passregs', + 'mba_t_has_stack_retval', 'mba_t_idaloc2vd', - 'mba_t_idb_node_get', - 'mba_t_idb_node_set', 'mba_t_idb_spoiled_get', 'mba_t_idb_spoiled_set', 'mba_t_idb_type_get', @@ -5861,7 +6324,7 @@ 'mba_t_really_alloc', 'mba_t_regargs_is_not_aligned', 'mba_t_remove_block', - 'mba_t_remove_empty_blocks', + 'mba_t_remove_empty_and_unreachable_blocks', 'mba_t_reqmat_get', 'mba_t_reqmat_set', 'mba_t_restricted_memory_get', @@ -5875,6 +6338,7 @@ 'mba_t_save_snapshot', 'mba_t_saverest_done', 'mba_t_serialize', + 'mba_t_set_maturity', 'mba_t_set_mba_flags', 'mba_t_set_mba_flags2', 'mba_t_shadow_args_get', @@ -6010,6 +6474,8 @@ 'mcallarg_t_dstr', 'mcallarg_t_ea_get', 'mcallarg_t_ea_set', + 'mcallarg_t_flags_get', + 'mcallarg_t_flags_set', 'mcallarg_t_make_int', 'mcallarg_t_make_uint', 'mcallarg_t_name_get', @@ -6503,6 +6969,7 @@ 'mop_t_is_mob', 'mop_t_is_negative_constant', 'mop_t_is_one', + 'mop_t_is_pcval', 'mop_t_is_positive_constant', 'mop_t_is_reg', 'mop_t_is_reg__SWIG_0', @@ -6530,6 +6997,7 @@ 'mop_t_make_reg__SWIG_1', 'mop_t_make_reg_pair', 'mop_t_make_second_half', + 'mop_t_make_stkvar', 'mop_t_may_use_aliased_memory', 'mop_t_oprops_get', 'mop_t_oprops_set', @@ -6547,6 +7015,7 @@ 'mop_t_t_get', 'mop_t_t_set', 'mop_t_unsigned_value', + 'mop_t_update_numop_value', 'mop_t_valnum_get', 'mop_t_valnum_set', 'mop_t_value', @@ -6604,21 +7073,23 @@ 'msg_get_lines', 'msg_save', 'must_mcode_close_block', + 'mutable_graph_t_add_edge', + 'mutable_graph_t_add_node', 'mutable_graph_t_belongs_get', 'mutable_graph_t_belongs_set', 'mutable_graph_t_calc_group_ea', 'mutable_graph_t_change_group_visibility', - 'mutable_graph_t_clear', 'mutable_graph_t_create_digraph_layout', 'mutable_graph_t_create_group', 'mutable_graph_t_del_custom_layout', + 'mutable_graph_t_del_edge', + 'mutable_graph_t_del_node', 'mutable_graph_t_delete_group', 'mutable_graph_t_edges_get', 'mutable_graph_t_edges_set', 'mutable_graph_t_empty', 'mutable_graph_t_exists', 'mutable_graph_t_get_custom_layout', - 'mutable_graph_t_get_edge', 'mutable_graph_t_get_first_subgraph_node', 'mutable_graph_t_get_graph_groups', 'mutable_graph_t_get_next_subgraph_node', @@ -6642,9 +7113,6 @@ 'mutable_graph_t_nodes_get', 'mutable_graph_t_nodes_set', 'mutable_graph_t_npred', - 'mutable_graph_t_nrect', - 'mutable_graph_t_nrect__SWIG_0', - 'mutable_graph_t_nrect__SWIG_1', 'mutable_graph_t_nsucc', 'mutable_graph_t_org_preds_get', 'mutable_graph_t_org_preds_set', @@ -6654,12 +7122,17 @@ 'mutable_graph_t_preds_get', 'mutable_graph_t_preds_set', 'mutable_graph_t_predset', + 'mutable_graph_t_redo_layout', + 'mutable_graph_t_refresh', + 'mutable_graph_t_replace_edge', 'mutable_graph_t_reset', + 'mutable_graph_t_resize', 'mutable_graph_t_set_custom_layout', 'mutable_graph_t_set_deleted_node', 'mutable_graph_t_set_edge', 'mutable_graph_t_set_graph_groups', 'mutable_graph_t_set_node_group', + 'mutable_graph_t_set_nrect', 'mutable_graph_t_size', 'mutable_graph_t_succ', 'mutable_graph_t_succs_get', @@ -6731,6 +7204,7 @@ 'netnode_easet_idx', 'netnode_easet_idx8', 'netnode_end', + 'netnode_exist', 'netnode_get_name', 'netnode_getblob', 'netnode_getblob_ea', @@ -6806,6 +7280,9 @@ 'new___qsemaphore_t', 'new___qthread_t', 'new___qtimer_t', + 'new_abstract_graph_t', + 'new_action_ctx_base_cur_sel_t', + 'new_action_ctx_base_source_t', 'new_action_ctx_base_t', 'new_action_desc_t', 'new_addon_info_t', @@ -6856,12 +7333,14 @@ 'new_bpt_vec_t__SWIG_1', 'new_bptaddr_t', 'new_call_stack_info_t', + 'new_call_stack_info_vec_t', + 'new_call_stack_info_vec_t__SWIG_0', + 'new_call_stack_info_vec_t__SWIG_1', 'new_call_stack_t', - 'new_call_stack_t__SWIG_0', - 'new_call_stack_t__SWIG_1', 'new_callregs_t', 'new_callregs_t__SWIG_0', 'new_callregs_t__SWIG_1', + 'new_cancellable_graph_t', 'new_carg_t', 'new_carglist_t', 'new_carglist_t__SWIG_0', @@ -6929,6 +7408,10 @@ 'new_cloop_t__SWIG_1', 'new_cloop_t__SWIG_2', 'new_cnumber_t', + 'new_compiled_binpat_t', + 'new_compiled_binpat_vec_t', + 'new_compiled_binpat_vec_t__SWIG_0', + 'new_compiled_binpat_vec_t__SWIG_1', 'new_compiler_info_t', 'new_const_aloc_visitor_t', 'new_creturn_t', @@ -6950,6 +7433,18 @@ 'new_debug_event_t', 'new_debug_event_t__SWIG_0', 'new_debug_event_t__SWIG_1', + 'new_direntry_t', + 'new_direntry_vec_t', + 'new_direntry_vec_t__SWIG_0', + 'new_direntry_vec_t__SWIG_1', + 'new_dirspec_t', + 'new_dirtree_cursor_t', + 'new_dirtree_cursor_vec_t', + 'new_dirtree_cursor_vec_t__SWIG_0', + 'new_dirtree_cursor_vec_t__SWIG_1', + 'new_dirtree_iterator_t', + 'new_dirtree_selection_t', + 'new_dirtree_t', 'new_disasm_line_t', 'new_disasm_line_t__SWIG_0', 'new_disasm_line_t__SWIG_1', @@ -7001,8 +7496,11 @@ 'new_fixup_data_t__SWIG_0', 'new_fixup_data_t__SWIG_1', 'new_fixup_info_t', - 'new_fnum_array', 'new_fnumber_t', + 'new_fpvalue_shorts_array_t', + 'new_fpvalue_t', + 'new_fpvalue_t__SWIG_0', + 'new_fpvalue_t__SWIG_1', 'new_func_item_iterator_t', 'new_func_item_iterator_t__SWIG_0', 'new_func_item_iterator_t__SWIG_1', @@ -7019,6 +7517,7 @@ 'new_funcargvec_t__SWIG_0', 'new_funcargvec_t__SWIG_1', 'new_gco_info_t', + 'new_gdl_graph_t', 'new_graph_chains_t', 'new_graph_item_t', 'new_graph_location_info_t', @@ -7076,6 +7575,7 @@ 'new_line_rendering_output_entry_t', 'new_line_rendering_output_entry_t__SWIG_0', 'new_line_rendering_output_entry_t__SWIG_1', + 'new_linearray_t', 'new_lines_rendering_input_t', 'new_lines_rendering_output_t', 'new_loader_input_t', @@ -7165,7 +7665,6 @@ 'new_op_t', 'new_operand_locator_t', 'new_operands_array', - 'new_operator_info_t', 'new_opinfo_t', 'new_optblock_t', 'new_optinsn_t', @@ -7235,6 +7734,8 @@ 'new_reg_accesses_t', 'new_reg_info_t', 'new_regarg_t', + 'new_regarg_t__SWIG_0', + 'new_regarg_t__SWIG_1', 'new_reginfovec_t', 'new_reginfovec_t__SWIG_0', 'new_reginfovec_t__SWIG_1', @@ -7248,6 +7749,8 @@ 'new_regval_t__SWIG_0', 'new_regval_t__SWIG_1', 'new_regvar_t', + 'new_regvar_t__SWIG_0', + 'new_regvar_t__SWIG_1', 'new_renderer_info_pos_t', 'new_renderer_info_t', 'new_renderer_pos_info_t', @@ -7507,7 +8010,9 @@ 'node_layout_t_swap', 'node_layout_t_truncate', 'node_ordering_t_clear', + 'node_ordering_t_clr', 'node_ordering_t_node', + 'node_ordering_t_order', 'node_ordering_t_resize', 'node_ordering_t_set', 'node_ordering_t_size', @@ -7601,6 +8106,7 @@ 'op_uses_x', 'op_uses_y', 'op_uses_z', + 'open_bookmarks_window', 'open_bpts_window', 'open_calls_window', 'open_disasm_window', @@ -7647,16 +8153,6 @@ 'operands_array__get_bytes', 'operands_array__set_bytes', 'operands_array_data_get', - 'operator_info_t_fixtype_get', - 'operator_info_t_fixtype_set', - 'operator_info_t_flags_get', - 'operator_info_t_flags_set', - 'operator_info_t_precedence_get', - 'operator_info_t_precedence_set', - 'operator_info_t_text_get', - 'operator_info_t_text_set', - 'operator_info_t_valency_get', - 'operator_info_t_valency_set', 'opinfo_t_cd_get', 'opinfo_t_cd_set', 'opinfo_t_ec_get', @@ -7768,6 +8264,8 @@ 'outctx_t_procmod_set', 'outctx_t_retrieve_cmt', 'outctx_t_retrieve_name', + 'outctx_t_saved_immvals_get', + 'outctx_t_saved_immvals_set', 'outctx_t_set_bin_state', 'outctx_t_setup_outctx', 'outctx_t_wif_get', @@ -7778,6 +8276,7 @@ 'pack_object_to_bv', 'pack_object_to_idb', 'packreal_flag', + 'parse_binpat_str', 'parse_command_line3', 'parse_dbgopts', 'parse_decl', @@ -8016,6 +8515,7 @@ 'put_qword', 'put_word', 'py_add_idc_func', + 'py_chooser_base_t_get_row', 'py_get_ask_form', 'py_get_call_idc_func', 'py_get_open_form', @@ -8539,6 +9039,7 @@ 'refinfo_t_type', 'refresh_chooser', 'refresh_choosers', + 'refresh_custom_viewer', 'refresh_debugger_memory', 'refresh_idaview', 'refresh_idaview_anyway', @@ -8632,6 +9133,7 @@ 'regarg_t_name_set', 'regarg_t_reg_get', 'regarg_t_reg_set', + 'regarg_t_swap', 'regarg_t_type_get', 'regarg_t_type_set', 'reginfovec_t___eq__', @@ -8760,6 +9262,7 @@ 'regvar_t_canon_set', 'regvar_t_cmt_get', 'regvar_t_cmt_set', + 'regvar_t_swap', 'regvar_t_user_get', 'regvar_t_user_set', 'reload_file', @@ -8775,6 +9278,7 @@ 'rename_bptgrp', 'rename_encoding', 'rename_entry', + 'rename_lvar', 'rename_regvar', 'renderer_info_pos_t___eq__', 'renderer_info_pos_t___ne__', @@ -8786,7 +9290,6 @@ 'renderer_info_pos_t_node_set', 'renderer_info_t___eq__', 'renderer_info_t___ne__', - 'renderer_info_t_clear', 'renderer_info_t_gli_get', 'renderer_info_t_gli_set', 'renderer_info_t_pos_get', @@ -9106,6 +9609,9 @@ 'segment_t_end_ea_set', 'segment_t_flags_get', 'segment_t_flags_set', + 'segment_t_is_16bit', + 'segment_t_is_32bit', + 'segment_t_is_64bit', 'segment_t_is_header_segm', 'segment_t_is_hidden_segtype', 'segment_t_is_loader_segm', @@ -9133,8 +9639,6 @@ 'segment_t_type_get', 'segment_t_type_set', 'segment_t_update', - 'segment_t_use32', - 'segment_t_use64', 'segtype', 'seh_t_clear', 'seh_t_filter_get', @@ -9205,6 +9709,7 @@ 'set_cp_validity', 'set_custom_data_type_ids', 'set_custom_viewer_qt_aware', + 'set_data_guessed_by_hexrays', 'set_database_flag', 'set_debug_event_code', 'set_debug_name', @@ -9235,6 +9740,7 @@ 'set_frame_size', 'set_func_cmt', 'set_func_end', + 'set_func_guessed_by_hexrays', 'set_func_name_if_jumpfunc', 'set_func_start', 'set_func_trace_options', @@ -9247,6 +9753,7 @@ 'set_header_path', 'set_highlight', 'set_highlight_trace_options', + 'set_ida_notepad_text', 'set_ida_state', 'set_idcv_attr', 'set_idcv_slice', @@ -9256,6 +9763,7 @@ 'set_insn_trace_options', 'set_item_color', 'set_libitem', + 'set_loader_format_name', 'set_lzero', 'set_lzero0', 'set_lzero1', @@ -9304,6 +9812,8 @@ 'set_segment_translations', 'set_selector', 'set_source_linnum', + 'set_srcdbg_paths', + 'set_srcdbg_undesired_paths', 'set_sreg_at_next_code', 'set_step_trace_options', 'set_str_type', @@ -9330,10 +9840,13 @@ 'set_trace_size', 'set_type', 'set_type_alias', + 'set_type_determined_by_hexrays', + 'set_type_guessed_by_ida', 'set_usemodsp', 'set_user_defined_prefix', 'set_usersp', 'set_userti', + 'set_vftable_ea', 'set_view_renderer_type', 'set_viewer_graph', 'set_visible_func', @@ -9573,7 +10086,6 @@ 'strwinsetup_t_display_only_existing_strings_set', 'strwinsetup_t_ignore_heads_get', 'strwinsetup_t_ignore_heads_set', - 'strwinsetup_t_is_initialized', 'strwinsetup_t_minlen_get', 'strwinsetup_t_minlen_set', 'strwinsetup_t_only_7bit_get', @@ -9587,6 +10099,7 @@ 'swap_idcvs', 'swap_mcode_relation', 'swapped_relation', + 'switch_dbctx', 'switch_info_t__from_ptrval__', 'switch_info_t__get_values_lowcase', 'switch_info_t__set_values_lowcase', @@ -9618,6 +10131,7 @@ 'switch_info_t_is_nolowcase', 'switch_info_t_is_sparse', 'switch_info_t_is_subtract', + 'switch_info_t_is_user_defined', 'switch_info_t_jcases_get', 'switch_info_t_jcases_set', 'switch_info_t_jumps_get', @@ -9639,6 +10153,7 @@ 'switch_info_t_startea_get', 'switch_info_t_startea_set', 'switch_info_t_use_std_table', + 'switch_to_golang', 'sync_source_t___eq__', 'sync_source_t___ne__', 'sync_source_t_get_register', @@ -10282,6 +10797,7 @@ 'udt_type_data_t_pack_set', 'udt_type_data_t_sda_get', 'udt_type_data_t_sda_set', + 'udt_type_data_t_set_vftable', 'udt_type_data_t_swap', 'udt_type_data_t_taudt_bits_get', 'udt_type_data_t_taudt_bits_set', @@ -10467,6 +10983,7 @@ 'unregister_custom_data_format', 'unregister_custom_data_type', 'unregister_timer', + 'upd_abits', 'update_action_checkable', 'update_action_checked', 'update_action_icon', @@ -10481,6 +10998,7 @@ 'update_func', 'update_hidden_range', 'update_segm', + 'use_golang_cc', 'use_mapping', 'user_cancelled', 'user_cmts_begin', @@ -10582,6 +11100,7 @@ 'user_unions_size', 'user_unions_t_at', 'user_unions_t_size', + 'uses_aflag_modsp', 'uses_modsp', 'uval_array___getitem__', 'uval_array___setitem__', @@ -10702,6 +11221,7 @@ 'var_ref_t___lt__', 'var_ref_t___ne__', 'var_ref_t_compare', + 'var_ref_t_getv', 'var_ref_t_idx_get', 'var_ref_t_idx_set', 'var_ref_t_mba_get', diff --git a/release_api_contents3.txt b/release_api_contents3.txt index 695866b..e72f126 100644 --- a/release_api_contents3.txt +++ b/release_api_contents3.txt @@ -22,6 +22,7 @@ 'DBG_Hooks_dbg_trace', 'DBG_Hooks_hook', 'DBG_Hooks_unhook', + 'Hexrays_Hooks_build_callinfo', 'Hexrays_Hooks_close_pseudocode', 'Hexrays_Hooks_cmt_changed', 'Hexrays_Hooks_combine', @@ -95,6 +96,7 @@ 'IDB_Hooks_dirtree_rank', 'IDB_Hooks_dirtree_rmdir', 'IDB_Hooks_dirtree_rminode', + 'IDB_Hooks_dirtree_segm_moved', 'IDB_Hooks_enum_bf_changed', 'IDB_Hooks_enum_cmt_changed', 'IDB_Hooks_enum_created', @@ -188,6 +190,7 @@ 'IDP_Hooks_ev_coagulate_dref', 'IDP_Hooks_ev_create_flat_group', 'IDP_Hooks_ev_create_func_frame', + 'IDP_Hooks_ev_create_merge_handlers', 'IDP_Hooks_ev_create_switch_xrefs', 'IDP_Hooks_ev_creating_segm', 'IDP_Hooks_ev_decorate_name', @@ -233,6 +236,7 @@ 'IDP_Hooks_ev_is_basic_block_end', 'IDP_Hooks_ev_is_call_insn', 'IDP_Hooks_ev_is_cond_insn', + 'IDP_Hooks_ev_is_control_flow_guard', 'IDP_Hooks_ev_is_far_jump', 'IDP_Hooks_ev_is_indirect_jump', 'IDP_Hooks_ev_is_insn_table_jump', @@ -277,6 +281,7 @@ 'IDP_Hooks_ev_term', 'IDP_Hooks_ev_treat_hindering_item', 'IDP_Hooks_ev_undefine', + 'IDP_Hooks_ev_update_call_stack', 'IDP_Hooks_ev_use_arg_types', 'IDP_Hooks_ev_use_regarg_type', 'IDP_Hooks_ev_use_stkarg_type', @@ -300,6 +305,7 @@ 'UI_Hooks_database_closed', 'UI_Hooks_database_inited', 'UI_Hooks_debugger_menu_change', + 'UI_Hooks_desktop_applied', 'UI_Hooks_destroying_plugmod', 'UI_Hooks_destroying_procmod', 'UI_Hooks_finish_populating_widget_popup', @@ -364,8 +370,35 @@ '_ll_make_num', '_ll_make_ref', '_ll_new_block', + 'abstract_graph_t_callback_ud_get', + 'abstract_graph_t_callback_ud_set', + 'abstract_graph_t_circle_center_get', + 'abstract_graph_t_circle_center_set', + 'abstract_graph_t_circle_radius_get', + 'abstract_graph_t_circle_radius_set', + 'abstract_graph_t_create_circle_layout', + 'abstract_graph_t_create_tree_layout', + 'abstract_graph_t_current_layout_get', + 'abstract_graph_t_current_layout_set', + 'abstract_graph_t_get_edge', + 'abstract_graph_t_grcall', + 'abstract_graph_t_grcall__varargs__', + 'abstract_graph_t_nrect', + 'abstract_graph_t_rect_edges_made_get', + 'abstract_graph_t_rect_edges_made_set', + 'abstract_graph_t_set_callback', + 'abstract_graph_t_title_get', + 'abstract_graph_t_title_set', 'accepts_small_udts', 'accepts_udts', + 'action_ctx_base_cur_sel_t__from_get', + 'action_ctx_base_cur_sel_t__from_set', + 'action_ctx_base_cur_sel_t_reset', + 'action_ctx_base_cur_sel_t_to_get', + 'action_ctx_base_cur_sel_t_to_set', + 'action_ctx_base_source_t_chooser_get', + 'action_ctx_base_source_t_chooser_set', + 'action_ctx_base_source_t_reset', 'action_ctx_base_t__get_form', 'action_ctx_base_t__get_form_title', 'action_ctx_base_t__get_form_type', @@ -387,6 +420,8 @@ 'action_ctx_base_t_cur_func_set', 'action_ctx_base_t_cur_seg_get', 'action_ctx_base_t_cur_seg_set', + 'action_ctx_base_t_cur_sel_get', + 'action_ctx_base_t_cur_sel_set', 'action_ctx_base_t_cur_strmem_get', 'action_ctx_base_t_cur_strmem_set', 'action_ctx_base_t_cur_struc_get', @@ -403,6 +438,8 @@ 'action_ctx_base_t_regname_get', 'action_ctx_base_t_regname_set', 'action_ctx_base_t_reset', + 'action_ctx_base_t_source_get', + 'action_ctx_base_t_source_set', 'action_ctx_base_t_widget_get', 'action_ctx_base_t_widget_set', 'action_ctx_base_t_widget_title_get', @@ -541,6 +578,7 @@ 'argloc_t_get_rrel__SWIG_1', 'argloc_t_has_reg', 'argloc_t_has_stkoff', + 'argloc_t_in_stack', 'argloc_t_is_badloc', 'argloc_t_is_custom', 'argloc_t_is_ea', @@ -902,6 +940,8 @@ 'begin_type_updating', 'bin_flag', 'bin_search', + 'bin_search__SWIG_0', + 'bin_search__SWIG_1', 'bit_bound_t_nbits_get', 'bit_bound_t_nbits_set', 'bit_bound_t_sbits_get', @@ -1050,6 +1090,7 @@ 'bookmarks_t_find_index', 'bookmarks_t_get', 'bookmarks_t_get_desc', + 'bookmarks_t_get_dirtree_id', 'bookmarks_t_mark', 'bookmarks_t_size', 'boolvec_t___eq__', @@ -1266,46 +1307,46 @@ 'call_stack_info_t_funcea_set', 'call_stack_info_t_funcok_get', 'call_stack_info_t_funcok_set', - 'call_stack_t___eq__', - 'call_stack_t___getitem__', - 'call_stack_t___len__', - 'call_stack_t___ne__', - 'call_stack_t___setitem__', - 'call_stack_t__del', - 'call_stack_t_add_unique', - 'call_stack_t_at', - 'call_stack_t_begin', - 'call_stack_t_begin__SWIG_0', - 'call_stack_t_begin__SWIG_1', - 'call_stack_t_capacity', - 'call_stack_t_clear', - 'call_stack_t_empty', - 'call_stack_t_end', - 'call_stack_t_end__SWIG_0', - 'call_stack_t_end__SWIG_1', - 'call_stack_t_erase', - 'call_stack_t_erase__SWIG_0', - 'call_stack_t_erase__SWIG_1', - 'call_stack_t_extract', - 'call_stack_t_find', - 'call_stack_t_find__SWIG_0', - 'call_stack_t_find__SWIG_1', - 'call_stack_t_grow', - 'call_stack_t_has', - 'call_stack_t_inject', - 'call_stack_t_insert', - 'call_stack_t_pop_back', - 'call_stack_t_push_back', - 'call_stack_t_push_back__SWIG_0', - 'call_stack_t_push_back__SWIG_1', - 'call_stack_t_qclear', - 'call_stack_t_reserve', - 'call_stack_t_resize', - 'call_stack_t_resize__SWIG_0', - 'call_stack_t_resize__SWIG_1', - 'call_stack_t_size', - 'call_stack_t_swap', - 'call_stack_t_truncate', + 'call_stack_info_vec_t___eq__', + 'call_stack_info_vec_t___getitem__', + 'call_stack_info_vec_t___len__', + 'call_stack_info_vec_t___ne__', + 'call_stack_info_vec_t___setitem__', + 'call_stack_info_vec_t__del', + 'call_stack_info_vec_t_add_unique', + 'call_stack_info_vec_t_at', + 'call_stack_info_vec_t_begin', + 'call_stack_info_vec_t_begin__SWIG_0', + 'call_stack_info_vec_t_begin__SWIG_1', + 'call_stack_info_vec_t_capacity', + 'call_stack_info_vec_t_clear', + 'call_stack_info_vec_t_empty', + 'call_stack_info_vec_t_end', + 'call_stack_info_vec_t_end__SWIG_0', + 'call_stack_info_vec_t_end__SWIG_1', + 'call_stack_info_vec_t_erase', + 'call_stack_info_vec_t_erase__SWIG_0', + 'call_stack_info_vec_t_erase__SWIG_1', + 'call_stack_info_vec_t_extract', + 'call_stack_info_vec_t_find', + 'call_stack_info_vec_t_find__SWIG_0', + 'call_stack_info_vec_t_find__SWIG_1', + 'call_stack_info_vec_t_grow', + 'call_stack_info_vec_t_has', + 'call_stack_info_vec_t_inject', + 'call_stack_info_vec_t_insert', + 'call_stack_info_vec_t_pop_back', + 'call_stack_info_vec_t_push_back', + 'call_stack_info_vec_t_push_back__SWIG_0', + 'call_stack_info_vec_t_push_back__SWIG_1', + 'call_stack_info_vec_t_qclear', + 'call_stack_info_vec_t_reserve', + 'call_stack_info_vec_t_resize', + 'call_stack_info_vec_t_resize__SWIG_0', + 'call_stack_info_vec_t_resize__SWIG_1', + 'call_stack_info_vec_t_size', + 'call_stack_info_vec_t_swap', + 'call_stack_info_vec_t_truncate', 'callregs_t_by_slots', 'callregs_t_fpregs_get', 'callregs_t_fpregs_set', @@ -1326,6 +1367,8 @@ 'can_exc_continue', 'cancel_exec_request', 'cancel_thread_exec_requests', + 'cancellable_graph_t_cancelled_get', + 'cancellable_graph_t_cancelled_set', 'carg_t___eq__', 'carg_t___ge__', 'carg_t___gt__', @@ -1829,6 +1872,43 @@ 'choose_til', 'choose_trace_file', 'choose_xref', + 'chooser_base_t_ask_item_attrs', + 'chooser_base_t_can_del', + 'chooser_base_t_can_edit', + 'chooser_base_t_can_filter', + 'chooser_base_t_can_ins', + 'chooser_base_t_can_refresh', + 'chooser_base_t_can_sort', + 'chooser_base_t_columns_get', + 'chooser_base_t_deflt_col_get', + 'chooser_base_t_get_builtin_number', + 'chooser_base_t_get_count', + 'chooser_base_t_get_ea', + 'chooser_base_t_get_quick_filter_initial_mode', + 'chooser_base_t_get_row', + 'chooser_base_t_has_diff_capability', + 'chooser_base_t_has_dirtree', + 'chooser_base_t_header_get', + 'chooser_base_t_height_get', + 'chooser_base_t_icon_get', + 'chooser_base_t_is_force_default', + 'chooser_base_t_is_modal', + 'chooser_base_t_is_multi', + 'chooser_base_t_is_noidb', + 'chooser_base_t_is_quick_filter_visible_initially', + 'chooser_base_t_is_same', + 'chooser_base_t_is_status_bar_hidden', + 'chooser_base_t_popup_allowed', + 'chooser_base_t_popup_names_get', + 'chooser_base_t_should_rename_trigger_edit', + 'chooser_base_t_should_restore_geometry', + 'chooser_base_t_title_get', + 'chooser_base_t_width_get', + 'chooser_base_t_widths_get', + 'chooser_base_t_x0_get', + 'chooser_base_t_x1_get', + 'chooser_base_t_y0_get', + 'chooser_base_t_y1_get', 'chooser_item_attrs_t_color_get', 'chooser_item_attrs_t_color_set', 'chooser_item_attrs_t_flags_get', @@ -2044,6 +2124,7 @@ 'codegen_t_ii_set', 'codegen_t_insn_get', 'codegen_t_insn_set', + 'codegen_t_load_effective_address', 'codegen_t_load_operand', 'codegen_t_mb_get', 'codegen_t_mb_set', @@ -2051,12 +2132,65 @@ 'codegen_t_mba_set', 'codegen_t_microgen_completed', 'codegen_t_prepare_gen_micro', + 'codegen_t_store_operand', 'collect_stack_trace', 'compact_til', 'compare_tinfo', 'compile_idc_file', 'compile_idc_snippet', 'compile_idc_text', + 'compiled_binpat_t___eq__', + 'compiled_binpat_t___ne__', + 'compiled_binpat_t_all_bytes_defined', + 'compiled_binpat_t_bytes_get', + 'compiled_binpat_t_bytes_set', + 'compiled_binpat_t_encidx_get', + 'compiled_binpat_t_encidx_set', + 'compiled_binpat_t_mask_get', + 'compiled_binpat_t_mask_set', + 'compiled_binpat_t_qclear', + 'compiled_binpat_t_strlits_get', + 'compiled_binpat_t_strlits_set', + 'compiled_binpat_vec_t___eq__', + 'compiled_binpat_vec_t___getitem__', + 'compiled_binpat_vec_t___len__', + 'compiled_binpat_vec_t___ne__', + 'compiled_binpat_vec_t___setitem__', + 'compiled_binpat_vec_t__del', + 'compiled_binpat_vec_t_add_unique', + 'compiled_binpat_vec_t_at', + 'compiled_binpat_vec_t_begin', + 'compiled_binpat_vec_t_begin__SWIG_0', + 'compiled_binpat_vec_t_begin__SWIG_1', + 'compiled_binpat_vec_t_capacity', + 'compiled_binpat_vec_t_clear', + 'compiled_binpat_vec_t_empty', + 'compiled_binpat_vec_t_end', + 'compiled_binpat_vec_t_end__SWIG_0', + 'compiled_binpat_vec_t_end__SWIG_1', + 'compiled_binpat_vec_t_erase', + 'compiled_binpat_vec_t_erase__SWIG_0', + 'compiled_binpat_vec_t_erase__SWIG_1', + 'compiled_binpat_vec_t_extract', + 'compiled_binpat_vec_t_find', + 'compiled_binpat_vec_t_find__SWIG_0', + 'compiled_binpat_vec_t_find__SWIG_1', + 'compiled_binpat_vec_t_grow', + 'compiled_binpat_vec_t_has', + 'compiled_binpat_vec_t_inject', + 'compiled_binpat_vec_t_insert', + 'compiled_binpat_vec_t_pop_back', + 'compiled_binpat_vec_t_push_back', + 'compiled_binpat_vec_t_push_back__SWIG_0', + 'compiled_binpat_vec_t_push_back__SWIG_1', + 'compiled_binpat_vec_t_qclear', + 'compiled_binpat_vec_t_reserve', + 'compiled_binpat_vec_t_resize', + 'compiled_binpat_vec_t_resize__SWIG_0', + 'compiled_binpat_vec_t_resize__SWIG_1', + 'compiled_binpat_vec_t_size', + 'compiled_binpat_vec_t_swap', + 'compiled_binpat_vec_t_truncate', 'compiler_info_t_cm_get', 'compiler_info_t_cm_set', 'compiler_info_t_defalign_get', @@ -2093,6 +2227,7 @@ 'create_align', 'create_byte', 'create_bytearray_linput', + 'create_cfunc', 'create_code_viewer', 'create_custdata', 'create_data', @@ -2424,6 +2559,7 @@ 'del_tinfo_attr', 'del_tryblks', 'del_value', + 'del_vftable_ea', 'del_virt_module', 'delay_slot_insn', 'delete_DBG_Hooks', @@ -2437,6 +2573,9 @@ 'delete___qsemaphore_t', 'delete___qthread_t', 'delete___qtimer_t', + 'delete_abstract_graph_t', + 'delete_action_ctx_base_cur_sel_t', + 'delete_action_ctx_base_source_t', 'delete_action_ctx_base_t', 'delete_action_desc_t', 'delete_addon_info_t', @@ -2467,8 +2606,10 @@ 'delete_bpt_vec_t', 'delete_bptaddr_t', 'delete_call_stack_info_t', + 'delete_call_stack_info_vec_t', 'delete_call_stack_t', 'delete_callregs_t', + 'delete_cancellable_graph_t', 'delete_carg_t', 'delete_carglist_t', 'delete_cases_and_targets_t', @@ -2503,6 +2644,8 @@ 'delete_cloop_t', 'delete_cnumber_t', 'delete_codegen_t', + 'delete_compiled_binpat_t', + 'delete_compiled_binpat_vec_t', 'delete_compiler_info_t', 'delete_const_aloc_visitor_t', 'delete_creturn_t', @@ -2520,6 +2663,14 @@ 'delete_data_type_t', 'delete_debapp_attrs_t', 'delete_debug_event_t', + 'delete_direntry_t', + 'delete_direntry_vec_t', + 'delete_dirspec_t', + 'delete_dirtree_cursor_t', + 'delete_dirtree_cursor_vec_t', + 'delete_dirtree_iterator_t', + 'delete_dirtree_selection_t', + 'delete_dirtree_t', 'delete_disasm_line_t', 'delete_disasm_text_t', 'delete_dyn_ea_array', @@ -2552,8 +2703,9 @@ 'delete_file_enumerator_t', 'delete_fixup_data_t', 'delete_fixup_info_t', - 'delete_fnum_array', 'delete_fnumber_t', + 'delete_fpvalue_shorts_array_t', + 'delete_fpvalue_t', 'delete_func_item_iterator_t', 'delete_func_parent_iterator_t', 'delete_func_t', @@ -2562,6 +2714,7 @@ 'delete_funcarg_t', 'delete_funcargvec_t', 'delete_gco_info_t', + 'delete_gdl_graph_t', 'delete_generic_linput_t', 'delete_graph_chains_t', 'delete_graph_item_t', @@ -2597,6 +2750,7 @@ 'delete_ivlset_t', 'delete_line_rendering_output_entries_refs_t', 'delete_line_rendering_output_entry_t', + 'delete_linearray_t', 'delete_lines_rendering_input_t', 'delete_lines_rendering_output_t', 'delete_loader_input_t', @@ -2655,7 +2809,6 @@ 'delete_op_t', 'delete_operand_locator_t', 'delete_operands_array', - 'delete_operator_info_t', 'delete_opinfo_t', 'delete_optblock_t', 'delete_optinsn_t', @@ -2818,6 +2971,7 @@ 'delete_xrefblk_t', 'delete_xreflist_entry_t', 'delete_xreflist_t', + 'delinf', 'demangle_name', 'deref_idcv', 'deref_ptr', @@ -2828,6 +2982,158 @@ 'detach_custom_data_format', 'detach_process', 'diff_trace_file', + 'direntry_t___eq__', + 'direntry_t___lt__', + 'direntry_t___ne__', + 'direntry_t_idx_get', + 'direntry_t_idx_set', + 'direntry_t_isdir_get', + 'direntry_t_isdir_set', + 'direntry_t_valid', + 'direntry_vec_t___eq__', + 'direntry_vec_t___getitem__', + 'direntry_vec_t___len__', + 'direntry_vec_t___ne__', + 'direntry_vec_t___setitem__', + 'direntry_vec_t__del', + 'direntry_vec_t_add_unique', + 'direntry_vec_t_at', + 'direntry_vec_t_begin', + 'direntry_vec_t_begin__SWIG_0', + 'direntry_vec_t_begin__SWIG_1', + 'direntry_vec_t_capacity', + 'direntry_vec_t_clear', + 'direntry_vec_t_empty', + 'direntry_vec_t_end', + 'direntry_vec_t_end__SWIG_0', + 'direntry_vec_t_end__SWIG_1', + 'direntry_vec_t_erase', + 'direntry_vec_t_erase__SWIG_0', + 'direntry_vec_t_erase__SWIG_1', + 'direntry_vec_t_extract', + 'direntry_vec_t_find', + 'direntry_vec_t_find__SWIG_0', + 'direntry_vec_t_find__SWIG_1', + 'direntry_vec_t_grow', + 'direntry_vec_t_has', + 'direntry_vec_t_inject', + 'direntry_vec_t_insert', + 'direntry_vec_t_pop_back', + 'direntry_vec_t_push_back', + 'direntry_vec_t_push_back__SWIG_0', + 'direntry_vec_t_push_back__SWIG_1', + 'direntry_vec_t_qclear', + 'direntry_vec_t_reserve', + 'direntry_vec_t_resize', + 'direntry_vec_t_resize__SWIG_0', + 'direntry_vec_t_resize__SWIG_1', + 'direntry_vec_t_size', + 'direntry_vec_t_swap', + 'direntry_vec_t_truncate', + 'dirspec_t_flags_get', + 'dirspec_t_flags_set', + 'dirspec_t_get_attrs', + 'dirspec_t_get_inode', + 'dirspec_t_get_name', + 'dirspec_t_nodename_get', + 'dirspec_t_nodename_set', + 'dirspec_t_rename_inode', + 'dirspec_t_unlink_inode', + 'dirtree_cursor_t___eq__', + 'dirtree_cursor_t___ge__', + 'dirtree_cursor_t___gt__', + 'dirtree_cursor_t___le__', + 'dirtree_cursor_t___lt__', + 'dirtree_cursor_t___ne__', + 'dirtree_cursor_t_compare', + 'dirtree_cursor_t_is_root_cursor', + 'dirtree_cursor_t_parent_get', + 'dirtree_cursor_t_parent_set', + 'dirtree_cursor_t_rank_get', + 'dirtree_cursor_t_rank_set', + 'dirtree_cursor_t_root_cursor', + 'dirtree_cursor_t_set_root_cursor', + 'dirtree_cursor_t_valid', + 'dirtree_cursor_vec_t___eq__', + 'dirtree_cursor_vec_t___getitem__', + 'dirtree_cursor_vec_t___len__', + 'dirtree_cursor_vec_t___ne__', + 'dirtree_cursor_vec_t___setitem__', + 'dirtree_cursor_vec_t__del', + 'dirtree_cursor_vec_t_add_unique', + 'dirtree_cursor_vec_t_at', + 'dirtree_cursor_vec_t_begin', + 'dirtree_cursor_vec_t_begin__SWIG_0', + 'dirtree_cursor_vec_t_begin__SWIG_1', + 'dirtree_cursor_vec_t_capacity', + 'dirtree_cursor_vec_t_clear', + 'dirtree_cursor_vec_t_empty', + 'dirtree_cursor_vec_t_end', + 'dirtree_cursor_vec_t_end__SWIG_0', + 'dirtree_cursor_vec_t_end__SWIG_1', + 'dirtree_cursor_vec_t_erase', + 'dirtree_cursor_vec_t_erase__SWIG_0', + 'dirtree_cursor_vec_t_erase__SWIG_1', + 'dirtree_cursor_vec_t_extract', + 'dirtree_cursor_vec_t_find', + 'dirtree_cursor_vec_t_find__SWIG_0', + 'dirtree_cursor_vec_t_find__SWIG_1', + 'dirtree_cursor_vec_t_grow', + 'dirtree_cursor_vec_t_has', + 'dirtree_cursor_vec_t_inject', + 'dirtree_cursor_vec_t_insert', + 'dirtree_cursor_vec_t_pop_back', + 'dirtree_cursor_vec_t_push_back', + 'dirtree_cursor_vec_t_push_back__SWIG_0', + 'dirtree_cursor_vec_t_push_back__SWIG_1', + 'dirtree_cursor_vec_t_qclear', + 'dirtree_cursor_vec_t_reserve', + 'dirtree_cursor_vec_t_resize', + 'dirtree_cursor_vec_t_resize__SWIG_0', + 'dirtree_cursor_vec_t_resize__SWIG_1', + 'dirtree_cursor_vec_t_size', + 'dirtree_cursor_vec_t_swap', + 'dirtree_cursor_vec_t_truncate', + 'dirtree_iterator_t_cursor_get', + 'dirtree_iterator_t_cursor_set', + 'dirtree_iterator_t_pattern_get', + 'dirtree_iterator_t_pattern_set', + 'dirtree_t_change_rank', + 'dirtree_t_chdir', + 'dirtree_t_errstr', + 'dirtree_t_findfirst', + 'dirtree_t_findnext', + 'dirtree_t_get_abspath', + 'dirtree_t_get_abspath__SWIG_0', + 'dirtree_t_get_abspath__SWIG_1', + 'dirtree_t_get_dir_size', + 'dirtree_t_get_entry_attrs', + 'dirtree_t_get_entry_name', + 'dirtree_t_get_nodename', + 'dirtree_t_get_parent_cursor', + 'dirtree_t_get_rank', + 'dirtree_t_getcwd', + 'dirtree_t_isdir', + 'dirtree_t_isdir__SWIG_0', + 'dirtree_t_isdir__SWIG_1', + 'dirtree_t_isfile', + 'dirtree_t_isfile__SWIG_0', + 'dirtree_t_isfile__SWIG_1', + 'dirtree_t_link', + 'dirtree_t_link__SWIG_0', + 'dirtree_t_link__SWIG_1', + 'dirtree_t_load', + 'dirtree_t_mkdir', + 'dirtree_t_notify_dirtree', + 'dirtree_t_rename', + 'dirtree_t_resolve_cursor', + 'dirtree_t_resolve_path', + 'dirtree_t_rmdir', + 'dirtree_t_save', + 'dirtree_t_set_nodename', + 'dirtree_t_unlink', + 'dirtree_t_unlink__SWIG_0', + 'dirtree_t_unlink__SWIG_1', 'disable_bblk_trace', 'disable_bpt', 'disable_bpt__SWIG_0', @@ -2885,16 +3191,20 @@ 'disown_IDP_Hooks', 'disown_UI_Hooks', 'disown_View_Hooks', + 'disown_abstract_graph_t', 'disown_aloc_visitor_t', 'disown_argtinfo_helper_t', + 'disown_cancellable_graph_t', 'disown_cfunc_parentee_t', 'disown_chain_visitor_t', 'disown_choose_ioport_parser_t', 'disown_const_aloc_visitor_t', 'disown_ctree_parentee_t', 'disown_ctree_visitor_t', + 'disown_dirspec_t', 'disown_enum_member_visitor_t', 'disown_file_enumerator_t', + 'disown_gdl_graph_t', 'disown_graph_node_visitor_t', 'disown_graph_path_visitor_t', 'disown_graph_visitor_t', @@ -2905,7 +3215,6 @@ 'disown_minsn_visitor_t', 'disown_mlist_mop_visitor_t', 'disown_mop_visitor_t', - 'disown_mutable_graph_t', 'disown_optblock_t', 'disown_optinsn_t', 'disown_predicate_t', @@ -3024,6 +3333,7 @@ 'eamap_size', 'eamap_t_at', 'eamap_t_size', + 'ecleaz', 'eclose', 'edge_info_t_color_get', 'edge_info_t_color_set', @@ -3329,15 +3639,8 @@ 'float_flag', 'flt_flag', 'flush_buffers', - 'fnum_array___getitem__', - 'fnum_array___len__', - 'fnum_array___setitem__', - 'fnum_array__get_bytes', - 'fnum_array__set_bytes', - 'fnum_array_data_get', 'fnumber_t___eq__', 'fnumber_t___ge__', - 'fnumber_t___get_fnum', 'fnumber_t___gt__', 'fnumber_t___le__', 'fnumber_t___lt__', @@ -3371,6 +3674,56 @@ 'formchgcbfa_set_field_value', 'formchgcbfa_set_focused_field', 'formchgcbfa_show_field', + 'fpvalue_shorts_array_t___getitem__', + 'fpvalue_shorts_array_t___len__', + 'fpvalue_shorts_array_t___setitem__', + 'fpvalue_shorts_array_t__get_bytes', + 'fpvalue_shorts_array_t__set_bytes', + 'fpvalue_shorts_array_t_data_get', + 'fpvalue_t___add__', + 'fpvalue_t___eq__', + 'fpvalue_t___ge__', + 'fpvalue_t___gt__', + 'fpvalue_t___le__', + 'fpvalue_t___lt__', + 'fpvalue_t___mul__', + 'fpvalue_t___ne__', + 'fpvalue_t___str__', + 'fpvalue_t___sub__', + 'fpvalue_t___truediv__', + 'fpvalue_t__get_10bytes', + 'fpvalue_t__get_bytes', + 'fpvalue_t__get_float', + 'fpvalue_t__get_shorts', + 'fpvalue_t__set_10bytes', + 'fpvalue_t__set_bytes', + 'fpvalue_t__set_float', + 'fpvalue_t_assign', + 'fpvalue_t_clear', + 'fpvalue_t_compare', + 'fpvalue_t_eabs', + 'fpvalue_t_fadd', + 'fpvalue_t_fdiv', + 'fpvalue_t_fmul', + 'fpvalue_t_from_10bytes', + 'fpvalue_t_from_12bytes', + 'fpvalue_t_from_int64', + 'fpvalue_t_from_str', + 'fpvalue_t_from_sval', + 'fpvalue_t_from_uint64', + 'fpvalue_t_fsub', + 'fpvalue_t_get_kind', + 'fpvalue_t_is_negative', + 'fpvalue_t_mul_pow2', + 'fpvalue_t_negate', + 'fpvalue_t_to_10bytes', + 'fpvalue_t_to_12bytes', + 'fpvalue_t_to_int64', + 'fpvalue_t_to_str', + 'fpvalue_t_to_sval', + 'fpvalue_t_to_uint64', + 'fpvalue_t_w_get', + 'fpvalue_t_w_set', 'frame_off_args', 'frame_off_lvars', 'frame_off_retaddr', @@ -3378,6 +3731,8 @@ 'free_chunk', 'free_custom_icon', 'free_idcv', + 'free_regarg', + 'free_regvar', 'free_til', 'func_contains', 'func_does_return', @@ -3478,6 +3833,7 @@ 'func_type_data_t_flags_set', 'func_type_data_t_get_call_method', 'func_type_data_t_guess_cc', + 'func_type_data_t_is_golang_cc', 'func_type_data_t_is_high', 'func_type_data_t_is_noret', 'func_type_data_t_is_pure', @@ -3545,6 +3901,7 @@ 'funcargvec_t_truncate', 'gcc_layout', 'gco_info_t_append_to_list', + 'gco_info_t_cvt_to_ivl', 'gco_info_t_flags_get', 'gco_info_t_flags_set', 'gco_info_t_is_def', @@ -3554,6 +3911,28 @@ 'gco_info_t_name_set', 'gco_info_t_size_get', 'gco_info_t_size_set', + 'gdl_graph_t_begin', + 'gdl_graph_t_edge', + 'gdl_graph_t_empty', + 'gdl_graph_t_end', + 'gdl_graph_t_entry', + 'gdl_graph_t_exists', + 'gdl_graph_t_exit', + 'gdl_graph_t_front', + 'gdl_graph_t_get_edge_color', + 'gdl_graph_t_get_node_color', + 'gdl_graph_t_get_node_label', + 'gdl_graph_t_nedge', + 'gdl_graph_t_node_qty', + 'gdl_graph_t_npred', + 'gdl_graph_t_nsucc', + 'gdl_graph_t_pred', + 'gdl_graph_t_print_edge', + 'gdl_graph_t_print_graph_attributes', + 'gdl_graph_t_print_node', + 'gdl_graph_t_print_node_attributes', + 'gdl_graph_t_size', + 'gdl_graph_t_succ', 'gen_complex_call_chart', 'gen_decorate_name', 'gen_disasm_text', @@ -3653,6 +4032,8 @@ 'get_data_elsize', 'get_data_value', 'get_db_byte', + 'get_dbctx_id', + 'get_dbctx_qty', 'get_dbg_byte', 'get_dbg_memory_info', 'get_dbg_reg_info', @@ -3675,6 +4056,7 @@ 'get_ea_name', 'get_ea_viewer_history_info', 'get_effective_spd', + 'get_elapsed_secs', 'get_elf_debug_file_directory', 'get_encoding_bpu', 'get_encoding_name', @@ -3777,6 +4159,7 @@ 'get_hidden_range_num', 'get_hidden_range_qty', 'get_highlight', + 'get_ida_notepad_text', 'get_ida_subdirs', 'get_idainfo_by_type', 'get_idasgn_desc', @@ -3784,6 +4167,8 @@ 'get_idasgn_qty', 'get_idasgn_title', 'get_idati', + 'get_idb_ctime', + 'get_idb_nopens', 'get_idb_notifier_addr', 'get_idb_notifier_ud_addr', 'get_idc_filename', @@ -3800,6 +4185,10 @@ 'get_import_module_qty', 'get_ind_purged', 'get_inf_structure', + 'get_initial_ida_version', + 'get_initial_ida_version__SWIG_0', + 'get_initial_ida_version__SWIG_1', + 'get_innermost_member', 'get_input_file_path', 'get_insn_tev_reg_mem', 'get_insn_tev_reg_result', @@ -3821,6 +4210,7 @@ 'get_last_serial_enum_member', 'get_last_struc_idx', 'get_linput_type', + 'get_loader_format_name', 'get_local_var', 'get_local_vars', 'get_long_name', @@ -3976,11 +4366,14 @@ 'get_spd', 'get_special_folder', 'get_sptr', + 'get_srcdbg_paths', + 'get_srcdbg_undesired_paths', 'get_srcinfo_provider', 'get_sreg', 'get_sreg_range', 'get_sreg_range_num', 'get_sreg_ranges_qty', + 'get_std_dirtree', 'get_step_trace_options', 'get_stkvar', 'get_stock_tinfo', @@ -3990,6 +4383,7 @@ 'get_str_type', 'get_str_type_code', 'get_str_type_prefix_length', + 'get_strid', 'get_strlist_item', 'get_strlist_options', 'get_strlist_qty', @@ -4042,6 +4436,8 @@ 'get_unsigned_mcode', 'get_user_idadir', 'get_user_strlist_options', + 'get_vftable_ea', + 'get_vftable_ordinal', 'get_view_renderer_type', 'get_viewer_graph', 'get_viewer_place_type', @@ -4059,6 +4455,7 @@ 'get_zero_ranges', 'getb_reginsn', 'getf_reginsn', + 'getinf_str', 'getn_bpt', 'getn_enum', 'getn_fchunk', @@ -4118,10 +4515,14 @@ 'group_crinfo_t_text_get', 'group_crinfo_t_text_set', 'guess_func_cc', - 'guess_table_address', - 'guess_table_size', 'guess_tinfo', 'handle_debug_event', + 'handle_fixups_in_macro', + 'has_aflag_linnum', + 'has_aflag_lname', + 'has_aflag_ti', + 'has_aflag_ti0', + 'has_aflag_ti1', 'has_any_name', 'has_auto_name', 'has_cached_cfunc', @@ -4371,7 +4772,6 @@ 'idc_parse_types', 'idc_print_type', 'idc_set_local_type', - 'idc_value_t___get_e', 'idc_value_t__create_empty_string', 'idc_value_t_c_str', 'idc_value_t_clear', @@ -4499,6 +4899,7 @@ 'inf_get_af2_low', 'inf_get_af_high', 'inf_get_af_low', + 'inf_get_app_bitness', 'inf_get_appcall_options', 'inf_get_apptype', 'inf_get_asmtype', @@ -4576,7 +4977,9 @@ 'inf_hide_libfuncs', 'inf_huge_arg_align', 'inf_inc_database_change_count', - 'inf_is_32bit', + 'inf_is_16bit', + 'inf_is_32bit_exactly', + 'inf_is_32bit_or_higher', 'inf_is_64bit', 'inf_is_auto_enabled', 'inf_is_be', @@ -4953,6 +5356,35 @@ 'is__invsign1', 'is_action_enabled', 'is_additive', + 'is_aflag__bnot0', + 'is_aflag__bnot1', + 'is_aflag__invsign0', + 'is_aflag__invsign1', + 'is_aflag_align_flow', + 'is_aflag_colored_item', + 'is_aflag_data_guessed_by_hexrays', + 'is_aflag_fixed_spd', + 'is_aflag_func_guessed_by_hexrays', + 'is_aflag_hidden_border', + 'is_aflag_hidden_item', + 'is_aflag_libitem', + 'is_aflag_lzero0', + 'is_aflag_lzero1', + 'is_aflag_manual_insn', + 'is_aflag_noret', + 'is_aflag_notcode', + 'is_aflag_notproc', + 'is_aflag_public_name', + 'is_aflag_retfp', + 'is_aflag_terse_struc', + 'is_aflag_tilcmt', + 'is_aflag_type_determined_by_hexrays', + 'is_aflag_type_guessed_by_hexrays', + 'is_aflag_type_guessed_by_ida', + 'is_aflag_usersp', + 'is_aflag_userti', + 'is_aflag_weak_name', + 'is_aflag_zstroff', 'is_align', 'is_align_flow', 'is_align_insn', @@ -4989,6 +5421,7 @@ 'is_custom', 'is_data', 'is_data_far', + 'is_data_guessed_by_hexrays', 'is_database_flag', 'is_debugger_busy', 'is_debugger_memory', @@ -5019,6 +5452,7 @@ 'is_forced_operand', 'is_func', 'is_func_entry', + 'is_func_guessed_by_hexrays', 'is_func_locked', 'is_func_tail', 'is_func_trace_enabled', @@ -5027,10 +5461,12 @@ 'is_gcc32', 'is_gcc64', 'is_ghost_enum', + 'is_golang_cc', 'is_head', 'is_hidden_border', 'is_hidden_item', 'is_idaq', + 'is_idaview', 'is_ident', 'is_ident_cp', 'is_in_nlist', @@ -5147,6 +5583,7 @@ 'is_type_complex', 'is_type_const', 'is_type_correct', + 'is_type_determined_by_hexrays', 'is_type_double', 'is_type_enum', 'is_type_ext_arithmetic', @@ -5154,6 +5591,8 @@ 'is_type_float', 'is_type_floating', 'is_type_func', + 'is_type_guessed_by_hexrays', + 'is_type_guessed_by_ida', 'is_type_int', 'is_type_int128', 'is_type_int16', @@ -5259,6 +5698,7 @@ 'jumpto', 'jumpto__SWIG_0', 'jumpto__SWIG_1', + 'l_compare2', 'last_idcv_attr', 'leading_zero_important', 'lexcompare', @@ -5318,6 +5758,18 @@ 'line_rendering_output_entry_t_line_set', 'line_rendering_output_entry_t_nchars_get', 'line_rendering_output_entry_t_nchars_set', + 'linearray_t_beginning', + 'linearray_t_down', + 'linearray_t_ending', + 'linearray_t_get_bg_color', + 'linearray_t_get_dlnnum', + 'linearray_t_get_linecnt', + 'linearray_t_get_pfx_color', + 'linearray_t_get_place', + 'linearray_t_set_place', + 'linearray_t_set_userdata', + 'linearray_t_up', + 'linearray_t_userdata', 'lines_rendering_input_t_cb_get', 'lines_rendering_input_t_cb_set', 'lines_rendering_input_t_sections_lines_get', @@ -5369,6 +5821,7 @@ 'loader_t_flags_set', 'loader_t_version_get', 'loader_t_version_set', + 'locate_lvar', 'lochist_entry_t_acquire_place', 'lochist_entry_t_is_valid', 'lochist_entry_t_place', @@ -5508,6 +5961,7 @@ 'lvar_saved_info_t_clr_forced_lvar', 'lvar_saved_info_t_clr_nomap_lvar', 'lvar_saved_info_t_clr_noptr_lvar', + 'lvar_saved_info_t_clr_unused_lvar', 'lvar_saved_info_t_cmt_get', 'lvar_saved_info_t_cmt_set', 'lvar_saved_info_t_flags_get', @@ -5517,6 +5971,7 @@ 'lvar_saved_info_t_is_kept', 'lvar_saved_info_t_is_nomap_lvar', 'lvar_saved_info_t_is_noptr_lvar', + 'lvar_saved_info_t_is_unused_lvar', 'lvar_saved_info_t_ll_get', 'lvar_saved_info_t_ll_set', 'lvar_saved_info_t_name_get', @@ -5525,6 +5980,7 @@ 'lvar_saved_info_t_set_keep', 'lvar_saved_info_t_set_nomap_lvar', 'lvar_saved_info_t_set_noptr_lvar', + 'lvar_saved_info_t_set_unused_lvar', 'lvar_saved_info_t_size_get', 'lvar_saved_info_t_size_set', 'lvar_saved_info_t_type_get', @@ -5574,6 +6030,7 @@ 'lvar_t_clear_used', 'lvar_t_clr_arg_var', 'lvar_t_clr_automapped', + 'lvar_t_clr_decl_unused', 'lvar_t_clr_dummy_arg', 'lvar_t_clr_fake_var', 'lvar_t_clr_floating_var', @@ -5603,9 +6060,11 @@ 'lvar_t_has_user_info', 'lvar_t_has_user_name', 'lvar_t_has_user_type', + 'lvar_t_in_asm', 'lvar_t_is_aliasable', 'lvar_t_is_arg_var', 'lvar_t_is_automapped', + 'lvar_t_is_decl_unused', 'lvar_t_is_dummy_arg', 'lvar_t_is_fake_var', 'lvar_t_is_floating_var', @@ -5624,6 +6083,7 @@ 'lvar_t_name_set', 'lvar_t_set_arg_var', 'lvar_t_set_automapped', + 'lvar_t_set_decl_unused', 'lvar_t_set_dummy_arg', 'lvar_t_set_fake_var', 'lvar_t_set_final_lvar_type', @@ -5655,6 +6115,7 @@ 'lvar_t_width_get', 'lvar_t_width_set', 'lvar_uservec_t_clear', + 'lvar_uservec_t_empty', 'lvar_uservec_t_find_info', 'lvar_uservec_t_keep_info', 'lvar_uservec_t_lmaps_get', @@ -5749,7 +6210,10 @@ 'mba_t_consumed_argregs_get', 'mba_t_consumed_argregs_set', 'mba_t_copy_block', + 'mba_t_create_helper_call', 'mba_t_deleted_pairs', + 'mba_t_deprecated_idb_node_get', + 'mba_t_deprecated_idb_node_set', 'mba_t_deserialize', 'mba_t_display_numaddrs', 'mba_t_display_valnums', @@ -5801,9 +6265,8 @@ 'mba_t_has_bad_sp', 'mba_t_has_over_chains', 'mba_t_has_passregs', + 'mba_t_has_stack_retval', 'mba_t_idaloc2vd', - 'mba_t_idb_node_get', - 'mba_t_idb_node_set', 'mba_t_idb_spoiled_get', 'mba_t_idb_spoiled_set', 'mba_t_idb_type_get', @@ -5861,7 +6324,7 @@ 'mba_t_really_alloc', 'mba_t_regargs_is_not_aligned', 'mba_t_remove_block', - 'mba_t_remove_empty_blocks', + 'mba_t_remove_empty_and_unreachable_blocks', 'mba_t_reqmat_get', 'mba_t_reqmat_set', 'mba_t_restricted_memory_get', @@ -5875,6 +6338,7 @@ 'mba_t_save_snapshot', 'mba_t_saverest_done', 'mba_t_serialize', + 'mba_t_set_maturity', 'mba_t_set_mba_flags', 'mba_t_set_mba_flags2', 'mba_t_shadow_args_get', @@ -6010,6 +6474,8 @@ 'mcallarg_t_dstr', 'mcallarg_t_ea_get', 'mcallarg_t_ea_set', + 'mcallarg_t_flags_get', + 'mcallarg_t_flags_set', 'mcallarg_t_make_int', 'mcallarg_t_make_uint', 'mcallarg_t_name_get', @@ -6503,6 +6969,7 @@ 'mop_t_is_mob', 'mop_t_is_negative_constant', 'mop_t_is_one', + 'mop_t_is_pcval', 'mop_t_is_positive_constant', 'mop_t_is_reg', 'mop_t_is_reg__SWIG_0', @@ -6530,6 +6997,7 @@ 'mop_t_make_reg__SWIG_1', 'mop_t_make_reg_pair', 'mop_t_make_second_half', + 'mop_t_make_stkvar', 'mop_t_may_use_aliased_memory', 'mop_t_oprops_get', 'mop_t_oprops_set', @@ -6547,6 +7015,7 @@ 'mop_t_t_get', 'mop_t_t_set', 'mop_t_unsigned_value', + 'mop_t_update_numop_value', 'mop_t_valnum_get', 'mop_t_valnum_set', 'mop_t_value', @@ -6604,21 +7073,23 @@ 'msg_get_lines', 'msg_save', 'must_mcode_close_block', + 'mutable_graph_t_add_edge', + 'mutable_graph_t_add_node', 'mutable_graph_t_belongs_get', 'mutable_graph_t_belongs_set', 'mutable_graph_t_calc_group_ea', 'mutable_graph_t_change_group_visibility', - 'mutable_graph_t_clear', 'mutable_graph_t_create_digraph_layout', 'mutable_graph_t_create_group', 'mutable_graph_t_del_custom_layout', + 'mutable_graph_t_del_edge', + 'mutable_graph_t_del_node', 'mutable_graph_t_delete_group', 'mutable_graph_t_edges_get', 'mutable_graph_t_edges_set', 'mutable_graph_t_empty', 'mutable_graph_t_exists', 'mutable_graph_t_get_custom_layout', - 'mutable_graph_t_get_edge', 'mutable_graph_t_get_first_subgraph_node', 'mutable_graph_t_get_graph_groups', 'mutable_graph_t_get_next_subgraph_node', @@ -6642,9 +7113,6 @@ 'mutable_graph_t_nodes_get', 'mutable_graph_t_nodes_set', 'mutable_graph_t_npred', - 'mutable_graph_t_nrect', - 'mutable_graph_t_nrect__SWIG_0', - 'mutable_graph_t_nrect__SWIG_1', 'mutable_graph_t_nsucc', 'mutable_graph_t_org_preds_get', 'mutable_graph_t_org_preds_set', @@ -6654,12 +7122,17 @@ 'mutable_graph_t_preds_get', 'mutable_graph_t_preds_set', 'mutable_graph_t_predset', + 'mutable_graph_t_redo_layout', + 'mutable_graph_t_refresh', + 'mutable_graph_t_replace_edge', 'mutable_graph_t_reset', + 'mutable_graph_t_resize', 'mutable_graph_t_set_custom_layout', 'mutable_graph_t_set_deleted_node', 'mutable_graph_t_set_edge', 'mutable_graph_t_set_graph_groups', 'mutable_graph_t_set_node_group', + 'mutable_graph_t_set_nrect', 'mutable_graph_t_size', 'mutable_graph_t_succ', 'mutable_graph_t_succs_get', @@ -6731,6 +7204,7 @@ 'netnode_easet_idx', 'netnode_easet_idx8', 'netnode_end', + 'netnode_exist', 'netnode_get_name', 'netnode_getblob', 'netnode_getblob_ea', @@ -6810,6 +7284,9 @@ 'new___qsemaphore_t', 'new___qthread_t', 'new___qtimer_t', + 'new_abstract_graph_t', + 'new_action_ctx_base_cur_sel_t', + 'new_action_ctx_base_source_t', 'new_action_ctx_base_t', 'new_action_desc_t', 'new_addon_info_t', @@ -6860,12 +7337,14 @@ 'new_bpt_vec_t__SWIG_1', 'new_bptaddr_t', 'new_call_stack_info_t', + 'new_call_stack_info_vec_t', + 'new_call_stack_info_vec_t__SWIG_0', + 'new_call_stack_info_vec_t__SWIG_1', 'new_call_stack_t', - 'new_call_stack_t__SWIG_0', - 'new_call_stack_t__SWIG_1', 'new_callregs_t', 'new_callregs_t__SWIG_0', 'new_callregs_t__SWIG_1', + 'new_cancellable_graph_t', 'new_carg_t', 'new_carglist_t', 'new_carglist_t__SWIG_0', @@ -6933,6 +7412,10 @@ 'new_cloop_t__SWIG_1', 'new_cloop_t__SWIG_2', 'new_cnumber_t', + 'new_compiled_binpat_t', + 'new_compiled_binpat_vec_t', + 'new_compiled_binpat_vec_t__SWIG_0', + 'new_compiled_binpat_vec_t__SWIG_1', 'new_compiler_info_t', 'new_const_aloc_visitor_t', 'new_creturn_t', @@ -6954,6 +7437,18 @@ 'new_debug_event_t', 'new_debug_event_t__SWIG_0', 'new_debug_event_t__SWIG_1', + 'new_direntry_t', + 'new_direntry_vec_t', + 'new_direntry_vec_t__SWIG_0', + 'new_direntry_vec_t__SWIG_1', + 'new_dirspec_t', + 'new_dirtree_cursor_t', + 'new_dirtree_cursor_vec_t', + 'new_dirtree_cursor_vec_t__SWIG_0', + 'new_dirtree_cursor_vec_t__SWIG_1', + 'new_dirtree_iterator_t', + 'new_dirtree_selection_t', + 'new_dirtree_t', 'new_disasm_line_t', 'new_disasm_line_t__SWIG_0', 'new_disasm_line_t__SWIG_1', @@ -7005,8 +7500,11 @@ 'new_fixup_data_t__SWIG_0', 'new_fixup_data_t__SWIG_1', 'new_fixup_info_t', - 'new_fnum_array', 'new_fnumber_t', + 'new_fpvalue_shorts_array_t', + 'new_fpvalue_t', + 'new_fpvalue_t__SWIG_0', + 'new_fpvalue_t__SWIG_1', 'new_func_item_iterator_t', 'new_func_item_iterator_t__SWIG_0', 'new_func_item_iterator_t__SWIG_1', @@ -7023,6 +7521,7 @@ 'new_funcargvec_t__SWIG_0', 'new_funcargvec_t__SWIG_1', 'new_gco_info_t', + 'new_gdl_graph_t', 'new_graph_chains_t', 'new_graph_item_t', 'new_graph_location_info_t', @@ -7080,6 +7579,7 @@ 'new_line_rendering_output_entry_t', 'new_line_rendering_output_entry_t__SWIG_0', 'new_line_rendering_output_entry_t__SWIG_1', + 'new_linearray_t', 'new_lines_rendering_input_t', 'new_lines_rendering_output_t', 'new_loader_input_t', @@ -7169,7 +7669,6 @@ 'new_op_t', 'new_operand_locator_t', 'new_operands_array', - 'new_operator_info_t', 'new_opinfo_t', 'new_optblock_t', 'new_optinsn_t', @@ -7239,6 +7738,8 @@ 'new_reg_accesses_t', 'new_reg_info_t', 'new_regarg_t', + 'new_regarg_t__SWIG_0', + 'new_regarg_t__SWIG_1', 'new_reginfovec_t', 'new_reginfovec_t__SWIG_0', 'new_reginfovec_t__SWIG_1', @@ -7252,6 +7753,8 @@ 'new_regval_t__SWIG_0', 'new_regval_t__SWIG_1', 'new_regvar_t', + 'new_regvar_t__SWIG_0', + 'new_regvar_t__SWIG_1', 'new_renderer_info_pos_t', 'new_renderer_info_t', 'new_renderer_pos_info_t', @@ -7511,7 +8014,9 @@ 'node_layout_t_swap', 'node_layout_t_truncate', 'node_ordering_t_clear', + 'node_ordering_t_clr', 'node_ordering_t_node', + 'node_ordering_t_order', 'node_ordering_t_resize', 'node_ordering_t_set', 'node_ordering_t_size', @@ -7605,6 +8110,7 @@ 'op_uses_x', 'op_uses_y', 'op_uses_z', + 'open_bookmarks_window', 'open_bpts_window', 'open_calls_window', 'open_disasm_window', @@ -7651,16 +8157,6 @@ 'operands_array__get_bytes', 'operands_array__set_bytes', 'operands_array_data_get', - 'operator_info_t_fixtype_get', - 'operator_info_t_fixtype_set', - 'operator_info_t_flags_get', - 'operator_info_t_flags_set', - 'operator_info_t_precedence_get', - 'operator_info_t_precedence_set', - 'operator_info_t_text_get', - 'operator_info_t_text_set', - 'operator_info_t_valency_get', - 'operator_info_t_valency_set', 'opinfo_t_cd_get', 'opinfo_t_cd_set', 'opinfo_t_ec_get', @@ -7772,6 +8268,8 @@ 'outctx_t_procmod_set', 'outctx_t_retrieve_cmt', 'outctx_t_retrieve_name', + 'outctx_t_saved_immvals_get', + 'outctx_t_saved_immvals_set', 'outctx_t_set_bin_state', 'outctx_t_setup_outctx', 'outctx_t_wif_get', @@ -7782,6 +8280,7 @@ 'pack_object_to_bv', 'pack_object_to_idb', 'packreal_flag', + 'parse_binpat_str', 'parse_command_line3', 'parse_dbgopts', 'parse_decl', @@ -8020,6 +8519,7 @@ 'put_qword', 'put_word', 'py_add_idc_func', + 'py_chooser_base_t_get_row', 'py_get_ask_form', 'py_get_call_idc_func', 'py_get_open_form', @@ -8543,6 +9043,7 @@ 'refinfo_t_type', 'refresh_chooser', 'refresh_choosers', + 'refresh_custom_viewer', 'refresh_debugger_memory', 'refresh_idaview', 'refresh_idaview_anyway', @@ -8636,6 +9137,7 @@ 'regarg_t_name_set', 'regarg_t_reg_get', 'regarg_t_reg_set', + 'regarg_t_swap', 'regarg_t_type_get', 'regarg_t_type_set', 'reginfovec_t___eq__', @@ -8764,6 +9266,7 @@ 'regvar_t_canon_set', 'regvar_t_cmt_get', 'regvar_t_cmt_set', + 'regvar_t_swap', 'regvar_t_user_get', 'regvar_t_user_set', 'reload_file', @@ -8779,6 +9282,7 @@ 'rename_bptgrp', 'rename_encoding', 'rename_entry', + 'rename_lvar', 'rename_regvar', 'renderer_info_pos_t___eq__', 'renderer_info_pos_t___ne__', @@ -8790,7 +9294,6 @@ 'renderer_info_pos_t_node_set', 'renderer_info_t___eq__', 'renderer_info_t___ne__', - 'renderer_info_t_clear', 'renderer_info_t_gli_get', 'renderer_info_t_gli_set', 'renderer_info_t_pos_get', @@ -9110,6 +9613,9 @@ 'segment_t_end_ea_set', 'segment_t_flags_get', 'segment_t_flags_set', + 'segment_t_is_16bit', + 'segment_t_is_32bit', + 'segment_t_is_64bit', 'segment_t_is_header_segm', 'segment_t_is_hidden_segtype', 'segment_t_is_loader_segm', @@ -9137,8 +9643,6 @@ 'segment_t_type_get', 'segment_t_type_set', 'segment_t_update', - 'segment_t_use32', - 'segment_t_use64', 'segtype', 'seh_t_clear', 'seh_t_filter_get', @@ -9209,6 +9713,7 @@ 'set_cp_validity', 'set_custom_data_type_ids', 'set_custom_viewer_qt_aware', + 'set_data_guessed_by_hexrays', 'set_database_flag', 'set_debug_event_code', 'set_debug_name', @@ -9239,6 +9744,7 @@ 'set_frame_size', 'set_func_cmt', 'set_func_end', + 'set_func_guessed_by_hexrays', 'set_func_name_if_jumpfunc', 'set_func_start', 'set_func_trace_options', @@ -9251,6 +9757,7 @@ 'set_header_path', 'set_highlight', 'set_highlight_trace_options', + 'set_ida_notepad_text', 'set_ida_state', 'set_idcv_attr', 'set_idcv_slice', @@ -9260,6 +9767,7 @@ 'set_insn_trace_options', 'set_item_color', 'set_libitem', + 'set_loader_format_name', 'set_lzero', 'set_lzero0', 'set_lzero1', @@ -9308,6 +9816,8 @@ 'set_segment_translations', 'set_selector', 'set_source_linnum', + 'set_srcdbg_paths', + 'set_srcdbg_undesired_paths', 'set_sreg_at_next_code', 'set_step_trace_options', 'set_str_type', @@ -9334,10 +9844,13 @@ 'set_trace_size', 'set_type', 'set_type_alias', + 'set_type_determined_by_hexrays', + 'set_type_guessed_by_ida', 'set_usemodsp', 'set_user_defined_prefix', 'set_usersp', 'set_userti', + 'set_vftable_ea', 'set_view_renderer_type', 'set_viewer_graph', 'set_visible_func', @@ -9577,7 +10090,6 @@ 'strwinsetup_t_display_only_existing_strings_set', 'strwinsetup_t_ignore_heads_get', 'strwinsetup_t_ignore_heads_set', - 'strwinsetup_t_is_initialized', 'strwinsetup_t_minlen_get', 'strwinsetup_t_minlen_set', 'strwinsetup_t_only_7bit_get', @@ -9591,6 +10103,7 @@ 'swap_idcvs', 'swap_mcode_relation', 'swapped_relation', + 'switch_dbctx', 'switch_info_t__from_ptrval__', 'switch_info_t__get_values_lowcase', 'switch_info_t__set_values_lowcase', @@ -9622,6 +10135,7 @@ 'switch_info_t_is_nolowcase', 'switch_info_t_is_sparse', 'switch_info_t_is_subtract', + 'switch_info_t_is_user_defined', 'switch_info_t_jcases_get', 'switch_info_t_jcases_set', 'switch_info_t_jumps_get', @@ -9643,6 +10157,7 @@ 'switch_info_t_startea_get', 'switch_info_t_startea_set', 'switch_info_t_use_std_table', + 'switch_to_golang', 'sync_source_t___eq__', 'sync_source_t___ne__', 'sync_source_t_get_register', @@ -10286,6 +10801,7 @@ 'udt_type_data_t_pack_set', 'udt_type_data_t_sda_get', 'udt_type_data_t_sda_set', + 'udt_type_data_t_set_vftable', 'udt_type_data_t_swap', 'udt_type_data_t_taudt_bits_get', 'udt_type_data_t_taudt_bits_set', @@ -10471,6 +10987,7 @@ 'unregister_custom_data_format', 'unregister_custom_data_type', 'unregister_timer', + 'upd_abits', 'update_action_checkable', 'update_action_checked', 'update_action_icon', @@ -10485,6 +11002,7 @@ 'update_func', 'update_hidden_range', 'update_segm', + 'use_golang_cc', 'use_mapping', 'user_cancelled', 'user_cmts_begin', @@ -10586,6 +11104,7 @@ 'user_unions_size', 'user_unions_t_at', 'user_unions_t_size', + 'uses_aflag_modsp', 'uses_modsp', 'uval_array___getitem__', 'uval_array___setitem__', @@ -10706,6 +11225,7 @@ 'var_ref_t___lt__', 'var_ref_t___ne__', 'var_ref_t_compare', + 'var_ref_t_getv', 'var_ref_t_idx_get', 'var_ref_t_idx_set', 'var_ref_t_mba_get', diff --git a/release_pydoc_injections2.txt b/release_pydoc_injections2.txt index 3e38a82..48ac1ee 100644 --- a/release_pydoc_injections2.txt +++ b/release_pydoc_injections2.txt @@ -584,14 +584,12 @@ bin_flag(*args) Help on function bin_search in module ida_bytes: bin_search(*args) - bin_search(start_ea, end_ea, image, imask, step, flags) -> ea_t + bin_search(start_ea, end_ea, data, flags) -> ea_t Search for a set of bytes in the program @param start_ea: linear address, start of range to search @param end_ea: linear address, end of range to search (exclusive) - @param image: the set of bytes to search for - @param imask: a bitfield representing the mask in 'image' (can be None) - @param step: either BIN_SEARCH_FORWARD, or BIN_SEARCH_BACKWARD + @param data: the prepared data to search for (see parse_binpat_str()) @param flags: combination of BIN_SEARCH_* flags @return: the address of a match, or ida_idaapi.BADADDR if not found @@ -611,12 +609,12 @@ bytesize(*args) Help on function calc_def_align in module ida_bytes: calc_def_align(*args) - Calculate default alignment. + Calculate the default alignment exponent. calc_def_align(ea, mina, maxa) -> int - @param ea (C++: ea_t) - @param mina (C++: int) - @param maxa (C++: int) + @param ea: linear address (C++: ea_t) + @param mina: minimal possible alignment exponent. (C++: int) + @param maxa: minimal possible alignment exponent. (C++: int) Help on function calc_dflags in module ida_bytes: @@ -628,10 +626,11 @@ calc_dflags(*args) Help on function calc_max_align in module ida_bytes: calc_max_align(*args) - Returns: 0..32. + Calculate the maximal possible alignment exponent. calc_max_align(endea) -> int - @param endea (C++: ea_t) + @param endea: end address of the alignment item. (C++: ea_t) + @return: a value in the 0..32 range Help on function calc_max_item_end in module ida_bytes: @@ -649,10 +648,11 @@ calc_max_item_end(*args) Help on function calc_min_align in module ida_bytes: calc_min_align(*args) - Returns: 1..32. + Calculate the minimal possible alignment exponent. calc_min_align(length) -> int - @param length (C++: asize_t) + @param length: size of the item in bytes. (C++: asize_t) + @return: a value in the 1..32 range Help on function can_define_item in module ida_bytes: @@ -736,10 +736,226 @@ Help on function code_flag in module ida_bytes: code_flag(*args) 'FF_CODE' +Help on class compiled_binpat_t in module ida_bytes: + +class compiled_binpat_t(__builtin__.object) + | Proxy of C++ compiled_binpat_t class. + | + | Methods defined here: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: compiled_binpat_t const & + | + | __init__(self, *args) + | __init__(self) -> compiled_binpat_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: compiled_binpat_t const & + | + | __repr__ = _swig_repr(self) + | + | all_bytes_defined(self, *args) + | all_bytes_defined(self) -> bool + | + | qclear(self, *args) + | qclear(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | compiled_binpat_t_bytes_get(self) -> bytevec_t * + | + | encidx + | compiled_binpat_t_encidx_get(self) -> int + | + | mask + | compiled_binpat_t_mask_get(self) -> bytevec_t * + | + | strlits + | compiled_binpat_t_strlits_get(self) -> rangevec_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_compiled_binpat_t(self) + +Help on class compiled_binpat_vec_t in module ida_bytes: + +class compiled_binpat_vec_t(__builtin__.object) + | Proxy of C++ qvector< compiled_binpat_t > class. + | + | Methods defined here: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: qvector< compiled_binpat_t > const & + | + | __getitem__(self, *args) + | __getitem__(self, i) -> compiled_binpat_t + | i: size_t + | + | __init__(self, *args) + | __init__(self) -> compiled_binpat_vec_t + | x: qvector< compiled_binpat_t > const & + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: qvector< compiled_binpat_t > const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: compiled_binpat_t const & + | + | _del(self, *args) + | _del(self, x) -> bool + | x: compiled_binpat_t const & + | + | add_unique(self, *args) + | add_unique(self, x) -> bool + | x: compiled_binpat_t const & + | + | at(self, *args) + | at(self, _idx) -> compiled_binpat_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) + | begin(self) -> compiled_binpat_t + | begin(self) -> compiled_binpat_t + | + | capacity(self, *args) + | capacity(self) -> size_t + | + | clear(self, *args) + | clear(self) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> compiled_binpat_t + | end(self) -> compiled_binpat_t + | + | erase(self, *args) + | erase(self, it) -> compiled_binpat_t + | it: qvector< compiled_binpat_t >::iterator + | + | + | erase(self, first, last) -> compiled_binpat_t + | first: qvector< compiled_binpat_t >::iterator + | last: qvector< compiled_binpat_t >::iterator + | + | extract(self, *args) + | extract(self) -> compiled_binpat_t + | + | find(self, *args) + | find(self, x) -> compiled_binpat_t + | x: compiled_binpat_t const & + | + | + | find(self, x) -> compiled_binpat_t + | x: compiled_binpat_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) + | grow(self, x=compiled_binpat_t()) + | x: compiled_binpat_t const & + | + | has(self, *args) + | has(self, x) -> bool + | x: compiled_binpat_t const & + | + | inject(self, *args) + | inject(self, s, len) + | s: compiled_binpat_t * + | len: size_t + | + | insert(self, *args) + | insert(self, it, x) -> compiled_binpat_t + | it: qvector< compiled_binpat_t >::iterator + | x: compiled_binpat_t const & + | + | pop_back(self, *args) + | pop_back(self) + | + | push_back(self, *args) + | push_back(self, x) + | x: compiled_binpat_t const & + | + | qclear(self, *args) + | qclear(self) + | + | reserve(self, *args) + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) + | resize(self, _newsize, x) + | _newsize: size_t + | x: compiled_binpat_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) + | size(self) -> size_t + | + | swap(self, *args) + | swap(self, r) + | r: qvector< compiled_binpat_t > & + | + | truncate(self, *args) + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_compiled_binpat_vec_t(self) + Help on function create_16bit_data in module ida_bytes: create_16bit_data(*args) - Convert to 16-bit quantity (take byte size into account) + Convert to 16-bit quantity (take the byte size into account) create_16bit_data(ea, length) -> bool @param ea (C++: ea_t) @@ -748,7 +964,7 @@ create_16bit_data(*args) Help on function create_32bit_data in module ida_bytes: create_32bit_data(*args) - Convert to 32-bit quantity (take byte size into account) + Convert to 32-bit quantity (take the byte size into account) create_32bit_data(ea, length) -> bool @param ea (C++: ea_t) @@ -757,12 +973,17 @@ create_32bit_data(*args) Help on function create_align in module ida_bytes: create_align(*args) - Alignment: 0 or 2..32. If it is 0, is will be calculated. + Create an alignment item. create_align(ea, length, alignment) -> bool - @param ea (C++: ea_t) - @param length (C++: asize_t) - @param alignment (C++: int) + @param ea: linear address (C++: ea_t) + @param length: size of the item in bytes. 0 means to infer from + ALIGNMENT (C++: asize_t) + @param alignment: alignment exponent. Example: 3 means align to 8 + bytes. 0 means to infer from LENGTH It is forbidden + to specify both LENGTH and ALIGNMENT as 0. (C++: + int) + @return: success Help on function create_byte in module ida_bytes: @@ -2310,9 +2531,12 @@ is_align(*args) Help on function is_attached_custom_data_format in module ida_bytes: is_attached_custom_data_format(*args) + Is the custom data format attached to the custom data type? + is_attached_custom_data_format(dtid, dfid) -> bool - @param dtid (C++: int) - @param dfid (C++: int) + @param dtid: data type id (C++: int) + @param dfid: data format id (C++: int) + @return: true or false Help on function is_bnot in module ida_bytes: @@ -3130,6 +3354,45 @@ Help on function packreal_flag in module ida_bytes: packreal_flag(*args) Get a flags_t representing a packed decimal real. +Help on function parse_binpat_str in module ida_bytes: + +parse_binpat_str(*args) + Convert user-specified binary string to internal representation. The + 'in' parameter contains space-separated tokens: + + - numbers (numeric base is determined by 'radix') + - if value of number fits a byte, it is considered as a byte + - if value of number fits a word, it is considered as 2 bytes + - if value of number fits a dword,it is considered as 4 bytes + - "..." string constants + - 'x' single-character constants + - ? variable bytes + + Note that string constants are surrounded with double quotes.Here are + a few examples (assuming base 16): + + CD 21 - bytes 0xCD, 0x21 + 21CD - bytes 0xCD, 0x21 (little endian ) or 0x21, 0xCD (big-endian) + "Hello", 0 - the null terminated string "Hello" + L"Hello" - 'H', 0, 'e', 0, 'l', 0, 'l', 0, 'o', 0 + B8 ? ? ? ? 90 - byte 0xB8, 4 bytes with any value, byte 0x90 + + parse_binpat_str(out, ea, _in, radix, strlits_encoding=0) -> str + @param out: a vector of compiled binary patterns, for use with + bin_search2() (C++: compiled_binpat_vec_t *) + @param ea: linear address to convert for (the conversion depends on + the address, because the number of bits in a byte depend on + the segment type) (C++: ea_t) + in: char const * + @param radix: numeric base of numbers (8,10,16) (C++: int) + @param strlits_encoding: the target encoding into which the string + literals present in 'in', should be encoded. + Can be any from [1, get_encoding_qty() ), or + the special values PBSENC_* (C++: int) + @return: false either in case of parsing error, or if at least one + requested target encoding couldn't encode the string literals + present in "in". + Help on function patch_byte in module ida_bytes: patch_byte(*args) @@ -4143,7 +4406,7 @@ have hotkey markers part of the name ida_bytes.PSTF_TBRIEF """ -use brief name (e.g., in the 'Strings window') +use brief name (e.g., in the 'Strings' window) """ ida_bytes.PSTF_TINLIN @@ -5855,9 +6118,9 @@ load_debugger(*args) Help on function load_trace_file in module ida_dbg: load_trace_file(*args) - Load a recorded trace file in the trace window. If the call succeeds - and 'buf' is not null, the description of the trace stored in the - binary trace file will be returned in 'buf' + Load a recorded trace file in the 'Tracing' window. If the call + succeeds and 'buf' is not null, the description of the trace stored in + the binary trace file will be returned in 'buf' load_trace_file(filename) -> str @param filename (C++: const char *) @@ -7313,6 +7576,11 @@ ida_dbg.DOPT_EXCDLG exception dialogs: """ +ida_dbg.DOPT_FAST_STEP +""" +prevent debugger memory refreshes when single-stepping +""" + ida_dbg.DOPT_INFO_BPT """ break on debugging information @@ -7485,6 +7753,994 @@ ida_dbg.WFNE_USEC timeout is specified in microseconds """ === ida_dbg EPYDOC INJECTIONS END === +Help on class direntry_t in module ida_dirtree: + +class direntry_t(__builtin__.object) + | Proxy of C++ direntry_t class. + | + | Methods defined here: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: direntry_t const & + | + | __init__(self, *args) + | __init__(self, i=BADIDX, d=False) -> direntry_t + | i: uval_t + | d: bool + | + | __lt__(self, *args) + | __lt__(self, r) -> bool + | r: direntry_t const & + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: direntry_t const & + | + | __repr__ = _swig_repr(self) + | + | valid(self, *args) + | valid(self) -> bool + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | idx + | direntry_t_idx_get(self) -> uval_t + | + | isdir + | direntry_t_isdir_get(self) -> bool + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | BADIDX = unsigned-ea-like-numeric-type(-1) + | + | ROOTIDX = 0 + | + | __swig_destroy__ = + | delete_direntry_t(self) + +Help on class direntry_vec_t in module ida_dirtree: + +class direntry_vec_t(__builtin__.object) + | Proxy of C++ qvector< direntry_t > class. + | + | Methods defined here: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: qvector< direntry_t > const & + | + | __getitem__(self, *args) + | __getitem__(self, i) -> direntry_t + | i: size_t + | + | __init__(self, *args) + | __init__(self) -> direntry_vec_t + | x: qvector< direntry_t > const & + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: qvector< direntry_t > const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: direntry_t const & + | + | _del(self, *args) + | _del(self, x) -> bool + | x: direntry_t const & + | + | add_unique(self, *args) + | add_unique(self, x) -> bool + | x: direntry_t const & + | + | at(self, *args) + | at(self, _idx) -> direntry_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) + | begin(self) -> direntry_t + | begin(self) -> direntry_t + | + | capacity(self, *args) + | capacity(self) -> size_t + | + | clear(self, *args) + | clear(self) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> direntry_t + | end(self) -> direntry_t + | + | erase(self, *args) + | erase(self, it) -> direntry_t + | it: qvector< direntry_t >::iterator + | + | + | erase(self, first, last) -> direntry_t + | first: qvector< direntry_t >::iterator + | last: qvector< direntry_t >::iterator + | + | extract(self, *args) + | extract(self) -> direntry_t + | + | find(self, *args) + | find(self, x) -> direntry_t + | x: direntry_t const & + | + | + | find(self, x) -> direntry_t + | x: direntry_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) + | grow(self, x=direntry_t()) + | x: direntry_t const & + | + | has(self, *args) + | has(self, x) -> bool + | x: direntry_t const & + | + | inject(self, *args) + | inject(self, s, len) + | s: direntry_t * + | len: size_t + | + | insert(self, *args) + | insert(self, it, x) -> direntry_t + | it: qvector< direntry_t >::iterator + | x: direntry_t const & + | + | pop_back(self, *args) + | pop_back(self) + | + | push_back(self, *args) + | push_back(self, x) + | x: direntry_t const & + | + | qclear(self, *args) + | qclear(self) + | + | reserve(self, *args) + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) + | resize(self, _newsize, x) + | _newsize: size_t + | x: direntry_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) + | size(self) -> size_t + | + | swap(self, *args) + | swap(self, r) + | r: qvector< direntry_t > & + | + | truncate(self, *args) + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_direntry_vec_t(self) + +Help on class dirspec_t in module ida_dirtree: + +class dirspec_t(__builtin__.object) + | Proxy of C++ dirspec_t class. + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self, nm=None, f=0) -> dirspec_t + | nm: char const * + | f: uint32 + | + | __repr__ = _swig_repr(self) + | + | get_attrs(self, *args) + | get_attrs(self, inode) -> qstring + | @param inode (C++: inode_t) + | + | get_inode(self, *args) + | get the entry inode in the specified directory + | + | get_inode(self, diridx, name) -> inode_t + | @param diridx (C++: diridx_t) + | @param name (C++: const char *) + | @return: the entry inode + | + | get_name(self, *args) + | get the entry name. for example, the structure name + | + | get_name(self, inode) -> bool + | @param inode (C++: inode_t) + | @return: false if the entry does not exist. + | + | rename_inode(self, *args) + | rename the entry + | + | rename_inode(self, inode, newname) -> bool + | @param inode (C++: inode_t) + | @param newname (C++: const char *) + | @return: success + | + | unlink_inode(self, *args) + | event: unlinked an inode + | + | unlink_inode(self, inode) + | @param inode (C++: inode_t) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | flags + | dirspec_t_flags_get(self) -> uint32 + | + | nodename + | dirspec_t_nodename_get(self) -> qstring * + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | DSF_INODE_EA = 1 + | + | DSF_PRIVRANGE = 2 + | + | __swig_destroy__ = + | delete_dirspec_t(self) + +Help on class dirtree_cursor_t in module ida_dirtree: + +class dirtree_cursor_t(__builtin__.object) + | Proxy of C++ dirtree_cursor_t class. + | + | Methods defined here: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __ge__(self, *args) + | __ge__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __gt__(self, *args) + | __gt__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __init__(self, *args) + | __init__(self, _parent=BADIDX, _rank=size_t(-1)) -> dirtree_cursor_t + | _parent: diridx_t + | _rank: size_t + | + | __le__(self, *args) + | __le__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __lt__(self, *args) + | __lt__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __repr__ = _swig_repr(self) + | + | compare(self, *args) + | compare(self, r) -> int + | r: dirtree_cursor_t const & + | + | is_root_cursor(self, *args) + | is_root_cursor(self) -> bool + | + | set_root_cursor(self, *args) + | set_root_cursor(self) + | + | valid(self, *args) + | valid(self) -> bool + | + | ---------------------------------------------------------------------- + | Static methods defined here: + | + | root_cursor(*args) + | root_cursor() -> dirtree_cursor_t + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | parent + | dirtree_cursor_t_parent_get(self) -> diridx_t + | + | rank + | dirtree_cursor_t_rank_get(self) -> size_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_dirtree_cursor_t(self) + +Help on function dirtree_cursor_t_root_cursor in module ida_dirtree: + +dirtree_cursor_t_root_cursor(*args) + dirtree_cursor_t_root_cursor() -> dirtree_cursor_t + +Help on class dirtree_cursor_vec_t in module ida_dirtree: + +class dirtree_cursor_vec_t(__builtin__.object) + | Proxy of C++ qvector< dirtree_cursor_t > class. + | + | Methods defined here: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: qvector< dirtree_cursor_t > const & + | + | __getitem__(self, *args) + | __getitem__(self, i) -> dirtree_cursor_t + | i: size_t + | + | __init__(self, *args) + | __init__(self) -> dirtree_cursor_vec_t + | x: qvector< dirtree_cursor_t > const & + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: qvector< dirtree_cursor_t > const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: dirtree_cursor_t const & + | + | _del(self, *args) + | _del(self, x) -> bool + | x: dirtree_cursor_t const & + | + | add_unique(self, *args) + | add_unique(self, x) -> bool + | x: dirtree_cursor_t const & + | + | at(self, *args) + | at(self, _idx) -> dirtree_cursor_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) + | begin(self) -> dirtree_cursor_t + | begin(self) -> dirtree_cursor_t + | + | capacity(self, *args) + | capacity(self) -> size_t + | + | clear(self, *args) + | clear(self) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> dirtree_cursor_t + | end(self) -> dirtree_cursor_t + | + | erase(self, *args) + | erase(self, it) -> dirtree_cursor_t + | it: qvector< dirtree_cursor_t >::iterator + | + | + | erase(self, first, last) -> dirtree_cursor_t + | first: qvector< dirtree_cursor_t >::iterator + | last: qvector< dirtree_cursor_t >::iterator + | + | extract(self, *args) + | extract(self) -> dirtree_cursor_t + | + | find(self, *args) + | find(self, x) -> dirtree_cursor_t + | x: dirtree_cursor_t const & + | + | + | find(self, x) -> dirtree_cursor_t + | x: dirtree_cursor_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) + | grow(self, x=dirtree_cursor_t()) + | x: dirtree_cursor_t const & + | + | has(self, *args) + | has(self, x) -> bool + | x: dirtree_cursor_t const & + | + | inject(self, *args) + | inject(self, s, len) + | s: dirtree_cursor_t * + | len: size_t + | + | insert(self, *args) + | insert(self, it, x) -> dirtree_cursor_t + | it: qvector< dirtree_cursor_t >::iterator + | x: dirtree_cursor_t const & + | + | pop_back(self, *args) + | pop_back(self) + | + | push_back(self, *args) + | push_back(self, x) + | x: dirtree_cursor_t const & + | + | qclear(self, *args) + | qclear(self) + | + | reserve(self, *args) + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) + | resize(self, _newsize, x) + | _newsize: size_t + | x: dirtree_cursor_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) + | size(self) -> size_t + | + | swap(self, *args) + | swap(self, r) + | r: qvector< dirtree_cursor_t > & + | + | truncate(self, *args) + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_dirtree_cursor_vec_t(self) + +Help on class dirtree_iterator_t in module ida_dirtree: + +class dirtree_iterator_t(__builtin__.object) + | Proxy of C++ dirtree_iterator_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> dirtree_iterator_t + | + | __repr__ = _swig_repr(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | cursor + | dirtree_iterator_t_cursor_get(self) -> dirtree_cursor_t + | + | pattern + | dirtree_iterator_t_pattern_get(self) -> qstring * + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_dirtree_iterator_t(self) + +Help on class dirtree_selection_t in module ida_dirtree: + +class dirtree_selection_t(dirtree_cursor_vec_t) + | Proxy of C++ dirtree_selection_t class. + | + | Method resolution order: + | dirtree_selection_t + | dirtree_cursor_vec_t + | __builtin__.object + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> dirtree_selection_t + | + | __repr__ = _swig_repr(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_dirtree_selection_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from dirtree_cursor_vec_t: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: qvector< dirtree_cursor_t > const & + | + | __getitem__(self, *args) + | __getitem__(self, i) -> dirtree_cursor_t + | i: size_t + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: qvector< dirtree_cursor_t > const & + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: dirtree_cursor_t const & + | + | _del(self, *args) + | _del(self, x) -> bool + | x: dirtree_cursor_t const & + | + | add_unique(self, *args) + | add_unique(self, x) -> bool + | x: dirtree_cursor_t const & + | + | at(self, *args) + | at(self, _idx) -> dirtree_cursor_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) + | begin(self) -> dirtree_cursor_t + | begin(self) -> dirtree_cursor_t + | + | capacity(self, *args) + | capacity(self) -> size_t + | + | clear(self, *args) + | clear(self) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> dirtree_cursor_t + | end(self) -> dirtree_cursor_t + | + | erase(self, *args) + | erase(self, it) -> dirtree_cursor_t + | it: qvector< dirtree_cursor_t >::iterator + | + | + | erase(self, first, last) -> dirtree_cursor_t + | first: qvector< dirtree_cursor_t >::iterator + | last: qvector< dirtree_cursor_t >::iterator + | + | extract(self, *args) + | extract(self) -> dirtree_cursor_t + | + | find(self, *args) + | find(self, x) -> dirtree_cursor_t + | x: dirtree_cursor_t const & + | + | + | find(self, x) -> dirtree_cursor_t + | x: dirtree_cursor_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) + | grow(self, x=dirtree_cursor_t()) + | x: dirtree_cursor_t const & + | + | has(self, *args) + | has(self, x) -> bool + | x: dirtree_cursor_t const & + | + | inject(self, *args) + | inject(self, s, len) + | s: dirtree_cursor_t * + | len: size_t + | + | insert(self, *args) + | insert(self, it, x) -> dirtree_cursor_t + | it: qvector< dirtree_cursor_t >::iterator + | x: dirtree_cursor_t const & + | + | pop_back(self, *args) + | pop_back(self) + | + | push_back(self, *args) + | push_back(self, x) + | x: dirtree_cursor_t const & + | + | qclear(self, *args) + | qclear(self) + | + | reserve(self, *args) + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) + | resize(self, _newsize, x) + | _newsize: size_t + | x: dirtree_cursor_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) + | size(self) -> size_t + | + | swap(self, *args) + | swap(self, r) + | r: qvector< dirtree_cursor_t > & + | + | truncate(self, *args) + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from dirtree_cursor_vec_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + +Help on class dirtree_t in module ida_dirtree: + +class dirtree_t(__builtin__.object) + | Proxy of C++ dirtree_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self, ds) -> dirtree_t + | ds: dirspec_t * + | + | __repr__ = _swig_repr(self) + | + | change_rank(self, *args) + | Change ordering rank of an item.All subdirectories go before all file + | entries. + | + | change_rank(self, path, rank_delta) -> dterr_t + | @param path: path to the item (C++: const char *) + | @param rank_delta (C++: ssize_t) + | @return: dterr_t error code + | + | chdir(self, *args) + | Change current directory + | + | chdir(self, path) -> dterr_t + | @param path: new current directory (C++: const char *) + | @return: dterr_t error code + | + | findfirst(self, *args) + | Start iterating over files in a directory + | + | findfirst(self, ff, pattern) -> bool + | @param ff: directory iterator. it will be initialized by the function + | (C++: dirtree_iterator_t *) + | @param pattern: pattern to search for (C++: const char *) + | @return: success + | + | findnext(self, *args) + | Continue iterating over files in a directory + | + | findnext(self, ff) -> bool + | @param ff: directory iterator (C++: dirtree_iterator_t *) + | @return: success + | + | get_abspath(self, *args) + | Get absolute path pointed by the cursorsee also 'resolve_cursor()' + | + | get_abspath(self, cursor) -> qstring + | @param cursor (C++: const dirtree_cursor_t &) + | @return: path. empty path means wrong directory part of RELPATH + | + | + | get_abspath(self, relpath) -> qstring + | relpath: char const * + | @return: path. empty path means wrong directory part of RELPATH + | + | get_dir_size(self, *args) + | Get dir size + | + | get_dir_size(self, diridx) -> ssize_t + | @param diridx: directory index (C++: diridx_t) + | @return: number of entries under this directory; if error, return -1 + | + | get_entry_attrs(self, *args) + | Get entry attributes + | + | get_entry_attrs(self, de) -> qstring + | @param de: directory entry (C++: const direntry_t &) + | @return: name + | + | get_entry_name(self, *args) + | Get entry name + | + | get_entry_name(self, de) -> qstring + | @param de: directory entry (C++: const direntry_t &) + | @return: name + | + | get_nodename(self, *args) + | netnode name + | + | get_parent_cursor(self, *args) + | Get parent cursor. + | + | get_parent_cursor(self, cursor) -> dirtree_cursor_t + | @param cursor: a valid ditree cursor (C++: const dirtree_cursor_t &) + | @return: cursor's parent + | + | get_rank(self, *args) + | Get ordering rank of an item. + | + | get_rank(self, diridx, de) -> ssize_t + | @param diridx: index of the parent directory (C++: diridx_t) + | @param de: directory entry (C++: const direntry_t &) + | @return: number in a range of [0..n) where n is the number of entries + | in the parent directory. -1 if error + | + | getcwd(self, *args) + | Get current directory + | + | isdir(self, *args) + | Is a directory? + | + | isdir(self, de) -> bool + | de: direntry_t const & + | @return: true if the specified path is a directory + | + | + | isdir(self, path) -> bool + | path: char const * + | @return: true if the specified path is a directory + | + | isfile(self, *args) + | Is a file? + | + | isfile(self, de) -> bool + | de: direntry_t const & + | @return: true if the specified path is a file + | + | + | isfile(self, path) -> bool + | path: char const * + | @return: true if the specified path is a file + | + | link(self, *args) + | Add a file item into a directory. + | + | link(self, path) -> dterr_t + | @param path: path to item to add to a directory (C++: const char *) + | @return: dterr_t error code + | + | + | link(self, inode) -> dterr_t + | inode: inode_t + | @return: dterr_t error code + | + | load(self, *args) + | Load the tree structure from the netnode. If dirspec_t::nodename is + | empty, the operation will be considered a success. In addition, + | calling 'load()' more than once will not do anything, and will be + | considered a success.dirspec_t::nodename. + | + | mkdir(self, *args) + | Create a directory. + | + | mkdir(self, path) -> dterr_t + | @param path: directory to create (C++: const char *) + | @return: dterr_t error code + | + | notify_dirtree(self, *args) + | Notify dirtree about a change of an inode. + | + | notify_dirtree(self, added, inode) + | @param added (C++: bool) + | @param inode: inode in question (C++: inode_t) + | + | rename(self, *args) + | Rename a directory entry.This function can also rename the item + | + | rename(self, _from, to) -> dterr_t + | @param _from: source path (C++: const char *) + | @param to: destination path (C++: const char *) + | @return: dterr_t error code + | + | resolve_cursor(self, *args) + | Resolve cursorsee also 'get_abspath()' + | + | resolve_cursor(self, cursor) -> direntry_t + | @param cursor: to analyze (C++: const dirtree_cursor_t &) + | @return: directory entry; if the cursor is bad, the resolved entry + | will be invalid. + | + | resolve_path(self, *args) + | Resolve path + | + | resolve_path(self, path) -> direntry_t + | @param path: to analyze (C++: const char *) + | @return: directory entry + | + | rmdir(self, *args) + | Remove a directory. + | + | rmdir(self, path) -> dterr_t + | @param path: directory to delete (C++: const char *) + | @return: dterr_t error code + | + | save(self, *args) + | Save the tree structure to the netnode.dirspec_t::nodename. + | + | set_nodename(self, *args) + | set_nodename(self, nm) + | @param nm (C++: const char *) + | + | unlink(self, *args) + | Remove a file item from a directory. + | + | unlink(self, path) -> dterr_t + | @param path: path to item remove from a directory (C++: const char *) + | @return: dterr_t error code + | + | + | unlink(self, inode) -> dterr_t + | inode: inode_t + | @return: dterr_t error code + | + | ---------------------------------------------------------------------- + | Static methods defined here: + | + | errstr(*args) + | errstr(err) -> char const * + | err: enum dterr_t + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_dirtree_t(self) + +Help on function dirtree_t_errstr in module ida_dirtree: + +dirtree_t_errstr(*args) + dirtree_t_errstr(err) -> char const * + err: enum dterr_t + +Help on function get_std_dirtree in module ida_dirtree: + +get_std_dirtree(*args) + get_std_dirtree(id) -> dirtree_t + @param id (C++: dirtree_id_t) + Help on function choose_ioport_device2 in module ida_diskio: choose_ioport_device2(*args) @@ -8755,7 +10011,7 @@ exec_system_script(*args) exec_system_script(file, complain_if_no_file=True) -> bool @param file: file name with IDC function(s). The file will be searched - in the idc subdir of ida (C++: const char *) + using get_idc_filename() . (C++: const char *) @param complain_if_no_file: 1: display warning if the file is not found 0: don't complain if file doesn't exist (C++: bool) @@ -8810,7 +10066,7 @@ Help on function get_idc_filename in module ida_expr: get_idc_filename(*args) Get full name of IDC file name. Search for file in list of include - directories, IDCPATH directory and the current directory. + directories, IDCPATH directory and system directories. get_idc_filename(file) -> str @param file: file name without full path (C++: const char *) @@ -8965,9 +10221,6 @@ class idc_value_t(__builtin__.object) | _create_empty_string(self, *args) | _create_empty_string(self) | - | _idc_value_t__get_e = __get_e(self, *args) - | __get_e(self) -> wrapped_array_t< ushort,6 > - | | c_str(self, *args) | 'VT_STR' | @@ -8992,7 +10245,7 @@ class idc_value_t(__builtin__.object) | | set_float(self, *args) | set_float(self, f) - | f: ushort const [6] + | f: fpvalue_t const & | | set_int64(self, *args) | set_int64(self, v) @@ -9034,7 +10287,7 @@ class idc_value_t(__builtin__.object) | list of weak references to the object (if defined) | | e - | __get_e(self) -> wrapped_array_t< ushort,6 > + | idc_value_t_e_get(self) -> fpvalue_t | | funcidx | idc_value_t_funcidx_get(self) -> int @@ -9800,6 +11053,24 @@ get_prev_fixup_ea(*args) @param ea: current address (C++: ea_t) @return: the previous address with fixup information, or BADADDR +Help on function handle_fixups_in_macro in module ida_fixup: + +handle_fixups_in_macro(*args) + Handle two fixups in a macro. We often combine two instruction that + load parts of a value into one macro instruction. For example: ARM: + ADRP X0, #var@PAGE ADD X0, X0, #var@PAGEOFF --> ADRL X0, var MIPS: lui + $v0, hi(var) addiu $v0, $v0, lo(var) --> la $v0, var When applying the + fixups that fall inside such a macro, we should convert them to one + refinfo. This function does exactly that. It should be called from the + apply() callback of a custom fixup. + + handle_fixups_in_macro(ri, ea, other, macro_reft_and_flags) -> bool + @param ri (C++: refinfo_t *) + @param ea (C++: ea_t) + @param other (C++: fixup_type_t) + @param macro_reft_and_flags (C++: uint32) + @return: success ('false' means that RI was not changed) + Help on function is_fixup_custom in module ida_fixup: is_fixup_custom(*args) @@ -10218,6 +11489,12 @@ frame_off_savregs(*args) frame_off_savregs(pfn) -> ea_t @param pfn (C++: const func_t *) +Help on function free_regvar in module ida_frame: + +free_regvar(*args) + free_regvar(v) + @param v (C++: struct regvar_t *) + Help on function get_effective_spd in module ida_frame: get_effective_spd(*args) @@ -10383,9 +11660,14 @@ class regvar_t(ida_range.range_t) | | __init__(self, *args) | __init__(self) -> regvar_t + | r: regvar_t const & | | __repr__ = _swig_repr(self) | + | swap(self, *args) + | swap(self, r) + | @param r (C++: regvar_t &) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -11355,6 +12637,12 @@ find_func_bounds(*args) @param flags: Find function bounds flags (C++: int) @return: Find function bounds result codes +Help on function free_regarg in module ida_funcs: + +free_regarg(*args) + free_regarg(v) + @param v (C++: struct regarg_t *) + Help on function func_contains in module ida_funcs: func_contains(*args) @@ -12253,9 +13541,14 @@ class regarg_t(__builtin__.object) | | __init__(self, *args) | __init__(self) -> regarg_t + | r: regarg_t const & | | __repr__ = _swig_repr(self) | + | swap(self, *args) + | swap(self, r) + | @param r (C++: regarg_t &) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -12662,6 +13955,143 @@ class FlowChart(__builtin__.object) | | size +Help on class cancellable_graph_t in module ida_gdl: + +class cancellable_graph_t(gdl_graph_t) + | Proxy of C++ cancellable_graph_t class. + | + | Method resolution order: + | cancellable_graph_t + | gdl_graph_t + | __builtin__.object + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> cancellable_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | cancelled + | cancellable_graph_t_cancelled_get(self) -> bool + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_cancellable_graph_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from gdl_graph_t: + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + Help on function display_gdl in module ida_gdl: display_gdl(*args) @@ -12673,6 +14103,129 @@ display_gdl(*args) @param fname (C++: const char *) @return: error code from os, 0 if ok +Help on class gdl_graph_t in module ida_gdl: + +class gdl_graph_t(__builtin__.object) + | Proxy of C++ gdl_graph_t class. + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> gdl_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_gdl_graph_t(self) + Help on function gen_complex_call_chart in module ida_gdl: gen_complex_call_chart(*args) @@ -12914,9 +14467,15 @@ class qbasic_block_t(ida_range.range_t) Help on class qflow_chart_t in module ida_gdl: -class qflow_chart_t(__builtin__.object) +class qflow_chart_t(cancellable_graph_t) | Proxy of C++ qflow_chart_t class. | + | Method resolution order: + | qflow_chart_t + | cancellable_graph_t + | gdl_graph_t + | __builtin__.object + | | Methods defined here: | | __getitem__(self, *args) @@ -12957,10 +14516,8 @@ class qflow_chart_t(__builtin__.object) | @param _flags (C++: int) | | get_node_label(self, *args) - | get_node_label(self, arg2, arg3, arg4) -> char * - | arg2: char * - | arg3: int - | arg4: int + | get_node_label(self, n) -> char * + | @param n (C++: int) | | is_noret_block(self, *args) | is_noret_block(self, blknum) -> bool @@ -12987,9 +14544,9 @@ class qflow_chart_t(__builtin__.object) | print_names(self) -> bool | | print_node_attributes(self, *args) - | print_node_attributes(self, arg2, arg3) - | arg2: FILE * - | arg3: int + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) | | refresh(self, *args) | refresh(self) @@ -13005,12 +14562,6 @@ class qflow_chart_t(__builtin__.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | bounds | qflow_chart_t_bounds_get(self) -> range_t | @@ -13034,6 +14585,89 @@ class qflow_chart_t(__builtin__.object) | | __swig_destroy__ = | delete_qflow_chart_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from cancellable_graph_t: + | + | __disown__(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from cancellable_graph_t: + | + | cancelled + | cancellable_graph_t_cancelled_get(self) -> bool + | + | ---------------------------------------------------------------------- + | Methods inherited from gdl_graph_t: + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) === ida_gdl EPYDOC INJECTIONS === ida_gdl.CHART_FOLLOW_DIRECTION @@ -13417,6 +15051,183 @@ class TPointDouble(__builtin__.object) | __swig_destroy__ = | delete_TPointDouble(self) +Help on class abstract_graph_t in module ida_graph: + +class abstract_graph_t(ida_gdl.gdl_graph_t) + | Proxy of C++ abstract_graph_t class. + | + | Method resolution order: + | abstract_graph_t + | ida_gdl.gdl_graph_t + | __builtin__.object + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> abstract_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | create_circle_layout(self, *args) + | create_circle_layout(self, p, radius) -> bool + | @param p (C++: point_t) + | @param radius (C++: int) + | + | create_tree_layout(self, *args) + | create_tree_layout(self) -> bool + | + | get_edge(self, *args) + | get_edge(self, e) -> edge_info_t + | @param e (C++: edge_t) + | + | grcall(self, *args) + | grcall(self, code) -> ssize_t + | @param code (C++: int) + | + | nrect(self, *args) + | nrect(self, n) -> rect_t + | @param n (C++: int) + | + | set_callback(self, *args) + | set_callback(self, _callback, _ud) + | @param _callback (C++: hook_cb_t *) + | @param _ud (C++: void *) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | callback_ud + | abstract_graph_t_callback_ud_get(self) -> void * + | + | circle_center + | abstract_graph_t_circle_center_get(self) -> point_t + | + | circle_radius + | abstract_graph_t_circle_radius_get(self) -> int + | + | current_layout + | abstract_graph_t_current_layout_get(self) -> layout_type_t + | + | rect_edges_made + | abstract_graph_t_rect_edges_made_get(self) -> bool + | + | thisown + | The membership flag + | + | title + | abstract_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_abstract_graph_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + Help on function calc_dist in module ida_graph: calc_dist(*args) @@ -14078,57 +15889,93 @@ class interval_t(__builtin__.object) Help on class mutable_graph_t in module ida_graph: -class mutable_graph_t(__builtin__.object) +class mutable_graph_t(abstract_graph_t) | Proxy of C++ mutable_graph_t class. | - | Methods defined here: + | Method resolution order: + | mutable_graph_t + | abstract_graph_t + | ida_gdl.gdl_graph_t + | __builtin__.object | - | __disown__(self) + | Methods defined here: | | __init__(self, *args, **kwargs) | | __repr__ = _swig_repr(self) | + | add_edge(self, *args) + | add_edge(self, i, j, ei) -> bool + | @param i (C++: int) + | @param j (C++: int) + | @param ei (C++: const edge_info_t *) + | + | add_node(self, *args) + | Add a node, possibly with a specific geometry + | + | add_node(self, r) -> int + | @param r: the node geometry (can be nullptr) (C++: const rect_t *) + | @return: the new node + | | calc_group_ea(self, *args) - | calc_group_ea(self, arg0) -> ea_t - | arg0: intvec_t const & + | calc_group_ea(self, arg2) -> ea_t + | arg2: intvec_t const & | | change_group_visibility(self, *args) + | Expand/collapse a group node + | | change_group_visibility(self, group, expand) -> bool - | @param group (C++: int) - | @param expand (C++: bool) - | - | clear(self, *args) - | clear(self) + | @param group: the group node (C++: int) + | @param expand: whether to expand or collapse (C++: bool) + | @return: success | | create_digraph_layout(self, *args) | create_digraph_layout(self) -> bool | | create_group(self, *args) + | Create a new group node, that will contain all the nodes in 'nodes'. + | | create_group(self, nodes) -> int - | @param nodes (C++: const intvec_t &) + | @param nodes: the nodes that will be part of the group (C++: const + | intvec_t &) + | @return: the group node, or -1 in case of error | | del_custom_layout(self, *args) | del_custom_layout(self) | + | del_edge(self, *args) + | del_edge(self, i, j) -> bool + | @param i (C++: int) + | @param j (C++: int) + | + | del_node(self, *args) + | Delete a node + | + | del_node(self, n) -> ssize_t + | @param n: the node to delete (C++: int) + | @return: the number of deleted edges + | | delete_group(self, *args) + | Delete a group node.This deletes the group node only; it does not + | delete nodes that are part of the group. + | | delete_group(self, group) -> bool - | @param group (C++: int) + | @param group: the group node (C++: int) + | @return: success | | empty(self, *args) - | empty(self) -> bool + | Is the graph (visually) empty? | | exists(self, *args) + | Is the node visible? + | | exists(self, node) -> bool - | @param node (C++: int) + | @param node: the node number (C++: int) + | @return: success | | get_custom_layout(self, *args) | get_custom_layout(self) -> bool | - | get_edge(self, *args) - | get_edge(self, e) -> edge_info_t - | @param e (C++: edge_t) - | | get_first_subgraph_node(self, *args) | get_first_subgraph_node(self, group) -> int | @param group (C++: int) @@ -14146,8 +15993,15 @@ class mutable_graph_t(__builtin__.object) | @param node (C++: int) | | get_node_representative(self, *args) + | Get the node that currently visually represents 'node'. This will find + | the "closest" parent group node that's visible, by attempting to walk + | up the group nodes that contain 'node', and will stop when it finds a + | node that is currently visible.See also get_group_node() + | | get_node_representative(self, node) -> int - | @param node (C++: int) + | @param node: the node (C++: int) + | @return: the node that represents 'node', or 'node' if it's not part + | of any group | | is_collapsed_node(self, *args) | is_collapsed_node(self, node) -> bool @@ -14185,24 +16039,21 @@ class mutable_graph_t(__builtin__.object) | is_user_graph(self) -> bool | | is_visible_node(self, *args) + | Is the node currently visible?An invisible node is a node that's part + | of a group that's currently collapsed. + | | is_visible_node(self, node) -> bool - | @param node (C++: int) + | @param node: the node (C++: int) + | @return: success | | node_qty(self, *args) - | node_qty(self) -> int + | Get the number of visible nodes (the list can be retrieved using + | 'gdl.hpp' 's 'node_iterator' )See also size() | | npred(self, *args) | npred(self, b) -> int | @param b (C++: int) | - | nrect(self, *args) - | nrect(self, n) -> rect_t - | @param n (C++: int) - | - | - | nrect(self, n) -> rect_t - | @param n (C++: int) - | | nsucc(self, *args) | nsucc(self, b) -> int | @param b (C++: int) @@ -14216,9 +16067,38 @@ class mutable_graph_t(__builtin__.object) | predset(self, b) -> intvec_t const & | @param b (C++: int) | + | redo_layout(self, *args) + | Recompute the layout, according to the value of 'current_layout'. + | + | refresh(self, *args) + | Refresh the graphA graph needs refreshing when it's "backing data". + | E.g., if the number (or contents) of the objects in the above example, + | change.Let's say the user's plugin ends up finding a 5th piece of + | scattered data. It should then add it to its internal list of known + | objects, and tell IDA that the graph needs to be refreshed, using + | 'refresh_viewer()' . This will cause IDA to:discard all its internal + | rendering information,call 'mutable_graph_t::refresh()' on the graph + | so that the user's plugin has a chance to "sync" the number of nodes & + | edges that this graph contains, to the information that the plugin has + | collected so farre-create internal rendering information, andrepaint + | the view + | + | replace_edge(self, *args) + | replace_edge(self, i, j, x, y) -> bool + | @param i (C++: int) + | @param j (C++: int) + | @param x (C++: int) + | @param y (C++: int) + | | reset(self, *args) | reset(self) | + | resize(self, *args) + | Resize the graph to 'n' nodes + | + | resize(self, n) + | @param n: the new size (C++: int) + | | set_custom_layout(self, *args) | set_custom_layout(self) | @@ -14239,8 +16119,14 @@ class mutable_graph_t(__builtin__.object) | @param node (C++: int) | @param group (C++: int) | + | set_nrect(self, *args) + | set_nrect(self, n, r) -> bool + | @param n (C++: int) + | @param r (C++: const rect_t &) + | | size(self, *args) - | size(self) -> int + | Get the total number of nodes (including group nodes, and including + | hidden nodes.)See also node_qty() | | succ(self, *args) | succ(self, b, i) -> int @@ -14254,12 +16140,6 @@ class mutable_graph_t(__builtin__.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | belongs | mutable_graph_t_belongs_get(self) -> intvec_t * | @@ -14276,16 +16156,16 @@ class mutable_graph_t(__builtin__.object) | mutable_graph_t_nodes_get(self) -> node_layout_t | | org_preds - | mutable_graph_t_org_preds_get(self) -> array_of_intvec_t + | mutable_graph_t_org_preds_get(self) -> array_of_intvec_t * | | org_succs - | mutable_graph_t_org_succs_get(self) -> array_of_intvec_t + | mutable_graph_t_org_succs_get(self) -> array_of_intvec_t * | | preds - | mutable_graph_t_preds_get(self) -> array_of_intvec_t + | mutable_graph_t_preds_get(self) -> array_of_intvec_t * | | succs - | mutable_graph_t_succs_get(self) -> array_of_intvec_t + | mutable_graph_t_succs_get(self) -> array_of_intvec_t * | | thisown | The membership flag @@ -14295,6 +16175,128 @@ class mutable_graph_t(__builtin__.object) | | __swig_destroy__ = | delete_mutable_graph_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from abstract_graph_t: + | + | __disown__(self) + | + | create_circle_layout(self, *args) + | create_circle_layout(self, p, radius) -> bool + | @param p (C++: point_t) + | @param radius (C++: int) + | + | create_tree_layout(self, *args) + | create_tree_layout(self) -> bool + | + | get_edge(self, *args) + | get_edge(self, e) -> edge_info_t + | @param e (C++: edge_t) + | + | grcall(self, *args) + | grcall(self, code) -> ssize_t + | @param code (C++: int) + | + | nrect(self, *args) + | nrect(self, n) -> rect_t + | @param n (C++: int) + | + | set_callback(self, *args) + | set_callback(self, _callback, _ud) + | @param _callback (C++: hook_cb_t *) + | @param _ud (C++: void *) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from abstract_graph_t: + | + | callback_ud + | abstract_graph_t_callback_ud_get(self) -> void * + | + | circle_center + | abstract_graph_t_circle_center_get(self) -> point_t + | + | circle_radius + | abstract_graph_t_circle_radius_get(self) -> int + | + | current_layout + | abstract_graph_t_current_layout_get(self) -> layout_type_t + | + | rect_edges_made + | abstract_graph_t_rect_edges_made_get(self) -> bool + | + | title + | abstract_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on class node_info_t in module ida_graph: @@ -14535,10 +16537,18 @@ class node_ordering_t(__builtin__.object) | clear(self, *args) | clear(self) | + | clr(self, *args) + | clr(self, _node) -> bool + | @param _node (C++: int) + | | node(self, *args) | node(self, _order) -> int | @param _order (C++: size_t) | + | order(self, *args) + | order(self, _node) -> int + | @param _node (C++: int) + | | resize(self, *args) | resize(self, n) | @param n (C++: int) @@ -15642,7 +17652,7 @@ Help on function viewer_create_groups in module ida_graph: viewer_create_groups(*args) This will perform an operation similar to what happens when a user manually selects a set of nodes, right-clicks and selects "Create - group". This is a wrapper around mutable_graph_t::create_group that + group". This is a wrapper around 'mutable_graph_t::create_group' that will, in essence:clone the current graphfor each 'group_crinfo_t' , attempt creating group in that new graphif all were successful, animate to that new graph.this accepts parameters that allow creating @@ -15666,9 +17676,9 @@ viewer_del_node_info(*args) Help on function viewer_delete_groups in module ida_graph: viewer_delete_groups(*args) - Wrapper around mutable_graph_t::delete_group. This function will:clone - the current graphattempt deleting the groups in that new graphif - successful, animate to that new graph. + Wrapper around 'mutable_graph_t::delete_group' . This function + will:clone the current graphattempt deleting the groups in that new + graphif successful, animate to that new graph. viewer_delete_groups(gv, groups, new_current=-1) -> bool @param gv (C++: graph_viewer_t *) @@ -15737,7 +17747,7 @@ viewer_set_gli(*args) Help on function viewer_set_groups_visibility in module ida_graph: viewer_set_groups_visibility(*args) - Wrapper around mutable_graph_t::change_visibility. This function + Wrapper around 'mutable_graph_t::change_visibility' . This function will:clone the current graphattempt changing visibility of the groups in that new graphif successful, animate to that new graph. @@ -15901,6 +17911,17 @@ class Hexrays_Hooks(__builtin__.object) | | __repr__ = _swig_repr(self) | + | build_callinfo(self, *args) + | Analyzing a call instruction. + | + | build_callinfo(self, blk, type, callinfo) -> int + | @param blk: blk->tail is the call. (C++: mblock_t *) + | @param type: buffer for the output type. (C++: tinfo_t *) + | @param callinfo: prepared callinfo. Should return: 1 if the function + | type has been determined. The plugin should either + | specify the function type, either allocate and return + | a new mcallinfo_t object. (C++: mcallinfo_t **) + | | close_pseudocode(self, *args) | Pseudocode view is being closed. | @@ -15924,10 +17945,12 @@ class Hexrays_Hooks(__builtin__.object) | a preceding one (C++: minsn_t *) | | create_hint(self, *args) - | Create a hint for the current item. + | Create a hint for the current item. 'ui_get_custom_viewer_hint' | | create_hint(self, vu) -> PyObject * | @param vu (C++: vdui_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | curpos(self, *args) | Current cursor position has been changed. (for example, by left- @@ -15952,7 +17975,8 @@ class Hexrays_Hooks(__builtin__.object) | | func_printed(self, *args) | Function text has been generated. Plugins may modify the text in - | 'cfunc_t::sv' . + | 'cfunc_t::sv' . The text uses regular color codes (see 'lines.hpp' ) + | COLOR_ADDR is used to store pointers to ctree elements. | | func_printed(self, cfunc) -> int | @param cfunc (C++: cfunc_t *) @@ -16075,7 +18099,8 @@ class Hexrays_Hooks(__builtin__.object) | | print_func(self, cfunc, vp) -> int | @param cfunc (C++: cfunc_t *) - | @param vp: Returns: 1 if text has been generated by the plugin (C++: + | @param vp: Returns: 1 if text has been generated by the plugin It is + | forbidden to modify ctree at this event. (C++: | vc_printer_t *) | | prolog(self, *args) @@ -16133,9 +18158,9 @@ class Hexrays_Hooks(__builtin__.object) | Decompiled text is ready. | | text_ready(self, vu) -> int - | @param vu: This event can be used to modify the output text (sv). The - | text uses regular color codes (see lines.hpp) COLOR_ADDR is - | used to store pointers to ctree elements (C++: vdui_t *) + | @param vu: This event can be used to modify the output text (sv). + | Obsolete. Please use hxe_func_printed instead. (C++: + | vdui_t *) | | unhook(self, *args) | unhook(self) -> bool @@ -16212,6 +18237,17 @@ class __cbhooks_t(Hexrays_Hooks) | | __repr__ = _swig_repr(self) | + | build_callinfo(self, *args) + | Analyzing a call instruction. + | + | build_callinfo(self, blk, type, callinfo) -> int + | @param blk: blk->tail is the call. (C++: mblock_t *) + | @param type: buffer for the output type. (C++: tinfo_t *) + | @param callinfo: prepared callinfo. Should return: 1 if the function + | type has been determined. The plugin should either + | specify the function type, either allocate and return + | a new mcallinfo_t object. (C++: mcallinfo_t **) + | | cmt_changed(self, *args) | Comment got changed. | @@ -18162,6 +20198,8 @@ class carg_t(cexpr_t) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) | _get_op(self) -> ctype_t | @@ -19117,6 +21155,8 @@ class ccase_t(cinsn_t) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) | _get_op(self) -> ctype_t | @@ -20061,6 +22101,8 @@ class cexpr_t(citem_t) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) | _get_op(self) -> ctype_t | @@ -21073,7 +23115,8 @@ class chain_t(ida_pro.intvec_t) | append_list(self, *args) | Append the contents of the chain to the specified list of locations. | - | append_list(self, list) + | append_list(self, mba, list) + | @param mba (C++: const mba_t *) | @param list (C++: mlist_t *) | | clear_varnum(self, *args) @@ -21729,6 +23772,8 @@ class cinsn_t(citem_t) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) | _get_op(self) -> ctype_t | @@ -22107,6 +24152,8 @@ class citem_t(__builtin__.object) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) | _get_op(self) -> ctype_t | @@ -22440,18 +24487,44 @@ class codegen_t(__builtin__.object) | gen_micro(self, *args) | Generate microcode for one instruction. The instruction is in INSN | + | load_effective_address(self, *args) + | Generate microcode to calculate the address of a memory operand. + | + | load_effective_address(self, n, flags=0) -> mreg_t + | @param n: - number of INSN operand (C++: int) + | @param flags: - reserved for future use (C++: int) + | @return: register containing the operand address. mr_none - failed + | (not a memory operand) + | | load_operand(self, *args) | Generate microcode to load one operand. | - | load_operand(self, opnum) -> mreg_t + | load_operand(self, opnum, flags=0) -> mreg_t | @param opnum (C++: int) + | @param flags: - reserved for future use (C++: int) + | @return: register containing the operand. | | microgen_completed(self, *args) | This method is called when the microcode generation is done. | | prepare_gen_micro(self, *args) - | Setup internal data to handle new instruction This method should be - | called before calling 'gen_micro()' The instruction is in INSN + | Setup internal data to handle new instruction. This method should be + | called before calling 'gen_micro()' . Usually 'gen_micro()' is called + | by the decompiler. You have to call this function explicitly only if + | you yourself call 'gen_micro()' . The instruction is in INSN + | + | store_operand(self, *args) + | Generate microcode to store an operand. In case of success an + | arbitrary number of instructions can be generated (and even no + | instruction if the source and target are the same) + | + | store_operand(self, n, mop, flags=0, outins=None) -> bool + | @param n: - number of target INSN operand (C++: int) + | @param mop: - operand to be stored (C++: const mop_t &) + | @param flags: - reserved for future use (C++: int) + | @param outins: - (OUT) the last generated instruction (C++: minsn_t + | **) + | @return: success | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -22497,6 +24570,15 @@ convert_to_user_call(*args) @return: Microcode error codes code: MERR_OK - user-defined call generated else - error (MERR_INSN == inacceptable udc.tif) +Help on function create_cfunc in module ida_hexrays: + +create_cfunc(*args) + Create a new 'cfunc_t' object. + + create_cfunc(mba) -> cfuncptr_t + @param mba: microcode object. After creating the cfunc object it takes + the ownership of MBA. (C++: mba_t *) + Help on function create_field_name in module ida_hexrays: create_field_name(*args) @@ -23424,7 +25506,8 @@ class cwhile_t(cloop_t) Help on function debug_hexrays_ctree in module ida_hexrays: debug_hexrays_ctree(*args) - debug_hexrays_ctree(msg) + debug_hexrays_ctree(level, msg) + level: int msg: char const * Help on function decompile in module ida_hexrays: @@ -23820,65 +25903,6 @@ class eamap_t(__builtin__.object) | valuetype = | Proxy of C++ qvector< cinsn_t * > class. -Help on class fnum_array in module ida_hexrays: - -class fnum_array(__builtin__.object) - | Proxy of C++ wrapped_array_t< uint16,6 > class. - | - | Methods defined here: - | - | __getitem__(self, *args) - | __getitem__(self, i) -> unsigned short const & - | i: size_t - | - | __init__(self, *args) - | __init__(self, data) -> fnum_array - | data: unsigned short (&)[6] - | - | __iter__ = _bounded_getitem_iterator(self) - | Helper function, to be set as __iter__ method for qvector-, or array-based classes. - | - | __len__(self, *args) - | __len__(self) -> size_t - | - | __repr__ = _swig_repr(self) - | - | __setitem__(self, *args) - | __setitem__(self, i, v) - | i: size_t - | v: unsigned short const & - | - | _get_bytes(self, *args) - | _get_bytes(self) -> bytevec_t - | - | _set_bytes(self, *args) - | _set_bytes(self, bts) - | bts: bytevec_t const & - | - | ---------------------------------------------------------------------- - | Data descriptors defined here: - | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | - | bytes - | _get_bytes(self) -> bytevec_t - | - | data - | fnum_array_data_get(self) -> unsigned short (&)[6] - | - | thisown - | The membership flag - | - | ---------------------------------------------------------------------- - | Data and other attributes defined here: - | - | __swig_destroy__ = - | delete_fnum_array(self) - Help on class fnumber_t in module ida_hexrays: class fnumber_t(__builtin__.object) @@ -23915,9 +25939,6 @@ class fnumber_t(__builtin__.object) | | __repr__ = _swig_repr(self) | - | _fnumber_t__get_fnum = __get_fnum(self, *args) - | __get_fnum(self) -> fnum_array - | | _print(self, *args) | _print(self) | @@ -23941,7 +25962,7 @@ class fnumber_t(__builtin__.object) | list of weak references to the object (if defined) | | fnum - | __get_fnum(self) -> fnum_array + | fnumber_t_fnum_get(self) -> fpvalue_t | | nbytes | fnumber_t_nbytes_get(self) -> int @@ -23975,6 +25996,10 @@ class gco_info_t(__builtin__.object) | @param list: list to append to (C++: mlist_t *) | @param mba: microcode object (C++: const mba_t *) | + | cvt_to_ivl(self, *args) + | Convert operand info to VIVL. The returned VIVL can be used, for + | example, in a call of get_valranges(). + | | is_def(self, *args) | is_def(self) -> bool | @@ -24933,14 +26958,13 @@ class history_t(qvector_history_t) Help on function init_hexrays_plugin in module ida_hexrays: init_hexrays_plugin(*args) - 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. + Check that your plugin is compatible with hex-rays decompiler. This + function must be called before calling any other decompiler function. init_hexrays_plugin(flags=0) -> bool @param flags: reserved, must be 0 (C++: int) - @return: true if the decompiler exists and the dispatcher pointer is - ready to use. + @return: true if the decompiler exists and is compatible with your + plugin Help on function install_hexrays_callback in module ida_hexrays: @@ -25628,6 +27652,19 @@ Help on function lnot in module ida_hexrays: lnot(e) +Help on function locate_lvar in module ida_hexrays: + +locate_lvar(*args) + Find a variable by name. + + locate_lvar(out, func_ea, varname) -> bool + @param out: output buffer for the variable locator (C++: + lvar_locator_t *) + @param func_ea: function start address (C++: ea_t) + @param varname: variable name (C++: const char *) + @return: success Since VARNAME is not always enough to find the + variable, it may decompile the function. + Help on class lvar_locator_t in module ida_hexrays: class lvar_locator_t(__builtin__.object) @@ -26018,6 +28055,9 @@ class lvar_saved_info_t(__builtin__.object) | clr_noptr_lvar(self, *args) | clr_noptr_lvar(self) | + | clr_unused_lvar(self, *args) + | clr_unused_lvar(self) + | | has_info(self, *args) | has_info(self) -> bool | @@ -26033,6 +28073,9 @@ class lvar_saved_info_t(__builtin__.object) | is_noptr_lvar(self, *args) | is_noptr_lvar(self) -> bool | + | is_unused_lvar(self, *args) + | is_unused_lvar(self) -> bool + | | set_forced_lvar(self, *args) | set_forced_lvar(self) | @@ -26045,6 +28088,9 @@ class lvar_saved_info_t(__builtin__.object) | set_noptr_lvar(self, *args) | set_noptr_lvar(self) | + | set_unused_lvar(self, *args) + | set_unused_lvar(self) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -26267,7 +28313,8 @@ class lvar_t(lvar_locator_t) | append_list(self, *args) | Append local variable to mlist. | - | append_list(self, lst, pad_if_scattered=False) + | append_list(self, mba, lst, pad_if_scattered=False) + | @param mba: ptr to the current mba_t (C++: const mba_t *) | @param lst: list to append to (C++: mlist_t *) | @param pad_if_scattered (C++: bool) | @@ -26280,6 +28327,9 @@ class lvar_t(lvar_locator_t) | clr_automapped(self, *args) | clr_automapped(self) | + | clr_decl_unused(self, *args) + | clr_decl_unused(self) + | | clr_dummy_arg(self, *args) | clr_dummy_arg(self) | @@ -26344,6 +28394,9 @@ class lvar_t(lvar_locator_t) | has_regname(self, *args) | Has a register name? (like _RAX) | + | in_asm(self, *args) + | Is variable used in an instruction translated into __asm? + | | is_aliasable(self, *args) | Is the variable aliasable? | @@ -26355,6 +28408,9 @@ class lvar_t(lvar_locator_t) | is_automapped(self, *args) | Was the variable automatically mapped to another variable? | + | is_decl_unused(self, *args) + | Was declared as __unused by the user? See CVAR_UNUSED. + | | is_dummy_arg(self, *args) | Is a dummy argument (added to fill a hole in the argument list) | @@ -26379,6 +28435,9 @@ class lvar_t(lvar_locator_t) | set_automapped(self, *args) | set_automapped(self) | + | set_decl_unused(self, *args) + | set_decl_unused(self) + | | set_dummy_arg(self, *args) | set_dummy_arg(self) | @@ -26629,6 +28688,9 @@ class lvar_uservec_t(__builtin__.object) | clear(self, *args) | clear(self) | + | empty(self, *args) + | empty(self) -> bool + | | find_info(self, *args) | find saved user settings for given var | @@ -27129,7 +29191,7 @@ class mba_t(__builtin__.object) | | combine_blocks(self, *args) | Combine blocks. This function merges blocks constituting linear flow. - | It calls 'remove_empty_blocks()' as well. + | It calls 'remove_empty_and_unreachable_blocks()' as well. | | common_stkvars_stkargs(self, *args) | common_stkvars_stkargs(self) -> bool @@ -27146,6 +29208,23 @@ class mba_t(__builtin__.object) | (C++: int) | @return: pointer to the new copy | + | create_helper_call(self, *args) + | Create a call of a helper function. + | + | create_helper_call(self, ea, helper, rettype=None, callargs=None, out=None) -> minsn_t + | @param ea: The desired address of the instruction (C++: ea_t) + | @param helper: The helper name (C++: const char *) + | @param rettype: The return type (NULL or empty type means 'void') + | (C++: const tinfo_t *) + | @param callargs: The helper arguments (NULL-no arguments) (C++: const + | mcallargs_t *) + | @param out: The operand where the call result should be stored. If + | this argument is not NULL, "mov helper_call(), out" will + | be generated. Otherwise "call helper()" will be generated. + | Note: the size of this operand must be equal to the + | RETTYPE size (C++: const mop_t *) + | @return: pointer to the created instruction or NULL if error + | | deleted_pairs(self, *args) | deleted_pairs(self) -> bool | @@ -27272,6 +29351,9 @@ class mba_t(__builtin__.object) | has_passregs(self, *args) | has_passregs(self) -> bool | + | has_stack_retval(self, *args) + | has_stack_retval(self) -> bool + | | idaloc2vd(self, *args) | idaloc2vd(self, loc, width) -> vdloc_t | @param loc (C++: const argloc_t &) @@ -27377,8 +29459,9 @@ class mba_t(__builtin__.object) | @return: true if at least one of the other blocks became empty or | unreachable | - | remove_empty_blocks(self, *args) - | Delete all empty blocks. + | remove_empty_and_unreachable_blocks(self, *args) + | Delete all empty and unreachable blocks. Blocks marked with MBL_KEEP + | won't be deleted. | | returns_fpval(self, *args) | returns_fpval(self) -> bool @@ -27398,6 +29481,15 @@ class mba_t(__builtin__.object) | serialize(self, *args) | Serialize mbl array into a sequence of bytes. | + | set_maturity(self, *args) + | Set maturity level. + | + | set_maturity(self, mat) -> bool + | @param mat (C++: mba_maturity_t) + | @return: true if it is time to stop analysis Plugins may use this + | function to skip some parts of the analysis. The maturity + | level cannot be decreased. + | | set_mba_flags(self, *args) | set_mba_flags(self, f) | @param f (C++: int) @@ -27497,6 +29589,9 @@ class mba_t(__builtin__.object) | consumed_argregs | mba_t_consumed_argregs_get(self) -> rlist_t | + | deprecated_idb_node + | mba_t_deprecated_idb_node_get(self) -> netnode + | | entry_ea | mba_t_entry_ea_get(self) -> ea_t | @@ -27531,7 +29626,6 @@ class mba_t(__builtin__.object) | mba_t_gotoff_stkvars_get(self) -> ivlset_t | | idb_node - | mba_t_idb_node_get(self) -> netnode | | idb_spoiled | mba_t_idb_spoiled_get(self) -> reginfovec_t @@ -27640,6 +29734,7 @@ class mbl_graph_t(simple_graph_t) | Method resolution order: | mbl_graph_t | simple_graph_t + | ida_gdl.gdl_graph_t | __builtin__.object | | Methods defined here: @@ -27710,17 +29805,121 @@ class mbl_graph_t(simple_graph_t) | ---------------------------------------------------------------------- | Data descriptors inherited from simple_graph_t: | + | colored_gdl_edges + | simple_graph_t_colored_gdl_edges_get(self) -> bool + | + | title + | simple_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | __disown__(self) + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined) | - | colored_gdl_edges - | simple_graph_t_colored_gdl_edges_get(self) -> bool + | ---------------------------------------------------------------------- + | Data and other attributes inherited from ida_gdl.gdl_graph_t: | - | title - | simple_graph_t_title_get(self) -> qstring * + | __swig_destroy__ = + | delete_gdl_graph_t(self) Help on class mblock_t in module ida_hexrays: @@ -27907,7 +30106,7 @@ class mblock_t(__builtin__.object) | @return: zero or the value returned by mmv.visit_mop() | | get_reginsn_qty(self, *args) - | Calculate number of register instructions in the block. Assertions are + | Calculate number of regular instructions in the block. Assertions are | skipped by this function. | | get_valranges(self, *args) @@ -28229,6 +30428,9 @@ class mcallarg_t(mop_t) | ea | mcallarg_t_ea_get(self) -> ea_t | + | flags + | mcallarg_t_flags_get(self) -> uint32 + | | name | mcallarg_t_name_get(self) -> qstring * | @@ -28270,6 +30472,8 @@ class mcallarg_t(mop_t) | | _ensure_no_t(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_a(self, *args) | _get_a(self) -> mop_addr_t | @@ -28574,7 +30778,8 @@ class mcallarg_t(mop_t) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) @@ -28721,6 +30926,9 @@ class mcallarg_t(mop_t) | is_one(self, *args) | is_one(self) -> bool | + | is_pcval(self, *args) + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) | is_positive_constant(self) -> bool | @@ -28868,6 +31076,11 @@ class mcallarg_t(mop_t) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) | Is it possible for the operand to use aliased memory? | @@ -28927,6 +31140,10 @@ class mcallarg_t(mop_t) | unsigned_value(self, *args) | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -29428,6 +31645,8 @@ class minsn_t(__builtin__.object) | | _ensure_no_obj(self, o, attr, attr_is_acquired) | + | _ensure_ownership_transferrable(self, v) + | | _make_nop(self, *args) | Convert instruction to nop. This function erases all info but the | prev/next fields. In most cases it is better to use @@ -29649,9 +31868,8 @@ class minsn_t(__builtin__.object) | is_noret_call(self, *args) | Is a non-returing call? | - | is_noret_call(self, ignore_noret_icall=False) -> bool - | @param ignore_noret_icall: if set, indirect calls to noret functions - | will return false (C++: bool) + | is_noret_call(self, flags=0) -> bool + | @param flags (C++: int) | | is_optional(self, *args) | is_optional(self) -> bool @@ -30186,7 +32404,7 @@ modify_user_lvar_info(*args) Modify saved local variable settings of one variable. modify_user_lvar_info(func_ea, mli_flags, info) -> bool - @param func_ea (C++: ea_t) + @param func_ea: function start address (C++: ea_t) @param mli_flags: bits that specify which attrs defined by INFO are to be set (C++: uint) @param info: local variable info attrs (C++: const lvar_saved_info_t @@ -30275,6 +32493,8 @@ class mop_addr_t(mop_t) | | _ensure_no_t(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_a(self, *args) | _get_a(self) -> mop_addr_t | @@ -30583,7 +32803,8 @@ class mop_addr_t(mop_t) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) @@ -30733,6 +32954,9 @@ class mop_addr_t(mop_t) | is_one(self, *args) | is_one(self) -> bool | + | is_pcval(self, *args) + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) | is_positive_constant(self) -> bool | @@ -30876,6 +33100,11 @@ class mop_addr_t(mop_t) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) | Is it possible for the operand to use aliased memory? | @@ -30935,6 +33164,10 @@ class mop_addr_t(mop_t) | unsigned_value(self, *args) | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -31079,6 +33312,8 @@ class mop_t(__builtin__.object) | | _ensure_no_t(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_a(self, *args) | _get_a(self) -> mop_addr_t | @@ -31387,7 +33622,8 @@ class mop_t(__builtin__.object) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) @@ -31537,6 +33773,9 @@ class mop_t(__builtin__.object) | is_one(self, *args) | is_one(self) -> bool | + | is_pcval(self, *args) + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) | is_positive_constant(self) -> bool | @@ -31684,6 +33923,11 @@ class mop_t(__builtin__.object) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) | Is it possible for the operand to use aliased memory? | @@ -31743,6 +33987,10 @@ class mop_t(__builtin__.object) | unsigned_value(self, *args) | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -32316,51 +34564,6 @@ class operand_locator_t(__builtin__.object) | __swig_destroy__ = | delete_operand_locator_t(self) -Help on class operator_info_t in module ida_hexrays: - -class operator_info_t(__builtin__.object) - | Proxy of C++ operator_info_t class. - | - | Methods defined here: - | - | __init__(self, *args) - | __init__(self) -> operator_info_t - | - | __repr__ = _swig_repr(self) - | - | ---------------------------------------------------------------------- - | Data descriptors defined here: - | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | - | fixtype - | operator_info_t_fixtype_get(self) -> uchar - | - | flags - | operator_info_t_flags_get(self) -> uchar - | - | precedence - | operator_info_t_precedence_get(self) -> uchar - | - | text - | operator_info_t_text_get(self) -> char const * - | - | thisown - | The membership flag - | - | valency - | operator_info_t_valency_get(self) -> uchar - | - | ---------------------------------------------------------------------- - | Data and other attributes defined here: - | - | __swig_destroy__ = - | delete_operator_info_t(self) - Help on class optblock_t in module ida_hexrays: class optblock_t(__builtin__.object) @@ -33439,6 +35642,18 @@ Help on function remove_hexrays_callback in module ida_hexrays: remove_hexrays_callback(callback) Deprecated. Please use Hexrays_Hooks instead +Help on function rename_lvar in module ida_hexrays: + +rename_lvar(*args) + Rename a local variable. + + rename_lvar(func_ea, oldname, newname) -> bool + @param func_ea: function start address (C++: ea_t) + @param oldname: old name of the variable (C++: const char *) + @param newname: new name of the variable (C++: const char *) + @return: success This is a convenience function. For bulk renaming + consider using modify_user_lvars. + Help on function restore_user_cmts in module ida_hexrays: restore_user_cmts(*args) @@ -33809,10 +36024,10 @@ class scif_t(vdloc_t) | Methods defined here: | | __init__(self, *args) - | __init__(self, _mba, n, tif) -> scif_t + | __init__(self, _mba, tif, n=None) -> scif_t | _mba: mba_t * - | n: qstring * | tif: tinfo_t * + | n: qstring * | | __repr__ = _swig_repr(self) | @@ -33983,6 +36198,9 @@ class scif_t(vdloc_t) | has_stkoff(self, *args) | TRUE if argloc has a stack part. | + | in_stack(self, *args) + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) | See 'ALOC_NONE' . | @@ -34166,9 +36384,14 @@ set_type(*args) Help on class simple_graph_t in module ida_hexrays: -class simple_graph_t(__builtin__.object) +class simple_graph_t(ida_gdl.gdl_graph_t) | Proxy of C++ simple_graph_t class. | + | Method resolution order: + | simple_graph_t + | ida_gdl.gdl_graph_t + | __builtin__.object + | | Methods defined here: | | __init__(self, *args, **kwargs) @@ -34178,12 +36401,6 @@ class simple_graph_t(__builtin__.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | colored_gdl_edges | simple_graph_t_colored_gdl_edges_get(self) -> bool | @@ -34192,6 +36409,116 @@ class simple_graph_t(__builtin__.object) | | title | simple_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | __disown__(self) + | + | begin(self, *args) + | begin(self) -> node_iterator + | + | edge(self, *args) + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> node_iterator + | + | entry(self, *args) + | entry(self) -> int + | + | exists(self, *args) + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) + | exit(self) -> int + | + | front(self, *args) + | front(self) -> int + | + | get_edge_color(self, *args) + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) + | node_qty(self) -> int + | + | npred(self, *args) + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) + | size(self) -> int + | + | succ(self, *args) + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | ---------------------------------------------------------------------- + | Data and other attributes inherited from ida_gdl.gdl_graph_t: + | + | __swig_destroy__ = + | delete_gdl_graph_t(self) Help on class stkvar_ref_t in module ida_hexrays: @@ -36704,6 +39031,9 @@ class var_ref_t(__builtin__.object) | compare(self, r) -> int | r: var_ref_t const & | + | getv(self, *args) + | getv(self) -> lvar_t + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -37106,6 +39436,9 @@ class vdloc_t(ida_typeinf.argloc_t) | has_stkoff(self, *args) | TRUE if argloc has a stack part. | + | in_stack(self, *args) + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) | See 'ALOC_NONE' . | @@ -37216,9 +39549,9 @@ class vdui_t(__builtin__.object) | | calc_cmt_type(self, *args) | Check if the specified line can have a comment. Due to the coordinate - | system for comments (http://www.hexblog.com/?p=60) some function lines - | cannot have comments. This function checks if a comment can be - | attached to the specified line. + | system for comments: (https://www.hex-rays.com/blog/coordinate-system- + | for-hex-rays) some function lines cannot have comments. This function + | checks if a comment can be attached to the specified line. | | calc_cmt_type(self, lnnum, cmttype) -> cmt_type_t | @param lnnum: line number (0 based) (C++: size_t) @@ -37366,13 +39699,13 @@ class vdui_t(__builtin__.object) | | rename_lvar(self, *args) | Rename local variable. This function permanently renames a local - | variable. + | variable.::rename_lvar() | | rename_lvar(self, v, name, is_user_name) -> bool | @param v: pointer to local variable (C++: lvar_t *) | @param name: new variable name (C++: const char *) - | @param is_user_name: use true to save the new name into the database - | (C++: bool) + | @param is_user_name: use true to save the new name into the database. + | use false to delete the saved name. (C++: bool) | @return: false if failed | | rename_strmem(self, *args) @@ -38060,7 +40393,7 @@ do not use function frame info (only snippet mode) ida_hexrays.DECOMP_NO_HIDE """ -do not hide display waitbox. see close_hexrays_waitboxes() +do not close display waitbox. see close_hexrays_waitboxes() """ ida_hexrays.DECOMP_NO_WAIT @@ -38153,6 +40486,11 @@ ida_hexrays.FCI_DEAD some return registers were determined dead """ +ida_hexrays.FCI_EXPLOCS +""" +all arglocs are specified explicitly +""" + ida_hexrays.FCI_FINAL """ call type is final, should not be changed @@ -38450,6 +40788,11 @@ ida_hexrays.LVINF_NOPTR variable type should not be a pointer """ +ida_hexrays.LVINF_UNUSED +""" +unused argument, corresponds to CVAR_UNUSED +""" + ida_hexrays.MBA_ASRPROP """ assertion have been propagated @@ -38640,6 +40983,11 @@ ida_hexrays.MBL_INCONST inconsistent lists: we are building them """ +ida_hexrays.MBL_KEEP +""" +do not remove even if unreachable +""" + ida_hexrays.MBL_LIST """ use/def lists are ready (not dirty) @@ -38767,7 +41115,9 @@ reuse existing window, only if the ida_hexrays.OPROP_CCFLAGS """ -condition codes register value +else: value of a condition code register (like mr_cc) + +mop_n: a pc-relative value """ ida_hexrays.OPROP_FLOAT @@ -38998,6 +41348,34 @@ class compiler_info_t(__builtin__.object) | __swig_destroy__ = | delete_compiler_info_t(self) +Help on function delinf in module ida_ida: + +delinf(*args) + undefine a program specific information + + delinf(tag) -> bool + @param tag: one of inftag_t constants (C++: inftag_t) + @return: success + +Help on function get_dbctx_id in module ida_ida: + +get_dbctx_id(*args) + Get the current database context ID + +Help on function get_dbctx_qty in module ida_ida: + +get_dbctx_qty(*args) + Get number of database contexts + +Help on function getinf_str in module ida_ida: + +getinf_str(*args) + get program specific information (a non-scalar value) + + getinf_str(tag) -> str + @param tag: one of inftag_t constants (C++: inftag_t) + @return: number of bytes stored in the buffer (<0 - not defined) + Help on class idainfo in module ida_ida: class idainfo(__builtin__.object) @@ -39339,10 +41717,9 @@ Help on function inf_get_pack_mode in module ida_ida: inf_get_pack_mode(*args) inf_get_pack_mode() -> int -Help on function inf_is_32bit in module ida_ida: +Help on function idainfo_is_32bit in module ida_ida: -inf_is_32bit(*args) - inf_is_32bit() -> bool +idainfo_is_32bit() Help on function inf_is_64bit in module ida_ida: @@ -39701,6 +42078,11 @@ Help on function inf_get_af_low in module ida_ida: inf_get_af_low(*args) Get/set low/high 16bit halves of inf.af. +Help on function inf_get_app_bitness in module ida_ida: + +inf_get_app_bitness(*args) + inf_get_app_bitness() -> uint + Help on function inf_get_appcall_options in module ida_ida: inf_get_appcall_options(*args) @@ -40069,6 +42451,21 @@ inf_inc_database_change_count(*args) inf_inc_database_change_count(cnt=1) @param cnt (C++: int) +Help on function inf_is_16bit in module ida_ida: + +inf_is_16bit(*args) + inf_is_16bit() -> bool + +Help on function inf_is_32bit_exactly in module ida_ida: + +inf_is_32bit_exactly(*args) + inf_is_32bit_exactly() -> bool + +Help on function inf_is_32bit_or_higher in module ida_ida: + +inf_is_32bit_or_higher(*args) + inf_is_32bit_or_higher() -> bool + Help on function inf_is_limiter_empty in module ida_ida: inf_is_limiter_empty(*args) @@ -41237,6 +43634,15 @@ Help on function in module ida_ida: lambda *args +Help on function switch_dbctx in module ida_ida: + +switch_dbctx(*args) + Switch to the database with the provided context ID + + switch_dbctx(idx) -> dbctx_t * + @param idx: the index of the database to switch to (C++: size_t) + @return: the current dbctx_t instance or nullptr + Help on function to_ea in module ida_ida: to_ea(*args) @@ -41275,7 +43681,8 @@ ida_ida.ABI_HUGEARG_ALIGN """ use natural type alignment for an argument even if its alignment exceeds double native word size (the default is to use double word -max). e.g. if this bit is set, __int128 has 16-byte alignment +max). e.g. if this bit is set, __int128 has 16-byte alignment. this +bit is not used by ida yet """ ida_ida.ABI_MAP_STKARGS @@ -41617,7 +44024,7 @@ pack the database? ida_ida.LFLG_PC_FLAT """ -32-bit program? +32-bit program (or higher)? """ ida_ida.LFLG_PC_FPP @@ -42302,7 +44709,7 @@ Help on function as_cstr in module ida_idaapi: as_cstr(val) Returns a C str from the passed value. The passed value can be of type refclass (returned by a call to buffer() or byref()) - It scans for the first and returns the string value up to that point. + It scans for the first \x00 and returns the string value up to that point. Help on function as_int32 in module ida_idaapi: @@ -43256,9 +45663,9 @@ class call_stack_info_t(__builtin__.object) | __swig_destroy__ = | delete_call_stack_info_t(self) -Help on class call_stack_t in module ida_idd: +Help on class call_stack_info_vec_t in module ida_idd: -class call_stack_t(__builtin__.object) +class call_stack_info_vec_t(__builtin__.object) | Proxy of C++ qvector< call_stack_info_t > class. | | Methods defined here: @@ -43272,7 +45679,7 @@ class call_stack_t(__builtin__.object) | i: size_t | | __init__(self, *args) - | __init__(self) -> call_stack_t + | __init__(self) -> call_stack_info_vec_t | x: qvector< call_stack_info_t > const & | | __iter__ = _bounded_getitem_iterator(self) @@ -43413,8 +45820,178 @@ class call_stack_t(__builtin__.object) | ---------------------------------------------------------------------- | Data and other attributes defined here: | + | __swig_destroy__ = + | delete_call_stack_info_vec_t(self) + +Help on class call_stack_t in module ida_idd: + +class call_stack_t(call_stack_info_vec_t) + | Proxy of C++ call_stack_t class. + | + | Method resolution order: + | call_stack_t + | call_stack_info_vec_t + | __builtin__.object + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> call_stack_t + | + | __repr__ = _swig_repr(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | | __swig_destroy__ = | delete_call_stack_t(self) + | + | ---------------------------------------------------------------------- + | Methods inherited from call_stack_info_vec_t: + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: qvector< call_stack_info_t > const & + | + | __getitem__(self, *args) + | __getitem__(self, i) -> call_stack_info_t + | i: size_t + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: qvector< call_stack_info_t > const & + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: call_stack_info_t const & + | + | _del(self, *args) + | _del(self, x) -> bool + | x: call_stack_info_t const & + | + | add_unique(self, *args) + | add_unique(self, x) -> bool + | x: call_stack_info_t const & + | + | at(self, *args) + | at(self, _idx) -> call_stack_info_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) + | begin(self) -> call_stack_info_t + | begin(self) -> call_stack_info_t + | + | capacity(self, *args) + | capacity(self) -> size_t + | + | clear(self, *args) + | clear(self) + | + | empty(self, *args) + | empty(self) -> bool + | + | end(self, *args) + | end(self) -> call_stack_info_t + | end(self) -> call_stack_info_t + | + | erase(self, *args) + | erase(self, it) -> call_stack_info_t + | it: qvector< call_stack_info_t >::iterator + | + | + | erase(self, first, last) -> call_stack_info_t + | first: qvector< call_stack_info_t >::iterator + | last: qvector< call_stack_info_t >::iterator + | + | extract(self, *args) + | extract(self) -> call_stack_info_t + | + | find(self, *args) + | find(self, x) -> call_stack_info_t + | x: call_stack_info_t const & + | + | + | find(self, x) -> call_stack_info_t + | x: call_stack_info_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) + | grow(self, x=call_stack_info_t()) + | x: call_stack_info_t const & + | + | has(self, *args) + | has(self, x) -> bool + | x: call_stack_info_t const & + | + | inject(self, *args) + | inject(self, s, len) + | s: call_stack_info_t * + | len: size_t + | + | insert(self, *args) + | insert(self, it, x) -> call_stack_info_t + | it: qvector< call_stack_info_t >::iterator + | x: call_stack_info_t const & + | + | pop_back(self, *args) + | pop_back(self) + | + | push_back(self, *args) + | push_back(self, x) + | x: call_stack_info_t const & + | + | qclear(self, *args) + | qclear(self) + | + | reserve(self, *args) + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) + | resize(self, _newsize, x) + | _newsize: size_t + | x: call_stack_info_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) + | size(self) -> size_t + | + | swap(self, *args) + | swap(self, r) + | r: qvector< call_stack_info_t > & + | + | truncate(self, *args) + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from call_stack_info_vec_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on function can_exc_continue in module ida_idd: @@ -44527,7 +47104,7 @@ class regval_t(__builtin__.object) | | set_float(self, *args) | set_float(self, x) - | x: ushort const * + | x: fpvalue_t const & | | set_int(self, *args) | set_int(self, x) @@ -44552,7 +47129,7 @@ class regval_t(__builtin__.object) | list of weak references to the object (if defined) | | fval - | regval_t_fval_get(self) -> uint16 [6] + | regval_t_fval_get(self) -> fpvalue_t | | ival | regval_t_ival_get(self) -> uint64 @@ -44889,11 +47466,12 @@ class IDB_Hooks(__builtin__.object) | bookmark_changed(self, *args) | Boomarked position changed. | - | bookmark_changed(self, index, pos, desc) + | bookmark_changed(self, index, pos, desc, operation) | @param index (C++: uint32) | @param pos (C++: const lochist_entry_t *) - | @param desc: if desc==NULL, then the bookmark was deleted. (C++: - | const char *) + | @param desc (C++: const char *) + | @param operation: 0-added, 1-updated, 2-deleted if desc==NULL, then + | the bookmark was deleted. (C++: int) | | byte_patched(self, *args) | A byte has been patched. @@ -45032,6 +47610,9 @@ class IDB_Hooks(__builtin__.object) | compiler_changed(self, *args) | The kernel has changed the compiler information. (\inf{cc} structure; | 'get_abi_name' ) + | + | compiler_changed(self, adjust_inf_fields) + | @param adjust_inf_fields: may change inf fields? (C++: bool) | | deleting_enum(self, *args) | An enum type is to be deleted. @@ -45143,6 +47724,13 @@ class IDB_Hooks(__builtin__.object) | @param dt (C++: dirtree_t *) | @param inode (C++: inode_t) | + | dirtree_segm_moved(self, *args) + | Dirtree: inodes were changed due to a segment movement or a program + | rebasing + | + | dirtree_segm_moved(self, dt) + | @param dt (C++: dirtree_t *) + | | enum_bf_changed(self, *args) | An enum type 'bitfield' attribute has been changed. | @@ -45343,10 +47931,11 @@ class IDB_Hooks(__builtin__.object) | renamed(self, *args) | The kernel has renamed a byte. See also the \idpcode{rename} event | - | renamed(self, ea, new_name, local_name) + | renamed(self, ea, new_name, local_name, old_name) | @param ea (C++: ea_t) - | @param new_name (C++: const char *) + | @param new_name: can be nullptr (C++: const char *) | @param local_name (C++: bool) + | @param old_name: can be nullptr (C++: const char *) | | renaming_enum(self, *args) | An enum or enum member is to be renamed. @@ -45891,7 +48480,7 @@ class IDP_Hooks(__builtin__.object) | @param to (C++: ea_t) | @param may_define (C++: bool) | @param code_ea (C++: ea_t *) - | @retval: <0 - cancel dref analysis + | @retval: <0 - failed dref analysis, >0 done dref analysis | @retval: 0 - not implemented or continue | | ev_create_flat_group(self, *args) @@ -45911,6 +48500,14 @@ class IDP_Hooks(__builtin__.object) | @retval: 1 - ok | @retval: 0 - not implemented | + | ev_create_merge_handlers(self, *args) + | Create merge handlers, if needed + | + | ev_create_merge_handlers(self, md) -> int + | @param md: This event is generated immediately after opening idbs. + | (C++: merge_data_t *) + | @return: must be 0 + | | ev_create_switch_xrefs(self, *args) | Create xrefs for a custom jump table. | @@ -46135,8 +48732,8 @@ class IDP_Hooks(__builtin__.object) | underscore | | ev_get_abi_info(self, abi_names, abi_opts, comp) -> int - | @param abi_names: - all possible ABis each in form abiname- - | opt1-opt2-... (C++: qstrvec_t *) + | @param abi_names: - all possible ABis each in form + | abiname-opt1-opt2-... (C++: qstrvec_t *) | @param abi_opts: - array of all possible options in form | "opt:description" or opt:hint-line#description (C++: | qstrvec_t *) @@ -46370,6 +48967,19 @@ class IDP_Hooks(__builtin__.object) | @retval: -1 - no | @retval: 0 - not implemented or not instruction | + | ev_is_control_flow_guard(self, *args) + | Detect if an instruction is a "thunk call" to a flow guard function + | (equivalent to call reg/return/nop) + | + | ev_is_control_flow_guard(self, p_reg, insn) -> int + | @param p_reg: indirect register number, may be -1 (C++: int *) + | @param insn: call/jump instruction (C++: const insn_t *) + | @retval: -1 - no thunk detected + | @retval: 1 - indirect call + | @retval: 2 - security check routine call (NOP) + | @retval: 3 - return thunk + | @retval: 0 - not implemented + | | ev_is_far_jump(self, *args) | is indirect far jump or call instruction? meaningful only if the | processor has 'near' and 'far' reference types @@ -46391,14 +49001,7 @@ class IDP_Hooks(__builtin__.object) | @retval: 2 - yes | | ev_is_insn_table_jump(self, *args) - | Determine if instruction is a table jump or call. If 'CF_JUMP' bit - | cannot describe all kinds of table jumps, please define this callback. - | It will be called for insns with 'CF_JUMP' bit set. - | - | ev_is_insn_table_jump(self, insn) -> int - | @param insn: the instruction (C++: const insn_t*) - | @retval: 0 - yes - | @retval: <0 - no + | Reserved. | | ev_is_jump_func(self, *args) | Is the function a trivial "jump" function?. @@ -46461,7 +49064,8 @@ class IDP_Hooks(__builtin__.object) | @param insn: instruction possibly belonging to a switch (C++: const | insn_t *) | @retval: 1 - switch is found, 'si' is filled - | @retval: 0 - no switch found or not implemented + | @retval: -1 - no switch found + | @retval: 0 - not implemented | | ev_last_cb_before_loader(self, *args) | ev_last_cb_before_loader(self) -> int @@ -46679,8 +49283,10 @@ class IDP_Hooks(__builtin__.object) | Floating point -> IEEE conversion | | ev_realcvt(self, m, e, swt) -> int - | @param m: pointer to data (C++: void *) - | @param e: internal IEEE format data (C++: uint16 *) + | @param m: ptr to processor-specific floating point value (C++: void + | *) + | @param e: IDA representation of a floating point value (C++: + | fpvalue_t *) | @param swt: operation (see realcvt() in ieee.h) (C++: uint16) | @retval: 0 - not implemented | @retval: 1 - ok @@ -46791,6 +49397,28 @@ class IDP_Hooks(__builtin__.object) | @retval: 1 - do not delete srranges at the item end | @retval: 0 - srranges can be deleted | + | ev_update_call_stack(self, *args) + | Calculate the call stack trace for the given thread. This callback is + | invoked when the process is suspended and should fill the 'trace' + | object with the information about the current call stack. Note that + | this callback is NOT invoked if the current debugger backend + | implements stack tracing via + | debugger_t::event_t::ev_update_call_stack. The debugger-specific + | algorithm takes priority. Implementing this callback in the processor + | module is useful when multiple debugging platforms follow similar + | patterns, and thus the same processor-specific algorithm can be used + | for different platforms. + | + | ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int + | @param stack: result (C++: call_stack_t *) + | @param tid: thread id (C++: int) + | @param getreg: function to get register values (C++: + | processor_t::regval_getter_t *) + | @param regvalues: register values array (C++: const regval_t *) + | @retval: 1 - ok + | @retval: -1 - failed + | @retval: 0 - unimplemented + | | ev_use_arg_types(self, *args) | Use information about callee arguments. | @@ -46996,11 +49624,12 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | bookmark_changed(self, *args) | Boomarked position changed. | - | bookmark_changed(self, index, pos, desc) + | bookmark_changed(self, index, pos, desc, operation) | @param index (C++: uint32) | @param pos (C++: const lochist_entry_t *) - | @param desc: if desc==NULL, then the bookmark was deleted. (C++: - | const char *) + | @param desc (C++: const char *) + | @param operation: 0-added, 1-updated, 2-deleted if desc==NULL, then + | the bookmark was deleted. (C++: int) | | byte_patched(self, *args) | A byte has been patched. @@ -47139,6 +49768,9 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | compiler_changed(self, *args) | The kernel has changed the compiler information. (\inf{cc} structure; | 'get_abi_name' ) + | + | compiler_changed(self, adjust_inf_fields) + | @param adjust_inf_fields: may change inf fields? (C++: bool) | | deleting_enum(self, *args) | An enum type is to be deleted. @@ -47250,6 +49882,13 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | @param dt (C++: dirtree_t *) | @param inode (C++: inode_t) | + | dirtree_segm_moved(self, *args) + | Dirtree: inodes were changed due to a segment movement or a program + | rebasing + | + | dirtree_segm_moved(self, dt) + | @param dt (C++: dirtree_t *) + | | enum_bf_changed(self, *args) | An enum type 'bitfield' attribute has been changed. | @@ -47450,10 +50089,11 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | renamed(self, *args) | The kernel has renamed a byte. See also the \idpcode{rename} event | - | renamed(self, ea, new_name, local_name) + | renamed(self, ea, new_name, local_name, old_name) | @param ea (C++: ea_t) - | @param new_name (C++: const char *) + | @param new_name: can be nullptr (C++: const char *) | @param local_name (C++: bool) + | @param old_name: can be nullptr (C++: const char *) | | renaming_enum(self, *args) | An enum or enum member is to be renamed. @@ -48700,6 +51340,14 @@ class processor_t(IDP_Hooks) | @param bitness (C++: int) | @param dataseg_sel: return value is ignored (C++: sel_t) | + | ev_create_merge_handlers(self, *args) + | Create merge handlers, if needed + | + | ev_create_merge_handlers(self, md) -> int + | @param md: This event is generated immediately after opening idbs. + | (C++: merge_data_t *) + | @return: must be 0 + | | ev_decorate_name(self, *args) | Decorate/undecorate a C symbol name. | @@ -48844,8 +51492,8 @@ class processor_t(IDP_Hooks) | underscore | | ev_get_abi_info(self, abi_names, abi_opts, comp) -> int - | @param abi_names: - all possible ABis each in form abiname- - | opt1-opt2-... (C++: qstrvec_t *) + | @param abi_names: - all possible ABis each in form + | abiname-opt1-opt2-... (C++: qstrvec_t *) | @param abi_opts: - array of all possible options in form | "opt:description" or opt:hint-line#description (C++: | qstrvec_t *) @@ -49014,6 +51662,19 @@ class processor_t(IDP_Hooks) | @retval: -1 - no | @retval: 0 - not implemented or not instruction | + | ev_is_control_flow_guard(self, *args) + | Detect if an instruction is a "thunk call" to a flow guard function + | (equivalent to call reg/return/nop) + | + | ev_is_control_flow_guard(self, p_reg, insn) -> int + | @param p_reg: indirect register number, may be -1 (C++: int *) + | @param insn: call/jump instruction (C++: const insn_t *) + | @retval: -1 - no thunk detected + | @retval: 1 - indirect call + | @retval: 2 - security check routine call (NOP) + | @retval: 3 - return thunk + | @retval: 0 - not implemented + | | ev_is_jump_func(self, *args) | Is the function a trivial "jump" function?. | @@ -49077,8 +51738,10 @@ class processor_t(IDP_Hooks) | Floating point -> IEEE conversion | | ev_realcvt(self, m, e, swt) -> int - | @param m: pointer to data (C++: void *) - | @param e: internal IEEE format data (C++: uint16 *) + | @param m: ptr to processor-specific floating point value (C++: void + | *) + | @param e: IDA representation of a floating point value (C++: + | fpvalue_t *) | @param swt: operation (see realcvt() in ieee.h) (C++: uint16) | @retval: 0 - not implemented | @retval: 1 - ok @@ -49121,6 +51784,28 @@ class processor_t(IDP_Hooks) | ev_term(self, *args) | The IDP module is being unloaded. | + | ev_update_call_stack(self, *args) + | Calculate the call stack trace for the given thread. This callback is + | invoked when the process is suspended and should fill the 'trace' + | object with the information about the current call stack. Note that + | this callback is NOT invoked if the current debugger backend + | implements stack tracing via + | debugger_t::event_t::ev_update_call_stack. The debugger-specific + | algorithm takes priority. Implementing this callback in the processor + | module is useful when multiple debugging platforms follow similar + | patterns, and thus the same processor-specific algorithm can be used + | for different platforms. + | + | ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int + | @param stack: result (C++: call_stack_t *) + | @param tid: thread id (C++: int) + | @param getreg: function to get register values (C++: + | processor_t::regval_getter_t *) + | @param regvalues: register values array (C++: const regval_t *) + | @retval: 1 - ok + | @retval: -1 - failed + | @retval: 0 - unimplemented + | | ev_use_arg_types(self, *args) | Use information about callee arguments. | @@ -50065,11 +52750,6 @@ Custom instruction codes defined by processor extension plugins must be greater than or equal to this """ -ida_idp.HKCB_AUTODEL -""" -automatically delete event listener object after uninstalling it -""" - ida_idp.HKCB_GLOBAL """ is global event listener? if true, the listener will survive database @@ -50348,6 +53028,16 @@ ida_idp.PLFM_PPC PowerPC. """ +ida_idp.PLFM_RISCV +""" +RISC-V. +""" + +ida_idp.PLFM_RL78 +""" +Renesas RL78. +""" + ida_idp.PLFM_S390 """ IBM's S390. @@ -50449,6 +53139,11 @@ ida_idp.PLFM_UNSP SunPlus unSP. """ +ida_idp.PLFM_XTENSA +""" +Tensilica Xtensa. +""" + ida_idp.PLFM_Z8 """ Z8. @@ -50627,6 +53322,316 @@ processor_t::use_regarg_type uses this bit in the return value to indicate that the register value has been spoiled """ === ida_idp EPYDOC INJECTIONS END === +Help on function ecleaz in module ida_ieee: + +ecleaz(*args) + ecleaz(x) + @param x (C++: eNI) + +Help on class fpvalue_shorts_array_t in module ida_ieee: + +class fpvalue_shorts_array_t(__builtin__.object) + | Proxy of C++ wrapped_array_t< uint16,FPVAL_NWORDS > class. + | + | Methods defined here: + | + | __getitem__(self, *args) + | __getitem__(self, i) -> unsigned short const & + | i: size_t + | + | __init__(self, *args) + | __init__(self, data) -> fpvalue_shorts_array_t + | data: unsigned short (&)[FPVAL_NWORDS] + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | i: size_t + | v: unsigned short const & + | + | _get_bytes(self, *args) + | _get_bytes(self) -> bytevec_t + | + | _set_bytes(self, *args) + | _set_bytes(self, bts) + | bts: bytevec_t const & + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | _get_bytes(self) -> bytevec_t + | + | data + | fpvalue_shorts_array_t_data_get(self) -> unsigned short (&)[FPVAL_NWORDS] + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_fpvalue_shorts_array_t(self) + +Help on class fpvalue_t in module ida_ieee: + +class fpvalue_t(__builtin__.object) + | Proxy of C++ fpvalue_t class. + | + | Methods defined here: + | + | __add__(self, *args) + | __add__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __eq__(self, *args) + | __eq__(self, r) -> bool + | r: fpvalue_t const & + | + | __ge__(self, *args) + | __ge__(self, r) -> bool + | r: fpvalue_t const & + | + | __getitem__(self, i) + | + | __gt__(self, *args) + | __gt__(self, r) -> bool + | r: fpvalue_t const & + | + | __init__(self, *args) + | __init__(self) -> fpvalue_t + | in: bytevec12_t const & + | + | __iter__(self) + | + | __le__(self, *args) + | __le__(self, r) -> bool + | r: fpvalue_t const & + | + | __lt__(self, *args) + | __lt__(self, r) -> bool + | r: fpvalue_t const & + | + | __mul__(self, *args) + | __mul__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __ne__(self, *args) + | __ne__(self, r) -> bool + | r: fpvalue_t const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, i, v) + | + | __str__(self, *args) + | __str__(self) -> qstring + | + | __sub__(self, *args) + | __sub__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __truediv__(self, *args) + | __truediv__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | _get_10bytes(self, *args) + | _get_10bytes(self) + | + | _get_bytes(self, *args) + | _get_bytes(self) + | + | _get_float(self, *args) + | _get_float(self) -> double + | + | _get_shorts(self, *args) + | _get_shorts(self) -> fpvalue_shorts_array_t + | + | _set_10bytes(self, *args) + | _set_10bytes(self, _in) + | in: bytevec10_t const & + | + | _set_bytes(self, *args) + | _set_bytes(self, _in) + | in: bytevec12_t const & + | + | _set_float(self, *args) + | _set_float(self, v) + | v: double + | + | assign(self, *args) + | assign(self, r) + | r: fpvalue_t const & + | + | clear(self, *args) + | clear(self) + | + | compare(self, *args) + | compare(self, r) -> int + | r: fpvalue_t const & + | + | eabs(self, *args) + | Calculate absolute value. + | + | fadd(self, *args) + | Arithmetic operations. + | + | fadd(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | fdiv(self, *args) + | fdiv(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | fmul(self, *args) + | fmul(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | from_10bytes(self, *args) + | Conversions for 10-byte floating point values. + | + | from_10bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: const void *) + | + | from_12bytes(self, *args) + | Conversions for 12-byte floating point values. + | + | from_12bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: const void *) + | + | from_int64(self, *args) + | from_int64(self, x) + | @param x (C++: int64) + | + | from_str(self, *args) + | Convert string to IEEE. + | + | from_str(self, p) -> fpvalue_error_t + | p: char const * + | + | from_sval(self, *args) + | Convert integer to IEEE. + | + | from_sval(self, x) + | @param x (C++: sval_t) + | + | from_uint64(self, *args) + | from_uint64(self, x) + | @param x (C++: uint64) + | + | fsub(self, *args) + | fsub(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | get_kind(self, *args) + | Get value kind. + | + | is_negative(self, *args) + | Is negative value? + | + | mul_pow2(self, *args) + | Multiply by a power of 2. + | + | mul_pow2(self, power_of_2) -> fpvalue_error_t + | @param power_of_2 (C++: int32) + | + | negate(self, *args) + | Negate. + | + | to_10bytes(self, *args) + | to_10bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: void *) + | + | to_12bytes(self, *args) + | to_12bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: void *) + | + | to_int64(self, *args) + | to_int64(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | to_str(self, *args) + | Convert IEEE to string. + | + | to_str(self, mode) + | @param mode: broken down into: low byte: number of digits after '.' + | second byte: FPNUM_LENGTH third byte: FPNUM_DIGITS + | (C++: uint) + | + | to_sval(self, *args) + | Convert IEEE to integer (+-0.5 if round) + | + | to_sval(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | to_uint64(self, *args) + | to_uint64(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | _10bytes + | _get_10bytes(self) + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | _get_bytes(self) + | + | float + | _get_float(self) -> double + | + | int64 + | + | shorts + | _get_shorts(self) -> fpvalue_shorts_array_t + | + | sval + | + | thisown + | The membership flag + | + | uint64 + | + | w + | fpvalue_t_w_get(self) -> uint16 [6] + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_fpvalue_t(self) + +=== ida_ieee EPYDOC INJECTIONS === +ida_ieee.E_SPECIAL_EXP +""" +Exponent in 'fpvalue_t' for NaN and Inf. +""" + +ida_ieee.IEEE_EXONE +""" +The exponent of 1.0. +""" +=== ida_ieee EPYDOC INJECTIONS END === Help on class Choose in module ida_kernwin: class Choose(__builtin__.object) @@ -50774,6 +53779,8 @@ class Choose(__builtin__.object) | | CH_FORCE_DEFAULT = 128 | + | CH_HAS_DIFF = 268435456 + | | CH_HAS_DIRTREE = 33554432 | | CH_MODAL = 1 @@ -50802,6 +53809,8 @@ class Choose(__builtin__.object) | | CH_QFTYP_WHOLE_WORDS = 16384 | + | CH_RENAME_IS_EDIT = 262144 + | | CH_RESTORE = 131072 | | EMPTY_CHOOSER = -2 @@ -51566,6 +54575,8 @@ class PluginForm(__builtin__.object) | | WCLS_CLOSE_LATER = 8 | + | WCLS_DELETE_LATER = 8 + | | WCLS_DONT_SAVE_SIZE = 4 | | WCLS_NO_CONTEXT = 2 @@ -51590,6 +54601,8 @@ class PluginForm(__builtin__.object) | | WOPN_DP_RIGHT = 262144 | + | WOPN_DP_SZHINT = 16777216 + | | WOPN_DP_TAB = 4194304 | | WOPN_DP_TAB_BEFORE = 6291456 @@ -51672,11 +54685,22 @@ class UI_Hooks(__builtin__.object) | debugger has been selected false: debugger menu will be | removed (user switched to "No debugger") (C++: bool) | + | desktop_applied(self, *args) + | a desktop has been applied + | + | desktop_applied(self, name, from_idb, type) + | @param name: the desktop name (C++: const char *) + | @param from_idb: the desktop was stored in the IDB (false if it comes + | from the registry) (C++: bool) + | @param type: the desktop type (1-disassembly, 2-debugger, 3-merge) + | (C++: int) + | | destroying_plugmod(self, *args) | The plugin object is about to be destroyed | - | destroying_plugmod(self, plugmod) + | destroying_plugmod(self, plugmod, entry) | @param plugmod (C++: const plugmod_t *) + | @param entry (C++: const plugin_t *) | | destroying_procmod(self, *args) | The processor module is about to be destroyed @@ -51703,18 +54727,23 @@ class UI_Hooks(__builtin__.object) | @param attrs (C++: chooser_item_attrs_t *) | | get_custom_viewer_hint(self, *args) - | ui wants to display a hint for a viewer (idaview or custom). If - | the REG_HINTS_MARKER sequence is found in the returned hints string, - | it will be replaced with the contents of the "regular" hints. If the - | SRCDBG_HINTS_MARKER sequence is found in the returned hints string, it - | will be replaced with the contents of the source-level debugger- - | generated hints. The following keywords might appear at the beginning - | of the returned hints: HIGHLIGHT textwhere text will be highlighted - | CAPTION captioncaption for the hint widget + | ui wants to display a hint for a viewer (idaview or custom). Every + | subscriber is supposed to append the hint lines to HINT and increment + | IMPORTANT_LINES accordingly. Completely overwriting the existing lines + | in HINT is possible but not recommended. If the REG_HINTS_MARKER + | sequence is found in the returned hints string, it will be replaced + | with the contents of the "regular" hints. If the SRCDBG_HINTS_MARKER + | sequence is found in the returned hints string, it will be replaced + | with the contents of the source-level debugger-generated hints. The + | following keywords might appear at the beginning of the returned + | hints: HIGHLIGHT textwhere text will be highlighted CAPTION + | captioncaption for the hint widget | | get_custom_viewer_hint(self, viewer, place) -> PyObject * | @param viewer: viewer (C++: TWidget*) | @param place: current position in the viewer (C++: place_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | get_ea_hint(self, *args) | ui wants to display a simple hint for an address. Use this event @@ -51811,7 +54840,12 @@ class UI_Hooks(__builtin__.object) | | saved(self, *args) | The kernel has saved the database. This callback just informs the - | interface. + | interface. Note that at the time this notification is sent, the + | internal paths are not updated yet, and calling + | get_path(PATH_TYPE_IDB) will return the previous path. + | + | saved(self, path) + | @param path: the database path (C++: const char *) | | saving(self, *args) | The kernel is flushing its buffers to the disk. The user interface @@ -52077,6 +55111,81 @@ _kludge_force_declare_dirtree_t(*args) _kludge_force_declare_dirtree_t(arg1) arg1: dirtree_t const * +Help on class action_ctx_base_cur_sel_t in module ida_kernwin: + +class action_ctx_base_cur_sel_t(__builtin__.object) + | Proxy of C++ action_ctx_base_cur_sel_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> action_ctx_base_cur_sel_t + | + | __repr__ = _swig_repr(self) + | + | reset(self, *args) + | reset(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | _from + | action_ctx_base_cur_sel_t__from_get(self) -> twinpos_t + | + | thisown + | The membership flag + | + | to + | action_ctx_base_cur_sel_t_to_get(self) -> twinpos_t + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = action_ctx_base_source_t + | + | __repr__ = _swig_repr(self) + | + | reset(self, *args) + | reset(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | chooser + | action_ctx_base_source_t_chooser_get(self) -> chooser_base_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_action_ctx_base_source_t(self) + Help on class action_ctx_base_t in module ida_kernwin: class action_ctx_base_t(__builtin__.object) @@ -52146,6 +55255,9 @@ class action_ctx_base_t(__builtin__.object) | cur_seg | action_ctx_base_t_cur_seg_get(self) -> segment_t * | + | cur_sel + | action_ctx_base_t_cur_sel_get(self) -> action_ctx_base_cur_sel_t + | | cur_strmem | action_ctx_base_t_cur_strmem_get(self) -> member_t * | @@ -52176,6 +55288,9 @@ class action_ctx_base_t(__builtin__.object) | regname | action_ctx_base_t_regname_get(self) -> char const * | + | source + | action_ctx_base_t_source_get(self) -> action_ctx_base_source_t + | | thisown | The membership flag | @@ -52759,6 +55874,167 @@ choose_xref(*args) @param to: referenced address (C++: ea_t) @return: ea of selected xref, BADADDR if none selected +Help on class chooser_base_t in module ida_kernwin: + +class chooser_base_t(__builtin__.object) + | Proxy of C++ chooser_base_t class. + | + | Methods defined here: + | + | __init__(self, *args, **kwargs) + | + | __repr__ = _swig_repr(self) + | + | ask_item_attrs(self, *args) + | should chooser generate ui_get_chooser_item_attrs events? + | + | can_del(self, *args) + | can_del(self) -> bool + | + | can_edit(self, *args) + | can_edit(self) -> bool + | + | can_filter(self, *args) + | can_filter(self) -> bool + | + | can_ins(self, *args) + | is an operation allowed? + | + | can_refresh(self, *args) + | can_refresh(self) -> bool + | + | can_sort(self, *args) + | can_sort(self) -> bool + | + | get_builtin_number(self, *args) + | get number of the built-in chooser + | + | get_count(self, *args) + | get the number of elements in the chooser + | + | get_ea(self, *args) + | get an address of an element. Used to set breakpoint in any chooser + | which implements this callback. + | + | get_ea(self, arg2) -> ea_t + | arg2: size_t + | @return: the effective address, BADADDR if the element has no address + | + | get_quick_filter_initial_mode(self, *args) + | get_quick_filter_initial_mode(self) -> int + | + | get_row(self, *args) + | get a description of an element. + | + | get_row(self, n) -> PyObject * + | @param n: element number (0.. get_count() -1) (C++: size_t) + | + | has_diff_capability(self, *args) + | has_diff_capability(self) -> bool + | + | has_dirtree(self, *args) + | has_dirtree(self) -> bool + | + | is_force_default(self, *args) + | should selection of the already opened non-modal chooser be changed? + | + | is_modal(self, *args) + | is choose modal? + | + | is_multi(self, *args) + | is multi-selection allowed? + | + | is_noidb(self, *args) + | can use the chooser before opening the database? + | + | is_quick_filter_visible_initially(self, *args) + | is_quick_filter_visible_initially(self) -> bool + | + | is_same(self, *args) + | do the current and the given objects hold the same data? + | + | is_same(self, other) -> bool + | @param other (C++: const chooser_base_t *) + | + | is_status_bar_hidden(self, *args) + | is_status_bar_hidden(self) -> bool + | + | popup_allowed(self, *args) + | is a popup action allowed? + | + | popup_allowed(self, i) -> bool + | @param i (C++: int) + | + | should_rename_trigger_edit(self, *args) + | should_rename_trigger_edit(self) -> bool + | + | should_restore_geometry(self, *args) + | should_restore_geometry(self) -> bool + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | columns + | chooser_base_t_columns_get(self) -> int + | + | deflt_col + | chooser_base_t_deflt_col_get(self) -> int + | + | header + | chooser_base_t_header_get(self) -> char const *const * + | + | height + | chooser_base_t_height_get(self) -> int + | + | icon + | chooser_base_t_icon_get(self) -> int + | + | popup_names + | chooser_base_t_popup_names_get(self) -> qstring [chooser_base_t::NSTDPOPUPS] + | + | thisown + | The membership flag + | + | title + | chooser_base_t_title_get(self) -> char const * + | + | width + | chooser_base_t_width_get(self) -> int + | + | widths + | chooser_base_t_widths_get(self) -> int const * + | + | x0 + | chooser_base_t_x0_get(self) -> int + | + | x1 + | chooser_base_t_x1_get(self) -> int + | + | y0 + | chooser_base_t_y0_get(self) -> int + | + | y1 + | chooser_base_t_y1_get(self) -> int + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | NSTDPOPUPS = 4 + | + | POPUP_DEL = 1 + | + | POPUP_EDIT = 2 + | + | POPUP_INS = 0 + | + | POPUP_REFRESH = 3 + Help on class chooser_item_attrs_t in module ida_kernwin: class chooser_item_attrs_t(__builtin__.object) @@ -53002,12 +56278,8 @@ del_hotkey(*args) Help on function del_idc_hotkey in module ida_kernwin: del_idc_hotkey(*args) - Delete IDC function hotkey ( 'ui_del_idckey' ). - del_idc_hotkey(hotkey) -> bool - @param hotkey: hotkey name (C++: const char *) - @retval: 1 - ok - @retval: 0 - failed + @param hotkey (C++: const char *) Help on function delete_menu in module ida_kernwin: @@ -53796,7 +57068,10 @@ Help on function get_chooser_obj in module ida_kernwin: get_chooser_obj(*args) Get the underlying object of the specified chooser ( - 'ui_get_chooser_obj' ).This is object is chooser-specific. + 'ui_get_chooser_obj' ).This attemps to find the choser by its title + and, if found, returns the result of calling its + 'chooser_base_t::get_chooser_obj()' method.This is object is chooser- + specific. get_chooser_obj(chooser_caption) -> void * @param chooser_caption (C++: const char *) @@ -54336,6 +57611,14 @@ is_idaq(*args) is_idaq() -> bool Returns True or False depending if IDAPython is hosted by IDAQ +Help on function is_idaview in module ida_kernwin: + +is_idaview(*args) + Is the given custom view an idaview? ( 'ui_is_idaview' ) + + is_idaview(v) -> bool + @param v (C++: TWidget *) + Help on function is_msg_inited in module ida_kernwin: is_msg_inited(*args) @@ -54403,6 +57686,14 @@ jumpto(*args) y: int @return: success +Help on function l_compare2 in module ida_kernwin: + +l_compare2(*args) + l_compare2(t1, t2, ud) -> int + @param t1 (C++: const place_t *) + @param t2 (C++: const place_t *) + @param ud (C++: void *) + Help on class line_rendering_output_entries_refs_t in module ida_kernwin: class line_rendering_output_entries_refs_t(__builtin__.object) @@ -54634,6 +57925,92 @@ class line_rendering_output_entry_t(__builtin__.object) | __swig_destroy__ = linearray_t + | _ud: void * + | + | __repr__ = _swig_repr(self) + | + | beginning(self, *args) + | Are we at the beginning? + | + | down(self, *args) + | Get a line from down direction. place is ok BEFORE + | + | ending(self, *args) + | ending(self) -> bool + | + | get_bg_color(self, *args) + | Get current background color. (the same behavior as with 'get_place()' + | : good before 'down()' and after 'up()' ) + | + | get_dlnnum(self, *args) + | Get default line number. (the same behavior as with 'get_place()' : + | good before 'down()' and after 'up()' ) + | + | get_linecnt(self, *args) + | Get number of lines for the current place. (the same behavior as with + | 'get_place()' : good before 'down()' and after 'up()' ) + | + | get_pfx_color(self, *args) + | Get current prefix color. (the same behavior as with 'get_place()' : + | good before 'down()' and after 'up()' ) + | + | get_place(self, *args) + | Get the current place. If called before 'down()' , then returns place + | of line which will be returned by 'down()' . If called after 'up()' , + | then returns place if line returned by 'up()' . + | + | set_place(self, *args) + | Position the array. This function must be called before calling any + | other member functions. 'linearray_t' doesn't own 'place_t' + | structures. The caller must take care of 'place_t' objects. + | + | set_place(self, new_at) -> int + | @param new_at: new position of the array (C++: const place_t *) + | @return: the delta of lines that the linearray_t had to adjust the + | place by. For example, if the place_t has a lnnum of 5, + | but it turns out, upon generating lines, that the number of + | lines for that particular place is only 2, then 3 will be + | returned. + | + | set_userdata(self, *args) + | Change the user data. + | + | set_userdata(self, userd) + | @param userd (C++: void *) + | + | up(self, *args) + | Get a line from up direction. place is ok AFTER + | + | userdata(self, *args) + | Get pointer to user data. + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_linearray_t(self) + Help on class lines_rendering_input_t in module ida_kernwin: class lines_rendering_input_t(__builtin__.object) @@ -54775,7 +58152,7 @@ msg(*args) Help on function msg_clear in module ida_kernwin: msg_clear(*args) - Clear the "Output window". + Clear the "Output" window. Help on function msg_get_lines in module ida_kernwin: @@ -54790,7 +58167,7 @@ msg_get_lines(*args) Help on function msg_save in module ida_kernwin: msg_save(*args) - Save the "Output window" contents into a file + Save the "Output" window contents into a file msg_save(path) -> bool @param path: The path of the file to save the contents into. An empty @@ -54807,6 +58184,15 @@ nomem(*args) nomem(format) @param format (C++: const char *) +Help on function open_bookmarks_window in module ida_kernwin: + +open_bookmarks_window(*args) + Open the bookmarks window ( 'ui_open_builtin' ). + + open_bookmarks_window(w) -> TWidget * + @param w (C++: TWidget *) + @return: pointer to resulting window + Help on function open_bpts_window in module ida_kernwin: open_bpts_window(*args) @@ -54872,7 +58258,7 @@ open_frame_window(*args) Help on function open_funcs_window in module ida_kernwin: open_funcs_window(*args) - Open the functions window ( 'ui_open_builtin' ). + Open the 'Functions' window ( 'ui_open_builtin' ). open_funcs_window(ea) -> TWidget * @param ea: index of entry to select by default (C++: ea_t) @@ -54979,7 +58365,7 @@ open_stack_window(*args) Help on function open_strings_window in module ida_kernwin: open_strings_window(*args) - Open the strings window ( 'ui_open_builtin' ). + Open the 'Strings' window ( 'ui_open_builtin' ). open_strings_window(ea, selstart=BADADDR, selend=BADADDR) -> TWidget * @param ea: index of entry to select by default (C++: ea_t) @@ -55012,7 +58398,7 @@ open_tils_window(*args) Help on function open_trace_window in module ida_kernwin: open_trace_window(*args) - Open the trace window ( 'ui_open_builtin' ). + Open the tracing window ( 'ui_open_builtin' ). Help on function open_url in module ida_kernwin: @@ -55288,7 +58674,7 @@ plgform_new(*args) Help on function plgform_show in module ida_kernwin: plgform_show(*args) - plgform_show(py_link, py_obj, caption, options=WOPN_DP_TAB|WOPN_RESTORE) -> bool + plgform_show(py_link, py_obj, caption, options=(0x0040 << 16)|0x00000004u) -> bool py_link: PyObject * py_obj: PyObject * caption: char const * @@ -55303,6 +58689,13 @@ process_ui_action(*args) @param name: action name @return: Boolean +Help on function py_chooser_base_t_get_row in module ida_kernwin: + +py_chooser_base_t_get_row(*args) + py_chooser_base_t_get_row(chobj, n) -> PyObject * + chobj: chooser_base_t const * + n: size_t + Help on function py_get_ask_form in module ida_kernwin: py_get_ask_form(*args) @@ -55587,6 +58980,14 @@ Help on function refresh_choosers in module ida_kernwin: refresh_choosers(*args) refresh_choosers() +Help on function refresh_custom_viewer in module ida_kernwin: + +refresh_custom_viewer(*args) + Refresh custom ida viewer ( 'ui_refresh_custom_viewer' ) + + refresh_custom_viewer(custom_viewer) + @param custom_viewer (C++: TWidget *) + Help on function refresh_idaview in module ida_kernwin: refresh_idaview(*args) @@ -58017,6 +61418,11 @@ ida_kernwin.ACF_HAS_SELECTION there is currently a valid selection """ +ida_kernwin.ACF_HAS_SOURCE +""" +'source' field is present +""" + ida_kernwin.ACF_XTRN_EA """ cur_ea is in 'externs' segment @@ -58114,6 +61520,11 @@ ida_kernwin.BWN_ADDRWATCH the 'Watch List' window """ +ida_kernwin.BWN_BOOKMARKS +""" +a persistent 'Bookmarks' widget +""" + ida_kernwin.BWN_BPTS """ breakpoints @@ -58385,7 +61796,7 @@ type libraries ida_kernwin.BWN_TRACE """ -trace view +tracing view """ ida_kernwin.BWN_UNDOHIST @@ -58408,6 +61819,21 @@ ida_kernwin.BWN_XREFS xrefs """ +ida_kernwin.CDVF_LINEICONS +""" +icons can be drawn over the line control +""" + +ida_kernwin.CDVF_NOLINES +""" +don't show line numbers +""" + +ida_kernwin.CDVF_STATUSBAR +""" +keep the status bar in the custom viewer +""" + ida_kernwin.CHCOL_DEC """ decimal number @@ -58487,42 +61913,6 @@ ida_kernwin.CHITEM_UNDER underline the item """ -ida_kernwin.CHOOSER_MENU_EDIT -""" -Values of the 'menu_index' parameter. - -Obsolete. Please don't use -""" - -ida_kernwin.CHOOSER_MENU_JUMP -""" -Obsolete. Please don't use. -""" - -ida_kernwin.CHOOSER_MENU_SEARCH -""" -Obsolete. Please don't use. -""" - -ida_kernwin.CHOOSER_MULTI_SELECTION -""" -enable for multiple selections. A callback of type -'chooser_multi_cb_t' will be called for all selected items. -""" - -ida_kernwin.CHOOSER_NO_SELECTION -""" -Flags. - -enable even if there's no selected item. 'n' will be NO_SELECTION for -a callback. -""" - -ida_kernwin.CHOOSER_POPUP_MENU -""" -Add command to the popup menu. -""" - ida_kernwin.CH_ATTRS """ generate ui_get_chooser_item_attrs (gui only) @@ -58559,6 +61949,11 @@ if a non-modal chooser was already open, change selection to the default one """ +ida_kernwin.CH_HAS_DIFF +""" +The chooser can be used in a diffing/merging workflow. +""" + ida_kernwin.CH_HAS_DIRTREE """ The chooser can provide a 'dirtree_t' , meaning a tree-like structure @@ -58599,6 +61994,16 @@ ida_kernwin.CH_NOIDB use the chooser before opening the database """ +ida_kernwin.CH_NO_FILTER +""" +The chooser will not have filtering abilities. +""" + +ida_kernwin.CH_NO_SORT +""" +The chooser will not have sorting abilities. +""" + ida_kernwin.CH_NO_STATUS_BAR """ don't show a status bar @@ -58635,6 +62040,12 @@ ida_kernwin.CH_QFTYP_WHOLE_WORDS whole words quick filter type """ +ida_kernwin.CH_RENAME_IS_EDIT +""" +triggering a 'edit/rename' (i.e., F2 shortcut) on a cell, should call +the edit() callback for the corresponding row. +""" + ida_kernwin.CH_RESTORE """ restore floating position if present (equivalent of WOPN_RESTORE) (GUI @@ -58767,6 +62178,27 @@ ida_kernwin.CREATETB_ADV toolbar is for 'advanced mode' only """ +ida_kernwin.CVNF_ACT +""" +activate (i.e., switch to) the viewer. Activation is performed before +the new 'lochist_entry_t' instance is actually copied to the viewer's +'lochist_t' (otherwise, if the viewer was invisible its +on_location_changed() handler wouldn't be called.) +""" + +ida_kernwin.CVNF_JUMP +""" +'lochist_t' before going to the new location + +push the current position in this viewer's +""" + +ida_kernwin.CVNF_LAZY +""" +try and move the cursor to a line displaying the 'place_t' if +possible. This might disregard the Y position in case of success +""" + ida_kernwin.DP_BEFORE """ used with 'DP_INSIDE' . @@ -58799,6 +62231,12 @@ ida_kernwin.DP_RIGHT Dock src_form to the right of dest_form. """ +ida_kernwin.DP_SZHINT +""" +When floating or in a splitter (i.e., not tabbed), use the widget's +size hint to determine the best geometry (Qt only) +""" + ida_kernwin.DP_TAB """ Place src_form into a tab next to dest_form, if dest_form is in a tab @@ -58872,6 +62310,26 @@ ida_kernwin.HIST_TYPE type declarations """ +ida_kernwin.IDCHK_ARG +""" +bad argument(s) +""" + +ida_kernwin.IDCHK_KEY +""" +bad hotkey name +""" + +ida_kernwin.IDCHK_MAX +""" +too many IDC hotkeys +""" + +ida_kernwin.IDCHK_OK +""" +ok +""" + ida_kernwin.IWID_ADDRWATCH """ address watches (47) @@ -58882,6 +62340,11 @@ ida_kernwin.IWID_ALL mask """ +ida_kernwin.IWID_BOOKMARKS +""" +bookmarks list (59) +""" + ida_kernwin.IWID_BPTS """ breakpoints (13) @@ -59135,7 +62598,7 @@ type libraries (9) ida_kernwin.IWID_TRACE """ -trace view (16) +tracing view (16) """ ida_kernwin.IWID_UNDOHIST @@ -59209,6 +62672,17 @@ the corresponding makeplace() class implementation should return new instances. """ +ida_kernwin.RENADDR_HR +""" +dialog for "Pseudocode" additional flags: 0x01 Library function 0x02 +Mark as decompiled +""" + +ida_kernwin.RENADDR_IDA +""" +dialog for "IDA View" +""" + ida_kernwin.SETMENU_APP """ add menu item after the specified path @@ -59224,6 +62698,16 @@ ida_kernwin.SETMENU_INS add menu item before the specified path (default) """ +ida_kernwin.SVF_COPY_LINES +""" +keep a local copy of '*lines' +""" + +ida_kernwin.SVF_LINES_BYPTR +""" +remember the 'lines' ptr. do not make a copy of '*lines' +""" + ida_kernwin.UIJMP_ACTIVATE """ activate the new window @@ -59258,6 +62742,97 @@ Ctrl is pressedstate & 8 => Mouse left button is pressedstate & 16 => Mouse right button is pressedstate & 32 => Mouse middle button is pressedstate & 128 => Meta is pressed (OSX only) """ + +ida_kernwin.WCLS_DELETE_LATER +""" +assign the deletion of the widget to the UI loop ///< +""" + +ida_kernwin.WCLS_DONT_SAVE_SIZE +""" +don't save size of the window +""" + +ida_kernwin.WCLS_NO_CONTEXT +""" +don't change the current context (useful for toolbars) +""" + +ida_kernwin.WCLS_SAVE +""" +save state in desktop config +""" + +ida_kernwin.WOPN_CLOSED_BY_ESC +""" +override idagui.cfg:CLOSED_BY_ESC: esc will close +""" + +ida_kernwin.WOPN_DP_BEFORE +""" +place widget before dst_form in the tab bar instead of after used with +'WOPN_DP_INSIDE' and 'WOPN_DP_TAB' +""" + +ida_kernwin.WOPN_DP_BOTTOM +""" +Dock widget below dest_ctrl. +""" + +ida_kernwin.WOPN_DP_FLOATING +""" +Make widget floating. +""" + +ida_kernwin.WOPN_DP_INSIDE +""" +Create a new tab bar with both widget and dest_ctrl. +""" + +ida_kernwin.WOPN_DP_LEFT +""" +Dock widget to the left of dest_ctrl. +""" + +ida_kernwin.WOPN_DP_RIGHT +""" +Dock widget to the right of dest_ctrl. +""" + +ida_kernwin.WOPN_DP_SZHINT +""" +when floating or in a splitter (i.e., not tabbed), use the widget's +size hint to determine the best geometry (Qt only) +""" + +ida_kernwin.WOPN_DP_TAB +""" +Place widget into a tab next to dest_ctrl, if dest_ctrl is in a tab +bar (otherwise the same as 'WOPN_DP_INSIDE' ) +""" + +ida_kernwin.WOPN_DP_TOP +""" +Dock widget above dest_ctrl. +""" + +ida_kernwin.WOPN_NOT_CLOSED_BY_ESC +""" +override idagui.cfg:CLOSED_BY_ESC: esc will not close +""" + +ida_kernwin.WOPN_PERSIST +""" +widget will remain available when starting or stopping debugger +sessions +""" + +ida_kernwin.WOPN_RESTORE +""" +if the widget was the only widget in a floating area the last time it +was closed, it will be restored as floating, with the same +position+size as before +""" === ida_kernwin EPYDOC INJECTIONS END === Help on function COLSTR in module ida_lines: @@ -59925,7 +63500,9 @@ Help on function file2base in module ida_loader: file2base(*args) Load portion of file into the database. This function will include - (ea1..ea2) into the addressing space of the program (make it enabled) + (ea1..ea2) into the addressing space of the program (make it + enabled).The storage type of the specified range will be changed to + STT_VA. file2base(li, pos, ea1, ea2, patchable) -> int @param li: pointer of input source (C++: linput_t *) @@ -60855,6 +64432,11 @@ class bookmarks_t(__builtin__.object) | index: uint32 | ud: void * | + | get_dirtree_id(*args) + | get_dirtree_id(e, ud) -> dirtree_id_t + | e: lochist_entry_t const & + | ud: void * + | | mark(*args) | mark(e, index, title, desc, ud) -> uint32 | e: lochist_entry_t const & @@ -60912,6 +64494,13 @@ bookmarks_t_get_desc(*args) index: uint32 ud: void * +Help on function bookmarks_t_get_dirtree_id in module ida_moves: + +bookmarks_t_get_dirtree_id(*args) + bookmarks_t_get_dirtree_id(e, ud) -> dirtree_id_t + e: lochist_entry_t const & + ud: void * + Help on function bookmarks_t_mark in module ida_moves: bookmarks_t_mark(*args) @@ -61202,9 +64791,6 @@ class renderer_info_t(__builtin__.object) | | __repr__ = _swig_repr(self) | - | clear(self, *args) - | clear(self) - | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -61693,7 +65279,7 @@ Help on function clr_abits in module ida_nalt: clr_abits(*args) clr_abits(ea, bits) @param ea (C++: ea_t) - @param bits (C++: uint32) + @param bits (C++: aflags_t) Help on function clr_align_flow in module ida_nalt: @@ -62096,7 +65682,7 @@ find_custom_refinfo(*args) Help on function get_abi_name in module ida_nalt: -get_abi_name(*args) +get_abi_name() Help on function get_absbase in module ida_nalt: @@ -62107,7 +65693,7 @@ get_absbase(*args) Help on function get_aflags in module ida_nalt: get_aflags(*args) - get_aflags(ea) -> uint32 + get_aflags(ea) -> aflags_t @param ea (C++: ea_t) Help on function get_alignment in module ida_nalt: @@ -62159,6 +65745,11 @@ get_default_encoding_idx(*args) encoding is set - byte values are displayed without conversion. (C++: int) +Help on function get_elapsed_secs in module ida_nalt: + +get_elapsed_secs(*args) + Get seconds database stayed open. + Help on function get_encoding_bpu in module ida_nalt: get_encoding_bpu(*args) @@ -62188,6 +65779,24 @@ Help on function get_gotea in module ida_nalt: get_gotea(*args) get_gotea() -> ea_t +Help on function get_ida_notepad_text in module ida_nalt: + +get_ida_notepad_text(*args) + Get notead text. + + get_ida_notepad_text(text) -> ssize_t + @param text (C++: qstring *) + +Help on function get_idb_ctime in module ida_nalt: + +get_idb_ctime(*args) + Get database creation timestamp. + +Help on function get_idb_nopens in module ida_nalt: + +get_idb_nopens(*args) + Get number of times the database is opened. + Help on function get_ids_modnode in module ida_nalt: get_ids_modnode(*args) @@ -62216,6 +65825,15 @@ get_ind_purged(*args) get_ind_purged(ea) -> ea_t @param ea (C++: ea_t) +Help on function get_initial_ida_version in module ida_nalt: + +get_initial_ida_version(*args) + Get version of ida which created the database (string format like + "7.5") + + get_initial_ida_version(ver) -> ssize_t + @param ver (C++: qstring *) + Help on function get_input_file_path in module ida_nalt: get_input_file_path(*args) @@ -62227,6 +65845,11 @@ get_item_color(*args) get_item_color(ea) -> bgcolor_t @param ea (C++: ea_t) +Help on function get_loader_format_name in module ida_nalt: + +get_loader_format_name(*args) + Get file format name for loader modules. + Help on function get_op_tinfo in module ida_nalt: get_op_tinfo(*args) @@ -62269,6 +65892,22 @@ get_source_linnum(*args) get_source_linnum(ea) -> uval_t @param ea (C++: ea_t) +Help on function get_srcdbg_paths in module ida_nalt: + +get_srcdbg_paths(*args) + Get source debug paths. + + get_srcdbg_paths(paths) -> ssize_t + @param paths (C++: qstring *) + +Help on function get_srcdbg_undesired_paths in module ida_nalt: + +get_srcdbg_undesired_paths(*args) + Get user-closed source files. + + get_srcdbg_undesired_paths(paths) -> ssize_t + @param paths (C++: qstring *) + Help on function get_str_encoding_idx in module ida_nalt: get_str_encoding_idx(*args) @@ -62307,6 +65946,12 @@ get_str_type_prefix_length(*args) get_str_type_prefix_length(strtype) -> size_t @param strtype (C++: int32) +Help on function get_strid in module ida_nalt: + +get_strid(*args) + get_strid(ea) -> tid_t + @param ea (C++: ea_t) + Help on function get_strtype_bpu in module ida_nalt: get_strtype_bpu(*args) @@ -62336,6 +65981,36 @@ getnode(*args) getnode(ea) -> netnode @param ea (C++: ea_t) +Help on function has_aflag_linnum in module ida_nalt: + +has_aflag_linnum(*args) + has_aflag_linnum(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_lname in module ida_nalt: + +has_aflag_lname(*args) + has_aflag_lname(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti in module ida_nalt: + +has_aflag_ti(*args) + has_aflag_ti(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti0 in module ida_nalt: + +has_aflag_ti0(*args) + has_aflag_ti0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti1 in module ida_nalt: + +has_aflag_ti1(*args) + has_aflag_ti1(flags) -> bool + @param flags (C++: aflags_t) + Help on function has_lname in module ida_nalt: has_lname(*args) @@ -62396,6 +66071,180 @@ is__invsign1(*args) is__invsign1(ea) -> bool @param ea (C++: ea_t) +Help on function is_aflag__bnot0 in module ida_nalt: + +is_aflag__bnot0(*args) + is_aflag__bnot0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__bnot1 in module ida_nalt: + +is_aflag__bnot1(*args) + is_aflag__bnot1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__invsign0 in module ida_nalt: + +is_aflag__invsign0(*args) + is_aflag__invsign0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__invsign1 in module ida_nalt: + +is_aflag__invsign1(*args) + is_aflag__invsign1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_align_flow in module ida_nalt: + +is_aflag_align_flow(*args) + is_aflag_align_flow(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_colored_item in module ida_nalt: + +is_aflag_colored_item(*args) + is_aflag_colored_item(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_data_guessed_by_hexrays in module ida_nalt: + +is_aflag_data_guessed_by_hexrays(*args) + is_aflag_data_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_fixed_spd in module ida_nalt: + +is_aflag_fixed_spd(*args) + is_aflag_fixed_spd(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_func_guessed_by_hexrays in module ida_nalt: + +is_aflag_func_guessed_by_hexrays(*args) + is_aflag_func_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_hidden_border in module ida_nalt: + +is_aflag_hidden_border(*args) + is_aflag_hidden_border(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_hidden_item in module ida_nalt: + +is_aflag_hidden_item(*args) + is_aflag_hidden_item(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_libitem in module ida_nalt: + +is_aflag_libitem(*args) + is_aflag_libitem(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_lzero0 in module ida_nalt: + +is_aflag_lzero0(*args) + is_aflag_lzero0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_lzero1 in module ida_nalt: + +is_aflag_lzero1(*args) + is_aflag_lzero1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_manual_insn in module ida_nalt: + +is_aflag_manual_insn(*args) + is_aflag_manual_insn(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_noret in module ida_nalt: + +is_aflag_noret(*args) + is_aflag_noret(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_notcode in module ida_nalt: + +is_aflag_notcode(*args) + is_aflag_notcode(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_notproc in module ida_nalt: + +is_aflag_notproc(*args) + is_aflag_notproc(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_public_name in module ida_nalt: + +is_aflag_public_name(*args) + is_aflag_public_name(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_retfp in module ida_nalt: + +is_aflag_retfp(*args) + is_aflag_retfp(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_terse_struc in module ida_nalt: + +is_aflag_terse_struc(*args) + is_aflag_terse_struc(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_tilcmt in module ida_nalt: + +is_aflag_tilcmt(*args) + is_aflag_tilcmt(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_determined_by_hexrays in module ida_nalt: + +is_aflag_type_determined_by_hexrays(*args) + is_aflag_type_determined_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_guessed_by_hexrays in module ida_nalt: + +is_aflag_type_guessed_by_hexrays(*args) + is_aflag_type_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_guessed_by_ida in module ida_nalt: + +is_aflag_type_guessed_by_ida(*args) + is_aflag_type_guessed_by_ida(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_usersp in module ida_nalt: + +is_aflag_usersp(*args) + is_aflag_usersp(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_userti in module ida_nalt: + +is_aflag_userti(*args) + is_aflag_userti(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_weak_name in module ida_nalt: + +is_aflag_weak_name(*args) + is_aflag_weak_name(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_zstroff in module ida_nalt: + +is_aflag_zstroff(*args) + is_aflag_zstroff(flags) -> bool + @param flags (C++: aflags_t) + Help on function is_align_flow in module ida_nalt: is_align_flow(*args) @@ -62408,6 +66257,12 @@ is_colored_item(*args) is_colored_item(ea) -> bool @param ea (C++: ea_t) +Help on function is_data_guessed_by_hexrays in module ida_nalt: + +is_data_guessed_by_hexrays(*args) + is_data_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + Help on function is_finally_visible_item in module ida_nalt: is_finally_visible_item(*args) @@ -62422,6 +66277,12 @@ is_fixed_spd(*args) is_fixed_spd(ea) -> bool @param ea (C++: ea_t) +Help on function is_func_guessed_by_hexrays in module ida_nalt: + +is_func_guessed_by_hexrays(*args) + is_func_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + Help on function is_hidden_border in module ida_nalt: is_hidden_border(*args) @@ -62504,6 +66365,24 @@ is_tilcmt(*args) is_tilcmt(ea) -> bool @param ea (C++: ea_t) +Help on function is_type_determined_by_hexrays in module ida_nalt: + +is_type_determined_by_hexrays(*args) + is_type_determined_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + +Help on function is_type_guessed_by_hexrays in module ida_nalt: + +is_type_guessed_by_hexrays(*args) + is_type_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + +Help on function is_type_guessed_by_ida in module ida_nalt: + +is_type_guessed_by_ida(*args) + is_type_guessed_by_ida(ea) -> bool + @param ea (C++: ea_t) + Help on function is_usersp in module ida_nalt: is_usersp(*args) @@ -62623,7 +66502,7 @@ class printop_t(__builtin__.object) | list of weak references to the object (if defined) | | aflags - | printop_t_aflags_get(self) -> flags_t + | printop_t_aflags_get(self) -> aflags_t | | features | printop_t_features_get(self) -> uchar @@ -62785,7 +66664,7 @@ Help on function set_abits in module ida_nalt: set_abits(*args) set_abits(ea, bits) @param ea (C++: ea_t) - @param bits (C++: uint32) + @param bits (C++: aflags_t) Help on function set_absbase in module ida_nalt: @@ -62799,7 +66678,7 @@ Help on function set_aflags in module ida_nalt: set_aflags(*args) set_aflags(ea, flags) @param ea (C++: ea_t) - @param flags (C++: uint32) + @param flags (C++: aflags_t) Help on function set_align_flow in module ida_nalt: @@ -62850,6 +66729,12 @@ set_custom_data_type_ids(*args) @param ea (C++: ea_t) @param cdis (C++: const custom_data_type_ids_t *) +Help on function set_data_guessed_by_hexrays in module ida_nalt: + +set_data_guessed_by_hexrays(*args) + set_data_guessed_by_hexrays(ea) + @param ea (C++: ea_t) + Help on function set_default_encoding_idx in module ida_nalt: set_default_encoding_idx(*args) @@ -62866,6 +66751,12 @@ set_fixed_spd(*args) set_fixed_spd(ea) @param ea (C++: ea_t) +Help on function set_func_guessed_by_hexrays in module ida_nalt: + +set_func_guessed_by_hexrays(*args) + set_func_guessed_by_hexrays(ea) + @param ea (C++: ea_t) + Help on function set_gotea in module ida_nalt: set_gotea(*args) @@ -62896,6 +66787,15 @@ set_has_ti1(*args) set_has_ti1(ea) @param ea (C++: ea_t) +Help on function set_ida_notepad_text in module ida_nalt: + +set_ida_notepad_text(*args) + Set notead text. + + set_ida_notepad_text(text, size=0) + @param text (C++: const char *) + @param size (C++: size_t) + Help on function set_ids_modnode in module ida_nalt: set_ids_modnode(*args) @@ -62925,6 +66825,14 @@ set_libitem(*args) set_libitem(ea) @param ea (C++: ea_t) +Help on function set_loader_format_name in module ida_nalt: + +set_loader_format_name(*args) + Set file format name for loader modules. + + set_loader_format_name(name) + @param name (C++: const char *) + Help on function set_lzero0 in module ida_nalt: set_lzero0(*args) @@ -62971,8 +66879,8 @@ set_outfile_encoding_idx(*args) set encoding to be used when producing files set_outfile_encoding_idx(idx) -> bool - @param idx: - + @param idx: the encoding index idx can be 0 to use the IDB's default + 1-byte-per-unit encoding (C++: int) Help on function set_refinfo in module ida_nalt: @@ -63014,6 +66922,22 @@ set_source_linnum(*args) @param ea (C++: ea_t) @param lnnum (C++: uval_t) +Help on function set_srcdbg_paths in module ida_nalt: + +set_srcdbg_paths(*args) + Set source debug paths. + + set_srcdbg_paths(paths) + @param paths (C++: const char *) + +Help on function set_srcdbg_undesired_paths in module ida_nalt: + +set_srcdbg_undesired_paths(*args) + Set user-closed source files. + + set_srcdbg_undesired_paths(paths) + @param paths (C++: const char *) + Help on function set_str_type in module ida_nalt: set_str_type(*args) @@ -63054,6 +66978,18 @@ set_tinfo(*args) @param ea (C++: ea_t) @param tif (C++: const tinfo_t *) +Help on function set_type_determined_by_hexrays in module ida_nalt: + +set_type_determined_by_hexrays(*args) + set_type_determined_by_hexrays(ea) + @param ea (C++: ea_t) + +Help on function set_type_guessed_by_ida in module ida_nalt: + +set_type_guessed_by_ida(*args) + set_type_guessed_by_ida(ea) + @param ea (C++: ea_t) + Help on function set_usemodsp in module ida_nalt: set_usemodsp(*args) @@ -63260,6 +67196,9 @@ class switch_info_t(__builtin__.object) | is_subtract(self, *args) | is_subtract(self) -> bool | + | is_user_defined(self, *args) + | is_user_defined(self) -> bool + | | set_elbase(self, *args) | set_elbase(self, base) | @param base (C++: ea_t) @@ -63373,6 +67312,20 @@ unhide_item(*args) unhide_item(ea) @param ea (C++: ea_t) +Help on function upd_abits in module ida_nalt: + +upd_abits(*args) + upd_abits(ea, clr_bits, set_bits) + @param ea (C++: ea_t) + @param clr_bits (C++: aflags_t) + @param set_bits (C++: aflags_t) + +Help on function uses_aflag_modsp in module ida_nalt: + +uses_aflag_modsp(*args) + uses_aflag_modsp(flags) -> bool + @param flags (C++: aflags_t) + Help on function uses_modsp in module ida_nalt: uses_modsp(*args) @@ -63418,6 +67371,26 @@ ida_nalt.AFL_HIDDEN the item is hidden completely """ +ida_nalt.AFL_HR_DETERMINED +""" +the type is definitely guessed by the decompiler +""" + +ida_nalt.AFL_HR_GUESSED_DATA +""" +the data type is guessed by the decompiler +""" + +ida_nalt.AFL_HR_GUESSED_FUNC +""" +the function type is guessed by the decompiler +""" + +ida_nalt.AFL_IDA_GUESSED +""" +the type is guessed by IDA +""" + ida_nalt.AFL_LIB """ item from the standard library. low level flag, is used to set @@ -63497,7 +67470,8 @@ terse structure variable display? ida_nalt.AFL_TI """ -has typeinfo? ( 'NSUP_TYPEINFO' ) +has typeinfo? ( 'NSUP_TYPEINFO' ); used only for addresses, not for +'member_t' """ ida_nalt.AFL_TI0 @@ -63515,6 +67489,11 @@ ida_nalt.AFL_TILCMT has type comment? (such a comment may be changed by IDA) """ +ida_nalt.AFL_TYPE_GUESSED +""" +who guessed the type information? +""" + ida_nalt.AFL_USEMODSP """ example: pop [rsp+N] @@ -63529,9 +67508,8 @@ user-defined SP value ida_nalt.AFL_USERTI """ -(comes from the user or type library) - -the type information is definitive. +the type information is definitive. (comes from the user or type +library) if not set see 'AFL_TYPE_GUESSED' """ ida_nalt.AFL_WEAKNAM @@ -63940,9 +67918,8 @@ Patch netnode tag. ida_nalt.REFINFO_CUSTOM """ -a custom reference the kernel will call \\ph{notify}(ph.custom_offset, -.... that can change all arguments used for calculations. This flag is -useful for custom fixups +a custom reference. see 'custom_refinfo_handler_t' . the id of the +custom refinfo is stored under the REFINFO_TYPE mask. """ ida_nalt.REFINFO_NOBASE @@ -63979,7 +67956,9 @@ usual) being added to it ida_nalt.REFINFO_TYPE """ -reference type +reference ID if REFINFO_CUSTOM set + +reference type (reftype_t), or custom """ ida_nalt.RIDX_ABINAME @@ -64052,11 +68031,6 @@ ida_nalt.RIDX_PROBLEMS problem lists """ -ida_nalt.RIDX_SELECTED_EXTLANG -""" -last selected extlang name (from the execute script box) -""" - ida_nalt.RIDX_SELECTORS """ 2..63 are for selector_t blob (see init_selectors()) @@ -64217,11 +68191,6 @@ ida_nalt.SWI_JSIZE jump offset expansion bit """ -ida_nalt.SWI_RESERVED -""" -was: SWI_DEFAULT -""" - ida_nalt.SWI_SELFREL """ jump address is relative to the element not to ELBASE @@ -64261,6 +68230,11 @@ ida_nalt.SWI_SUBTRACT table values are subtracted from the elbase instead of being added """ +ida_nalt.SWI_USER +""" +user specified switch (starting from version 2) +""" + ida_nalt.SWI_V32 """ 32-bit values in table @@ -64840,7 +68814,7 @@ is_ident_cp(*args) Help on function is_in_nlist in module ida_name: is_in_nlist(*args) - Is name included into names list? + Is the name included into the name list? is_in_nlist(ea) -> bool @param ea (C++: ea_t) @@ -64962,7 +68936,7 @@ make_name_weak(*args) Help on function rebuild_nlist in module ida_name: rebuild_nlist(*args) - Rebuild names list. + Rebuild the name list. Help on function reorder_dummy_names in module ida_name: @@ -65018,8 +68992,8 @@ set_name(*args) @param flags: Set name flags . If a bit is not specified, then the corresponding action is not performed and the name will retain the same bits as before calling this function. - For new names, default is: non-public, non-weak, non- - auto. (C++: int) + For new names, default is: non-public, non-weak, + non-auto. (C++: int) @retval: 1 - ok, name is changed @retval: 0 - failure, a warning is displayed @@ -65543,8 +69517,8 @@ class netnode(__builtin__.object) | tag: uchar | | copyto(self, *args) - | copyto(self, target, count=1) -> size_t - | target: netnode + | copyto(self, destnode, count=1) -> size_t + | destnode: netnode | count: nodeidx_t | | create(self, *args) @@ -65719,8 +69693,8 @@ class netnode(__builtin__.object) | tag: uchar | | moveto(self, *args) - | moveto(self, target, count=1) -> size_t - | target: netnode + | moveto(self, destnode, count=1) -> size_t + | destnode: netnode | count: nodeidx_t | | next(self, *args) @@ -65889,6 +69863,13 @@ class netnode(__builtin__.object) | value_exists(self) -> bool | | ---------------------------------------------------------------------- + | Static methods defined here: + | + | exist(*args) + | exist(_name) -> bool + | _name: char const * + | + | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ @@ -65906,6 +69887,12 @@ class netnode(__builtin__.object) | __swig_destroy__ = | delete_netnode(self) +Help on function netnode_exist in module ida_netnode: + +netnode_exist(*args) + netnode_exist(_name) -> bool + _name: char const * + === ida_netnode EPYDOC INJECTIONS === ida_netnode.BADNODE """ @@ -66090,10 +70077,10 @@ Help on function op_offset in module ida_offset: op_offset(*args) See 'op_offset_ex()' - op_offset(ea, n, type, target=BADADDR, base=0, tdelta=0) -> bool + op_offset(ea, n, type_and_flags, target=BADADDR, base=0, tdelta=0) -> bool @param ea (C++: ea_t) @param n (C++: int) - @param type (C++: reftype_t) + @param type_and_flags (C++: uint32) @param target (C++: ea_t) @param base (C++: ea_t) @param tdelta (C++: adiff_t) @@ -68349,7 +72336,7 @@ UTF-16 codepage. ida_pro.IDA_SDK_VERSION """ -IDA SDK v7.5. +IDA SDK v7.6. """ ida_pro.IDBDEC_ESCAPE @@ -70225,6 +74212,15 @@ class segment_t(ida_range.range_t) | comorg(self, *args) | comorg(self) -> bool | + | is_16bit(self, *args) + | Is a 16-bit segment? + | + | is_32bit(self, *args) + | Is a 32-bit segment? + | + | is_64bit(self, *args) + | Is a 64-bit segment? + | | is_header_segm(self, *args) | is_header_segm(self) -> bool | @@ -70272,11 +74268,7 @@ class segment_t(ida_range.range_t) | segment structure may be modified directly, there are special | functions to modify some fields. | - | use32(self, *args) - | Use 32 bit segment addressing? - | - | use64(self, *args) - | Use 64 bit segment addressing? + | use64 = is_64bit(self, *args) | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -70697,7 +74689,9 @@ silent mode, no "Adding segment..." in the messages window ida_segment.ADDSEG_SPARSE """ -use sparse storage method for the new segment +use sparse storage method for the new ranges of the created segment. +please note that the ranges that were already enabled before creating +the segment will not change their storage type. """ ida_segment.CSS_BREAK @@ -71387,8 +75381,7 @@ the value is specified by the user Help on function build_strlist in module ida_strlist: build_strlist(*args) - Build the string list. You should initialize options before this call - using the restore_config() or setup_strings_window() methods. + Rebuild the string list. Help on function clear_strlist in module ida_strlist: @@ -71407,12 +75400,13 @@ get_strlist_item(*args) Help on function get_strlist_options in module ida_strlist: get_strlist_options(*args) - Get access to the static string list options. + Get the static string list options. Help on function get_strlist_qty in module ida_strlist: get_strlist_qty(*args) - Get number of elements in the string list. + Get number of elements in the string list. The list will be loaded + from the database (if saved) or built from scratch. Help on class string_info_t in module ida_strlist: @@ -71477,9 +75471,6 @@ class strwinsetup_t(__builtin__.object) | _set_strtypes(self, py_t) -> PyObject * | py_t: PyObject * | - | is_initialized(self, *args) - | is_initialized(self) -> bool - | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -71658,6 +75649,20 @@ Help on function get_first_struc_idx in module ida_struct: get_first_struc_idx(*args) Get index of first structure. +Help on function get_innermost_member in module ida_struct: + +get_innermost_member(*args) + get_innermost_member(sptr, offset) -> PyObject * + Get the innermost member at the given offset + @param sptr: the starting structure + @param offset: offset into the starting structure + @return: + - None on failure + - tuple(member_t, struct_t, offset) + where member_t: a member in SPTR (it is not a structure), + struct_t: the innermost structure, + offset: remaining offset into the returned member + Help on function get_last_struc_idx in module ida_struct: get_last_struc_idx(*args) @@ -73678,7 +77683,10 @@ append_abi_opts(*args) Help on function append_argloc in module ida_typeinf: append_argloc(*args) - Serialize argument location. + Serialize argument location Deserialize an argument location. Argument + FORBID_STKOFF check location type. It can be used, for example, to + check the return location of a function that cannot return a value in + the stack append_argloc(out, vloc) -> bool @param out (C++: qtype *) @@ -73933,6 +77941,9 @@ class argloc_t(__builtin__.object) | has_stkoff(self, *args) | TRUE if argloc has a stack part. | + | in_stack(self, *args) + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) | See 'ALOC_NONE' . | @@ -74232,6 +78243,9 @@ class argpart_t(argloc_t) | has_stkoff(self, *args) | TRUE if argloc has a stack part. | + | in_stack(self, *args) + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) | See 'ALOC_NONE' . | @@ -75026,6 +79040,15 @@ del_tinfo_attr(*args) key: qstring const & make_copy: bool +Help on function del_vftable_ea in module ida_typeinf: + +del_vftable_ea(*args) + Delete the address of a vftable instance for a vftable type. + + del_vftable_ea(ordinal) -> bool + @param ordinal: ordinal number of a vftable type. (C++: uint32) + @return: success + Help on function deref_ptr in module ida_typeinf: deref_ptr(*args) @@ -75489,12 +79512,10 @@ class enum_type_data_t(enum_member_vec_t) Help on function extract_argloc in module ida_typeinf: extract_argloc(*args) - Deserialize argument location. - - extract_argloc(vloc, ptype, is_retval) -> bool + extract_argloc(vloc, ptype, forbid_stkoff) -> bool @param vloc (C++: argloc_t *) @param ptype (C++: const type_t **) - @param is_retval (C++: bool) + @param forbid_stkoff (C++: bool) Help on function find_tinfo_udt_member in module ida_typeinf: @@ -75590,6 +79611,9 @@ class func_type_data_t(funcargvec_t) | @param purged (C++: int) | @param cc_flags (C++: int) | + | is_golang_cc(self, *args) + | is_golang_cc(self) -> bool + | | is_high(self, *args) | is_high(self) -> bool | @@ -76282,6 +80306,26 @@ get_type_ordinal(*args) @param ti (C++: const til_t *) @param name (C++: const char *) +Help on function get_vftable_ea in module ida_typeinf: + +get_vftable_ea(*args) + Get address of a virtual function table. + + get_vftable_ea(ordinal) -> ea_t + @param ordinal: ordinal number of a vftable type. (C++: uint32) + @return: address of the corresponding virtual function table in the + current database. + +Help on function get_vftable_ordinal in module ida_typeinf: + +get_vftable_ordinal(*args) + Get ordinal number of the virtual function table. + + get_vftable_ordinal(vftable_ea) -> uint32 + @param vftable_ea: address of a virtual function table. (C++: ea_t) + @return: ordinal number of the corresponding vftable type. 0 - + failure. + Help on function guess_func_cc in module ida_typeinf: guess_func_cc(*args) @@ -76492,6 +80536,14 @@ Help on function is_gcc64 in module ida_typeinf: is_gcc64(*args) Is the target compiler 64 bit gcc? +Help on function is_golang_cc in module ida_typeinf: + +is_golang_cc(*args) + GO language calling convention (return value in stack)? + + is_golang_cc(cc) -> bool + @param cc (C++: cm_t) + Help on function is_ordinal_name in module ida_typeinf: is_ordinal_name(*args) @@ -78156,6 +82208,17 @@ set_type_alias(*args) @param src_ordinal (C++: uint32) @param dst_ordinal (C++: uint32) +Help on function set_vftable_ea in module ida_typeinf: + +set_vftable_ea(*args) + Set the address of a vftable instance for a vftable type. + + set_vftable_ea(ordinal, vftable_ea) -> bool + @param ordinal: ordinal number of the corresponding vftable type. + (C++: uint32) + @param vftable_ea: address of a virtual function table. (C++: ea_t) + @return: success + Help on class simd_info_t in module ida_typeinf: class simd_info_t(__builtin__.object) @@ -78221,6 +82284,11 @@ store_til(*args) const char *) @return: success +Help on function switch_to_golang in module ida_typeinf: + +switch_to_golang(*args) + switch to GOLANG calling convention (to be used as default CC) + Help on class text_sink_t in module ida_typeinf: class text_sink_t(__builtin__.object) @@ -79760,6 +83828,9 @@ class udt_type_data_t(udtmembervec_t) | is_vftable(self, *args) | is_vftable(self) -> bool | + | set_vftable(self, *args) + | set_vftable(self) + | | swap(self, *args) | swap(self, r) | @param r (C++: udt_type_data_t &) @@ -80144,6 +84215,11 @@ unpack_object_from_idb(*args) ea: ea_t pio_flags: int +Help on function use_golang_cc in module ida_typeinf: + +use_golang_cc(*args) + is GOLANG calling convention used by default? + Help on class valstr_t in module ida_typeinf: class valstr_t(__builtin__.object) @@ -80552,6 +84628,11 @@ ida_typeinf.CC_CDECL_OK can use __cdecl calling convention? """ +ida_typeinf.CC_GOLANG_OK +""" +can use __golang calling convention +""" + ida_typeinf.CC_HAS_ELLIPSIS """ function has a variable list of arguments? @@ -80583,6 +84664,11 @@ ida_typeinf.FAI_STRUCT was initially a structure """ +ida_typeinf.FAI_UNUSED +""" +argument is not used by the function +""" + ida_typeinf.FTI_ALL """ all defined bits @@ -80605,6 +84691,11 @@ ida_typeinf.FTI_DEFCALL default call """ +ida_typeinf.FTI_EXPLOCS +""" +all arglocs are specified explicitly +""" + ida_typeinf.FTI_FARCALL """ far call @@ -81619,23 +85710,6 @@ get_printable_immvals(*args) @param F: flags for the specified address (C++: flags_t) @return: number of immediate values (0..2* UA_MAXOP ) -Help on function guess_table_address in module ida_ua: - -guess_table_address(*args) - Guess the jump table address (ibm pc specific) - - guess_table_address(insn) -> ea_t - @param insn - an ida_ua.insn_t, or an address (C++: const insn_t &) - -Help on function guess_table_size in module ida_ua: - -guess_table_size(*args) - Guess the jump table size. - - guess_table_size(insn, jump_table) -> asize_t - @param insn - an ida_ua.insn_t, or an address (C++: const insn_t &) - @param jump_table (C++: ea_t) - Help on function insn_add_cref in module ida_ua: insn_add_cref(*args) @@ -81810,6 +85884,10 @@ class insn_t(__builtin__.object) | | Op6 | + | Op7 + | + | Op8 + | | __dict__ | dictionary for instance variables (if defined) | @@ -82643,6 +86721,9 @@ class outctx_t(outctx_base_t) | procmod | outctx_t_procmod_get(self) -> procmod_t | + | saved_immvals + | outctx_t_saved_immvals_get(self) -> uval_t [8] + | | thisown | The membership flag | @@ -84568,12 +88649,17 @@ clear_trace(filename) Help on function create_align in module ida_bytes: create_align(*args) - Alignment: 0 or 2..32. If it is 0, is will be calculated. + Create an alignment item. create_align(ea, length, alignment) -> bool - @param ea (C++: ea_t) - @param length (C++: asize_t) - @param alignment (C++: int) + @param ea: linear address (C++: ea_t) + @param length: size of the item in bytes. 0 means to infer from + ALIGNMENT (C++: asize_t) + @param alignment: alignment exponent. Example: 3 means align to 8 + bytes. 0 means to infer from LENGTH It is forbidden + to specify both LENGTH and ALIGNMENT as 0. (C++: + int) + @return: success Help on function create_array in module idc: @@ -84897,12 +88983,8 @@ del_hidden_range(*args) Help on function del_idc_hotkey in module ida_kernwin: del_idc_hotkey(*args) - Delete IDC function hotkey ( 'ui_del_idckey' ). - del_idc_hotkey(hotkey) -> bool - @param hotkey: hotkey name (C++: const char *) - @retval: 1 - ok - @retval: 0 - failed + @param hotkey (C++: const char *) Help on function del_items in module ida_bytes: @@ -87475,9 +91557,9 @@ load_debugger(*args) Help on function load_trace_file in module ida_dbg: load_trace_file(*args) - Load a recorded trace file in the trace window. If the call succeeds - and 'buf' is not null, the description of the trace stored in the - binary trace file will be returned in 'buf' + Load a recorded trace file in the 'Tracing' window. If the call + succeeds and 'buf' is not null, the description of the trace stored in + the binary trace file will be returned in 'buf' load_trace_file(filename) -> str @param filename (C++: const char *) @@ -87666,10 +91748,10 @@ Help on function op_offset in module ida_offset: op_offset(*args) See 'op_offset_ex()' - op_offset(ea, n, type, target=BADADDR, base=0, tdelta=0) -> bool + op_offset(ea, n, type_and_flags, target=BADADDR, base=0, tdelta=0) -> bool @param ea (C++: ea_t) @param n (C++: int) - @param type (C++: reftype_t) + @param type_and_flags (C++: uint32) @param target (C++: ea_t) @param base (C++: ea_t) @param tdelta (C++: adiff_t) diff --git a/release_pydoc_injections3.txt b/release_pydoc_injections3.txt index 66aaa61..080645c 100644 --- a/release_pydoc_injections3.txt +++ b/release_pydoc_injections3.txt @@ -583,14 +583,12 @@ bin_flag(*args) -> 'flags_t' Help on function bin_search in module ida_bytes: bin_search(*args) -> 'ea_t' - bin_search(start_ea, end_ea, image, imask, step, flags) -> ea_t + bin_search(start_ea, end_ea, data, flags) -> ea_t Search for a set of bytes in the program @param start_ea: linear address, start of range to search @param end_ea: linear address, end of range to search (exclusive) - @param image: the set of bytes to search for - @param imask: a bitfield representing the mask in 'image' (can be None) - @param step: either BIN_SEARCH_FORWARD, or BIN_SEARCH_BACKWARD + @param data: the prepared data to search for (see parse_binpat_str()) @param flags: combination of BIN_SEARCH_* flags @return: the address of a match, or ida_idaapi.BADADDR if not found @@ -610,12 +608,12 @@ bytesize(*args) -> 'int' Help on function calc_def_align in module ida_bytes: calc_def_align(*args) -> 'int' - Calculate default alignment. + Calculate the default alignment exponent. calc_def_align(ea, mina, maxa) -> int - @param ea (C++: ea_t) - @param mina (C++: int) - @param maxa (C++: int) + @param ea: linear address (C++: ea_t) + @param mina: minimal possible alignment exponent. (C++: int) + @param maxa: minimal possible alignment exponent. (C++: int) Help on function calc_dflags in module ida_bytes: @@ -627,10 +625,11 @@ calc_dflags(*args) -> 'flags_t' Help on function calc_max_align in module ida_bytes: calc_max_align(*args) -> 'int' - Returns: 0..32. + Calculate the maximal possible alignment exponent. calc_max_align(endea) -> int - @param endea (C++: ea_t) + @param endea: end address of the alignment item. (C++: ea_t) + @return: a value in the 0..32 range Help on function calc_max_item_end in module ida_bytes: @@ -648,10 +647,11 @@ calc_max_item_end(*args) -> 'ea_t' Help on function calc_min_align in module ida_bytes: calc_min_align(*args) -> 'int' - Returns: 1..32. + Calculate the minimal possible alignment exponent. calc_min_align(length) -> int - @param length (C++: asize_t) + @param length: size of the item in bytes. (C++: asize_t) + @return: a value in the 1..32 range Help on function can_define_item in module ida_bytes: @@ -735,10 +735,230 @@ Help on function code_flag in module ida_bytes: code_flag(*args) -> 'flags_t' 'FF_CODE' +Help on class compiled_binpat_t in module ida_bytes: + +class compiled_binpat_t(builtins.object) + | Proxy of C++ compiled_binpat_t class. + | + | Methods defined here: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: compiled_binpat_t const & + | + | __init__(self, *args) + | __init__(self) -> compiled_binpat_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: compiled_binpat_t const & + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_compiled_binpat_t(...) + | delete_compiled_binpat_t(self) + | + | all_bytes_defined(self, *args) -> 'bool' + | all_bytes_defined(self) -> bool + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | compiled_binpat_t_bytes_get(self) -> bytevec_t * + | + | encidx + | compiled_binpat_t_encidx_get(self) -> int + | + | mask + | compiled_binpat_t_mask_get(self) -> bytevec_t * + | + | strlits + | compiled_binpat_t_strlits_get(self) -> rangevec_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + +Help on class compiled_binpat_vec_t in module ida_bytes: + +class compiled_binpat_vec_t(builtins.object) + | Proxy of C++ qvector< compiled_binpat_t > class. + | + | Methods defined here: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: qvector< compiled_binpat_t > const & + | + | __getitem__(self, *args) -> 'compiled_binpat_t const &' + | __getitem__(self, i) -> compiled_binpat_t + | i: size_t + | + | __init__(self, *args) + | __init__(self) -> compiled_binpat_vec_t + | x: qvector< compiled_binpat_t > const & + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: qvector< compiled_binpat_t > const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: compiled_binpat_t const & + | + | __swig_destroy__ = delete_compiled_binpat_vec_t(...) + | delete_compiled_binpat_vec_t(self) + | + | _del(self, *args) -> 'bool' + | _del(self, x) -> bool + | x: compiled_binpat_t const & + | + | add_unique(self, *args) -> 'bool' + | add_unique(self, x) -> bool + | x: compiled_binpat_t const & + | + | at(self, *args) -> 'compiled_binpat_t const &' + | at(self, _idx) -> compiled_binpat_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) -> 'qvector< compiled_binpat_t >::const_iterator' + | begin(self) -> compiled_binpat_t + | begin(self) -> compiled_binpat_t + | + | capacity(self, *args) -> 'size_t' + | capacity(self) -> size_t + | + | clear(self, *args) -> 'void' + | clear(self) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'qvector< compiled_binpat_t >::const_iterator' + | end(self) -> compiled_binpat_t + | end(self) -> compiled_binpat_t + | + | erase(self, *args) -> 'qvector< compiled_binpat_t >::iterator' + | erase(self, it) -> compiled_binpat_t + | it: qvector< compiled_binpat_t >::iterator + | + | + | erase(self, first, last) -> compiled_binpat_t + | first: qvector< compiled_binpat_t >::iterator + | last: qvector< compiled_binpat_t >::iterator + | + | extract(self, *args) -> 'compiled_binpat_t *' + | extract(self) -> compiled_binpat_t + | + | find(self, *args) -> 'qvector< compiled_binpat_t >::const_iterator' + | find(self, x) -> compiled_binpat_t + | x: compiled_binpat_t const & + | + | + | find(self, x) -> compiled_binpat_t + | x: compiled_binpat_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) -> 'void' + | grow(self, x=compiled_binpat_t()) + | x: compiled_binpat_t const & + | + | has(self, *args) -> 'bool' + | has(self, x) -> bool + | x: compiled_binpat_t const & + | + | inject(self, *args) -> 'void' + | inject(self, s, len) + | s: compiled_binpat_t * + | len: size_t + | + | insert(self, *args) -> 'qvector< compiled_binpat_t >::iterator' + | insert(self, it, x) -> compiled_binpat_t + | it: qvector< compiled_binpat_t >::iterator + | x: compiled_binpat_t const & + | + | pop_back(self, *args) -> 'void' + | pop_back(self) + | + | push_back(self, *args) -> 'compiled_binpat_t &' + | push_back(self, x) + | x: compiled_binpat_t const & + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | reserve(self, *args) -> 'void' + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) -> 'void' + | resize(self, _newsize, x) + | _newsize: size_t + | x: compiled_binpat_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) -> 'size_t' + | size(self) -> size_t + | + | swap(self, *args) -> 'void' + | swap(self, r) + | r: qvector< compiled_binpat_t > & + | + | truncate(self, *args) -> 'void' + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + Help on function create_16bit_data in module ida_bytes: create_16bit_data(*args) -> 'bool' - Convert to 16-bit quantity (take byte size into account) + Convert to 16-bit quantity (take the byte size into account) create_16bit_data(ea, length) -> bool @param ea (C++: ea_t) @@ -747,7 +967,7 @@ create_16bit_data(*args) -> 'bool' Help on function create_32bit_data in module ida_bytes: create_32bit_data(*args) -> 'bool' - Convert to 32-bit quantity (take byte size into account) + Convert to 32-bit quantity (take the byte size into account) create_32bit_data(ea, length) -> bool @param ea (C++: ea_t) @@ -756,12 +976,17 @@ create_32bit_data(*args) -> 'bool' Help on function create_align in module ida_bytes: create_align(*args) -> 'bool' - Alignment: 0 or 2..32. If it is 0, is will be calculated. + Create an alignment item. create_align(ea, length, alignment) -> bool - @param ea (C++: ea_t) - @param length (C++: asize_t) - @param alignment (C++: int) + @param ea: linear address (C++: ea_t) + @param length: size of the item in bytes. 0 means to infer from + ALIGNMENT (C++: asize_t) + @param alignment: alignment exponent. Example: 3 means align to 8 + bytes. 0 means to infer from LENGTH It is forbidden + to specify both LENGTH and ALIGNMENT as 0. (C++: + int) + @return: success Help on function create_byte in module ida_bytes: @@ -2307,9 +2532,12 @@ is_align(*args) -> 'bool' Help on function is_attached_custom_data_format in module ida_bytes: is_attached_custom_data_format(*args) -> 'bool' + Is the custom data format attached to the custom data type? + is_attached_custom_data_format(dtid, dfid) -> bool - @param dtid (C++: int) - @param dfid (C++: int) + @param dtid: data type id (C++: int) + @param dfid: data format id (C++: int) + @return: true or false Help on function is_bnot in module ida_bytes: @@ -3127,6 +3355,45 @@ Help on function packreal_flag in module ida_bytes: packreal_flag(*args) -> 'flags_t' Get a flags_t representing a packed decimal real. +Help on function parse_binpat_str in module ida_bytes: + +parse_binpat_str(*args) -> 'qstring *' + Convert user-specified binary string to internal representation. The + 'in' parameter contains space-separated tokens: + + - numbers (numeric base is determined by 'radix') + - if value of number fits a byte, it is considered as a byte + - if value of number fits a word, it is considered as 2 bytes + - if value of number fits a dword,it is considered as 4 bytes + - "..." string constants + - 'x' single-character constants + - ? variable bytes + + Note that string constants are surrounded with double quotes.Here are + a few examples (assuming base 16): + + CD 21 - bytes 0xCD, 0x21 + 21CD - bytes 0xCD, 0x21 (little endian ) or 0x21, 0xCD (big-endian) + "Hello", 0 - the null terminated string "Hello" + L"Hello" - 'H', 0, 'e', 0, 'l', 0, 'l', 0, 'o', 0 + B8 ? ? ? ? 90 - byte 0xB8, 4 bytes with any value, byte 0x90 + + parse_binpat_str(out, ea, _in, radix, strlits_encoding=0) -> str + @param out: a vector of compiled binary patterns, for use with + bin_search2() (C++: compiled_binpat_vec_t *) + @param ea: linear address to convert for (the conversion depends on + the address, because the number of bits in a byte depend on + the segment type) (C++: ea_t) + in: char const * + @param radix: numeric base of numbers (8,10,16) (C++: int) + @param strlits_encoding: the target encoding into which the string + literals present in 'in', should be encoded. + Can be any from [1, get_encoding_qty() ), or + the special values PBSENC_* (C++: int) + @return: false either in case of parsing error, or if at least one + requested target encoding couldn't encode the string literals + present in "in". + Help on function patch_byte in module ida_bytes: patch_byte(*args) -> 'bool' @@ -4140,7 +4407,7 @@ have hotkey markers part of the name ida_bytes.PSTF_TBRIEF """ -use brief name (e.g., in the 'Strings window') +use brief name (e.g., in the 'Strings' window) """ ida_bytes.PSTF_TINLIN @@ -5842,9 +6109,9 @@ load_debugger(*args) -> 'bool' Help on function load_trace_file in module ida_dbg: load_trace_file(*args) -> 'qstring *' - Load a recorded trace file in the trace window. If the call succeeds - and 'buf' is not null, the description of the trace stored in the - binary trace file will be returned in 'buf' + Load a recorded trace file in the 'Tracing' window. If the call + succeeds and 'buf' is not null, the description of the trace stored in + the binary trace file will be returned in 'buf' load_trace_file(filename) -> str @param filename (C++: const char *) @@ -7279,6 +7546,11 @@ ida_dbg.DOPT_EXCDLG exception dialogs: """ +ida_dbg.DOPT_FAST_STEP +""" +prevent debugger memory refreshes when single-stepping +""" + ida_dbg.DOPT_INFO_BPT """ break on debugging information @@ -7451,6 +7723,998 @@ ida_dbg.WFNE_USEC timeout is specified in microseconds """ === ida_dbg EPYDOC INJECTIONS END === +Help on class direntry_t in module ida_dirtree: + +class direntry_t(builtins.object) + | Proxy of C++ direntry_t class. + | + | Methods defined here: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: direntry_t const & + | + | __init__(self, *args) + | __init__(self, i=BADIDX, d=False) -> direntry_t + | i: uval_t + | d: bool + | + | __lt__(self, *args) -> 'bool' + | __lt__(self, r) -> bool + | r: direntry_t const & + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: direntry_t const & + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_direntry_t(...) + | delete_direntry_t(self) + | + | valid(self, *args) -> 'bool' + | valid(self) -> bool + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | idx + | direntry_t_idx_get(self) -> uval_t + | + | isdir + | direntry_t_isdir_get(self) -> bool + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | BADIDX = unsigned-ea-like-numeric-type(-1) + | + | ROOTIDX = 0 + | + | __hash__ = None + +Help on class direntry_vec_t in module ida_dirtree: + +class direntry_vec_t(builtins.object) + | Proxy of C++ qvector< direntry_t > class. + | + | Methods defined here: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: qvector< direntry_t > const & + | + | __getitem__(self, *args) -> 'direntry_t const &' + | __getitem__(self, i) -> direntry_t + | i: size_t + | + | __init__(self, *args) + | __init__(self) -> direntry_vec_t + | x: qvector< direntry_t > const & + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: qvector< direntry_t > const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: direntry_t const & + | + | __swig_destroy__ = delete_direntry_vec_t(...) + | delete_direntry_vec_t(self) + | + | _del(self, *args) -> 'bool' + | _del(self, x) -> bool + | x: direntry_t const & + | + | add_unique(self, *args) -> 'bool' + | add_unique(self, x) -> bool + | x: direntry_t const & + | + | at(self, *args) -> 'direntry_t const &' + | at(self, _idx) -> direntry_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) -> 'qvector< direntry_t >::const_iterator' + | begin(self) -> direntry_t + | begin(self) -> direntry_t + | + | capacity(self, *args) -> 'size_t' + | capacity(self) -> size_t + | + | clear(self, *args) -> 'void' + | clear(self) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'qvector< direntry_t >::const_iterator' + | end(self) -> direntry_t + | end(self) -> direntry_t + | + | erase(self, *args) -> 'qvector< direntry_t >::iterator' + | erase(self, it) -> direntry_t + | it: qvector< direntry_t >::iterator + | + | + | erase(self, first, last) -> direntry_t + | first: qvector< direntry_t >::iterator + | last: qvector< direntry_t >::iterator + | + | extract(self, *args) -> 'direntry_t *' + | extract(self) -> direntry_t + | + | find(self, *args) -> 'qvector< direntry_t >::const_iterator' + | find(self, x) -> direntry_t + | x: direntry_t const & + | + | + | find(self, x) -> direntry_t + | x: direntry_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) -> 'void' + | grow(self, x=direntry_t()) + | x: direntry_t const & + | + | has(self, *args) -> 'bool' + | has(self, x) -> bool + | x: direntry_t const & + | + | inject(self, *args) -> 'void' + | inject(self, s, len) + | s: direntry_t * + | len: size_t + | + | insert(self, *args) -> 'qvector< direntry_t >::iterator' + | insert(self, it, x) -> direntry_t + | it: qvector< direntry_t >::iterator + | x: direntry_t const & + | + | pop_back(self, *args) -> 'void' + | pop_back(self) + | + | push_back(self, *args) -> 'direntry_t &' + | push_back(self, x) + | x: direntry_t const & + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | reserve(self, *args) -> 'void' + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) -> 'void' + | resize(self, _newsize, x) + | _newsize: size_t + | x: direntry_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) -> 'size_t' + | size(self) -> size_t + | + | swap(self, *args) -> 'void' + | swap(self, r) + | r: qvector< direntry_t > & + | + | truncate(self, *args) -> 'void' + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + +Help on class dirspec_t in module ida_dirtree: + +class dirspec_t(builtins.object) + | Proxy of C++ dirspec_t class. + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self, nm=None, f=0) -> dirspec_t + | nm: char const * + | f: uint32 + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_dirspec_t(...) + | delete_dirspec_t(self) + | + | get_attrs(self, *args) -> 'qstring' + | get_attrs(self, inode) -> qstring + | @param inode (C++: inode_t) + | + | get_inode(self, *args) -> 'inode_t' + | get the entry inode in the specified directory + | + | get_inode(self, diridx, name) -> inode_t + | @param diridx (C++: diridx_t) + | @param name (C++: const char *) + | @return: the entry inode + | + | get_name(self, *args) -> 'bool' + | get the entry name. for example, the structure name + | + | get_name(self, inode) -> bool + | @param inode (C++: inode_t) + | @return: false if the entry does not exist. + | + | rename_inode(self, *args) -> 'bool' + | rename the entry + | + | rename_inode(self, inode, newname) -> bool + | @param inode (C++: inode_t) + | @param newname (C++: const char *) + | @return: success + | + | unlink_inode(self, *args) -> 'void' + | event: unlinked an inode + | + | unlink_inode(self, inode) + | @param inode (C++: inode_t) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | flags + | dirspec_t_flags_get(self) -> uint32 + | + | nodename + | dirspec_t_nodename_get(self) -> qstring * + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | DSF_INODE_EA = 1 + | + | DSF_PRIVRANGE = 2 + +Help on class dirtree_cursor_t in module ida_dirtree: + +class dirtree_cursor_t(builtins.object) + | Proxy of C++ dirtree_cursor_t class. + | + | Methods defined here: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __ge__(self, *args) -> 'bool' + | __ge__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __gt__(self, *args) -> 'bool' + | __gt__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __init__(self, *args) + | __init__(self, _parent=BADIDX, _rank=size_t(-1)) -> dirtree_cursor_t + | _parent: diridx_t + | _rank: size_t + | + | __le__(self, *args) -> 'bool' + | __le__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __lt__(self, *args) -> 'bool' + | __lt__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: dirtree_cursor_t const & + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_dirtree_cursor_t(...) + | delete_dirtree_cursor_t(self) + | + | compare(self, *args) -> 'int' + | compare(self, r) -> int + | r: dirtree_cursor_t const & + | + | is_root_cursor(self, *args) -> 'bool' + | is_root_cursor(self) -> bool + | + | set_root_cursor(self, *args) -> 'void' + | set_root_cursor(self) + | + | valid(self, *args) -> 'bool' + | valid(self) -> bool + | + | ---------------------------------------------------------------------- + | Static methods defined here: + | + | root_cursor(*args) -> 'dirtree_cursor_t' + | root_cursor() -> dirtree_cursor_t + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | parent + | dirtree_cursor_t_parent_get(self) -> diridx_t + | + | rank + | dirtree_cursor_t_rank_get(self) -> size_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + +Help on function dirtree_cursor_t_root_cursor in module ida_dirtree: + +dirtree_cursor_t_root_cursor(*args) -> 'dirtree_cursor_t' + dirtree_cursor_t_root_cursor() -> dirtree_cursor_t + +Help on class dirtree_cursor_vec_t in module ida_dirtree: + +class dirtree_cursor_vec_t(builtins.object) + | Proxy of C++ qvector< dirtree_cursor_t > class. + | + | Methods defined here: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: qvector< dirtree_cursor_t > const & + | + | __getitem__(self, *args) -> 'dirtree_cursor_t const &' + | __getitem__(self, i) -> dirtree_cursor_t + | i: size_t + | + | __init__(self, *args) + | __init__(self) -> dirtree_cursor_vec_t + | x: qvector< dirtree_cursor_t > const & + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: qvector< dirtree_cursor_t > const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: dirtree_cursor_t const & + | + | __swig_destroy__ = delete_dirtree_cursor_vec_t(...) + | delete_dirtree_cursor_vec_t(self) + | + | _del(self, *args) -> 'bool' + | _del(self, x) -> bool + | x: dirtree_cursor_t const & + | + | add_unique(self, *args) -> 'bool' + | add_unique(self, x) -> bool + | x: dirtree_cursor_t const & + | + | at(self, *args) -> 'dirtree_cursor_t const &' + | at(self, _idx) -> dirtree_cursor_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) -> 'qvector< dirtree_cursor_t >::const_iterator' + | begin(self) -> dirtree_cursor_t + | begin(self) -> dirtree_cursor_t + | + | capacity(self, *args) -> 'size_t' + | capacity(self) -> size_t + | + | clear(self, *args) -> 'void' + | clear(self) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'qvector< dirtree_cursor_t >::const_iterator' + | end(self) -> dirtree_cursor_t + | end(self) -> dirtree_cursor_t + | + | erase(self, *args) -> 'qvector< dirtree_cursor_t >::iterator' + | erase(self, it) -> dirtree_cursor_t + | it: qvector< dirtree_cursor_t >::iterator + | + | + | erase(self, first, last) -> dirtree_cursor_t + | first: qvector< dirtree_cursor_t >::iterator + | last: qvector< dirtree_cursor_t >::iterator + | + | extract(self, *args) -> 'dirtree_cursor_t *' + | extract(self) -> dirtree_cursor_t + | + | find(self, *args) -> 'qvector< dirtree_cursor_t >::const_iterator' + | find(self, x) -> dirtree_cursor_t + | x: dirtree_cursor_t const & + | + | + | find(self, x) -> dirtree_cursor_t + | x: dirtree_cursor_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) -> 'void' + | grow(self, x=dirtree_cursor_t()) + | x: dirtree_cursor_t const & + | + | has(self, *args) -> 'bool' + | has(self, x) -> bool + | x: dirtree_cursor_t const & + | + | inject(self, *args) -> 'void' + | inject(self, s, len) + | s: dirtree_cursor_t * + | len: size_t + | + | insert(self, *args) -> 'qvector< dirtree_cursor_t >::iterator' + | insert(self, it, x) -> dirtree_cursor_t + | it: qvector< dirtree_cursor_t >::iterator + | x: dirtree_cursor_t const & + | + | pop_back(self, *args) -> 'void' + | pop_back(self) + | + | push_back(self, *args) -> 'dirtree_cursor_t &' + | push_back(self, x) + | x: dirtree_cursor_t const & + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | reserve(self, *args) -> 'void' + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) -> 'void' + | resize(self, _newsize, x) + | _newsize: size_t + | x: dirtree_cursor_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) -> 'size_t' + | size(self) -> size_t + | + | swap(self, *args) -> 'void' + | swap(self, r) + | r: qvector< dirtree_cursor_t > & + | + | truncate(self, *args) -> 'void' + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + +Help on class dirtree_iterator_t in module ida_dirtree: + +class dirtree_iterator_t(builtins.object) + | Proxy of C++ dirtree_iterator_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> dirtree_iterator_t + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_dirtree_iterator_t(...) + | delete_dirtree_iterator_t(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | cursor + | dirtree_iterator_t_cursor_get(self) -> dirtree_cursor_t + | + | pattern + | dirtree_iterator_t_pattern_get(self) -> qstring * + | + | thisown + | The membership flag + +Help on class dirtree_selection_t in module ida_dirtree: + +class dirtree_selection_t(dirtree_cursor_vec_t) + | Proxy of C++ dirtree_selection_t class. + | + | Method resolution order: + | dirtree_selection_t + | dirtree_cursor_vec_t + | builtins.object + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> dirtree_selection_t + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_dirtree_selection_t(...) + | delete_dirtree_selection_t(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Methods inherited from dirtree_cursor_vec_t: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: qvector< dirtree_cursor_t > const & + | + | __getitem__(self, *args) -> 'dirtree_cursor_t const &' + | __getitem__(self, i) -> dirtree_cursor_t + | i: size_t + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: qvector< dirtree_cursor_t > const & + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: dirtree_cursor_t const & + | + | _del(self, *args) -> 'bool' + | _del(self, x) -> bool + | x: dirtree_cursor_t const & + | + | add_unique(self, *args) -> 'bool' + | add_unique(self, x) -> bool + | x: dirtree_cursor_t const & + | + | at(self, *args) -> 'dirtree_cursor_t const &' + | at(self, _idx) -> dirtree_cursor_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) -> 'qvector< dirtree_cursor_t >::const_iterator' + | begin(self) -> dirtree_cursor_t + | begin(self) -> dirtree_cursor_t + | + | capacity(self, *args) -> 'size_t' + | capacity(self) -> size_t + | + | clear(self, *args) -> 'void' + | clear(self) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'qvector< dirtree_cursor_t >::const_iterator' + | end(self) -> dirtree_cursor_t + | end(self) -> dirtree_cursor_t + | + | erase(self, *args) -> 'qvector< dirtree_cursor_t >::iterator' + | erase(self, it) -> dirtree_cursor_t + | it: qvector< dirtree_cursor_t >::iterator + | + | + | erase(self, first, last) -> dirtree_cursor_t + | first: qvector< dirtree_cursor_t >::iterator + | last: qvector< dirtree_cursor_t >::iterator + | + | extract(self, *args) -> 'dirtree_cursor_t *' + | extract(self) -> dirtree_cursor_t + | + | find(self, *args) -> 'qvector< dirtree_cursor_t >::const_iterator' + | find(self, x) -> dirtree_cursor_t + | x: dirtree_cursor_t const & + | + | + | find(self, x) -> dirtree_cursor_t + | x: dirtree_cursor_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) -> 'void' + | grow(self, x=dirtree_cursor_t()) + | x: dirtree_cursor_t const & + | + | has(self, *args) -> 'bool' + | has(self, x) -> bool + | x: dirtree_cursor_t const & + | + | inject(self, *args) -> 'void' + | inject(self, s, len) + | s: dirtree_cursor_t * + | len: size_t + | + | insert(self, *args) -> 'qvector< dirtree_cursor_t >::iterator' + | insert(self, it, x) -> dirtree_cursor_t + | it: qvector< dirtree_cursor_t >::iterator + | x: dirtree_cursor_t const & + | + | pop_back(self, *args) -> 'void' + | pop_back(self) + | + | push_back(self, *args) -> 'dirtree_cursor_t &' + | push_back(self, x) + | x: dirtree_cursor_t const & + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | reserve(self, *args) -> 'void' + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) -> 'void' + | resize(self, _newsize, x) + | _newsize: size_t + | x: dirtree_cursor_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) -> 'size_t' + | size(self) -> size_t + | + | swap(self, *args) -> 'void' + | swap(self, r) + | r: qvector< dirtree_cursor_t > & + | + | truncate(self, *args) -> 'void' + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from dirtree_cursor_vec_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | ---------------------------------------------------------------------- + | Data and other attributes inherited from dirtree_cursor_vec_t: + | + | __hash__ = None + +Help on class dirtree_t in module ida_dirtree: + +class dirtree_t(builtins.object) + | Proxy of C++ dirtree_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self, ds) -> dirtree_t + | ds: dirspec_t * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_dirtree_t(...) + | delete_dirtree_t(self) + | + | change_rank(self, *args) -> 'dterr_t' + | Change ordering rank of an item.All subdirectories go before all file + | entries. + | + | change_rank(self, path, rank_delta) -> dterr_t + | @param path: path to the item (C++: const char *) + | @param rank_delta (C++: ssize_t) + | @return: dterr_t error code + | + | chdir(self, *args) -> 'dterr_t' + | Change current directory + | + | chdir(self, path) -> dterr_t + | @param path: new current directory (C++: const char *) + | @return: dterr_t error code + | + | findfirst(self, *args) -> 'bool' + | Start iterating over files in a directory + | + | findfirst(self, ff, pattern) -> bool + | @param ff: directory iterator. it will be initialized by the function + | (C++: dirtree_iterator_t *) + | @param pattern: pattern to search for (C++: const char *) + | @return: success + | + | findnext(self, *args) -> 'bool' + | Continue iterating over files in a directory + | + | findnext(self, ff) -> bool + | @param ff: directory iterator (C++: dirtree_iterator_t *) + | @return: success + | + | get_abspath(self, *args) -> 'qstring' + | Get absolute path pointed by the cursorsee also 'resolve_cursor()' + | + | get_abspath(self, cursor) -> qstring + | @param cursor (C++: const dirtree_cursor_t &) + | @return: path. empty path means wrong directory part of RELPATH + | + | + | get_abspath(self, relpath) -> qstring + | relpath: char const * + | @return: path. empty path means wrong directory part of RELPATH + | + | get_dir_size(self, *args) -> 'ssize_t' + | Get dir size + | + | get_dir_size(self, diridx) -> ssize_t + | @param diridx: directory index (C++: diridx_t) + | @return: number of entries under this directory; if error, return -1 + | + | get_entry_attrs(self, *args) -> 'qstring' + | Get entry attributes + | + | get_entry_attrs(self, de) -> qstring + | @param de: directory entry (C++: const direntry_t &) + | @return: name + | + | get_entry_name(self, *args) -> 'qstring' + | Get entry name + | + | get_entry_name(self, de) -> qstring + | @param de: directory entry (C++: const direntry_t &) + | @return: name + | + | get_nodename(self, *args) -> 'char const *' + | netnode name + | + | get_parent_cursor(self, *args) -> 'dirtree_cursor_t' + | Get parent cursor. + | + | get_parent_cursor(self, cursor) -> dirtree_cursor_t + | @param cursor: a valid ditree cursor (C++: const dirtree_cursor_t &) + | @return: cursor's parent + | + | get_rank(self, *args) -> 'ssize_t' + | Get ordering rank of an item. + | + | get_rank(self, diridx, de) -> ssize_t + | @param diridx: index of the parent directory (C++: diridx_t) + | @param de: directory entry (C++: const direntry_t &) + | @return: number in a range of [0..n) where n is the number of entries + | in the parent directory. -1 if error + | + | getcwd(self, *args) -> 'qstring' + | Get current directory + | + | isdir(self, *args) -> 'bool' + | Is a directory? + | + | isdir(self, de) -> bool + | de: direntry_t const & + | @return: true if the specified path is a directory + | + | + | isdir(self, path) -> bool + | path: char const * + | @return: true if the specified path is a directory + | + | isfile(self, *args) -> 'bool' + | Is a file? + | + | isfile(self, de) -> bool + | de: direntry_t const & + | @return: true if the specified path is a file + | + | + | isfile(self, path) -> bool + | path: char const * + | @return: true if the specified path is a file + | + | link(self, *args) -> 'dterr_t' + | Add a file item into a directory. + | + | link(self, path) -> dterr_t + | @param path: path to item to add to a directory (C++: const char *) + | @return: dterr_t error code + | + | + | link(self, inode) -> dterr_t + | inode: inode_t + | @return: dterr_t error code + | + | load(self, *args) -> 'bool' + | Load the tree structure from the netnode. If dirspec_t::nodename is + | empty, the operation will be considered a success. In addition, + | calling 'load()' more than once will not do anything, and will be + | considered a success.dirspec_t::nodename. + | + | mkdir(self, *args) -> 'dterr_t' + | Create a directory. + | + | mkdir(self, path) -> dterr_t + | @param path: directory to create (C++: const char *) + | @return: dterr_t error code + | + | notify_dirtree(self, *args) -> 'void' + | Notify dirtree about a change of an inode. + | + | notify_dirtree(self, added, inode) + | @param added (C++: bool) + | @param inode: inode in question (C++: inode_t) + | + | rename(self, *args) -> 'dterr_t' + | Rename a directory entry.This function can also rename the item + | + | rename(self, _from, to) -> dterr_t + | @param _from: source path (C++: const char *) + | @param to: destination path (C++: const char *) + | @return: dterr_t error code + | + | resolve_cursor(self, *args) -> 'direntry_t' + | Resolve cursorsee also 'get_abspath()' + | + | resolve_cursor(self, cursor) -> direntry_t + | @param cursor: to analyze (C++: const dirtree_cursor_t &) + | @return: directory entry; if the cursor is bad, the resolved entry + | will be invalid. + | + | resolve_path(self, *args) -> 'direntry_t' + | Resolve path + | + | resolve_path(self, path) -> direntry_t + | @param path: to analyze (C++: const char *) + | @return: directory entry + | + | rmdir(self, *args) -> 'dterr_t' + | Remove a directory. + | + | rmdir(self, path) -> dterr_t + | @param path: directory to delete (C++: const char *) + | @return: dterr_t error code + | + | save(self, *args) -> 'bool' + | Save the tree structure to the netnode.dirspec_t::nodename. + | + | set_nodename(self, *args) -> 'void' + | set_nodename(self, nm) + | @param nm (C++: const char *) + | + | unlink(self, *args) -> 'dterr_t' + | Remove a file item from a directory. + | + | unlink(self, path) -> dterr_t + | @param path: path to item remove from a directory (C++: const char *) + | @return: dterr_t error code + | + | + | unlink(self, inode) -> dterr_t + | inode: inode_t + | @return: dterr_t error code + | + | ---------------------------------------------------------------------- + | Static methods defined here: + | + | errstr(*args) -> 'char const *' + | errstr(err) -> char const * + | err: enum dterr_t + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + +Help on function dirtree_t_errstr in module ida_dirtree: + +dirtree_t_errstr(*args) -> 'char const *' + dirtree_t_errstr(err) -> char const * + err: enum dterr_t + +Help on function get_std_dirtree in module ida_dirtree: + +get_std_dirtree(*args) -> 'dirtree_t *' + get_std_dirtree(id) -> dirtree_t + @param id (C++: dirtree_id_t) + Help on function choose_ioport_device2 in module ida_diskio: choose_ioport_device2(*args) -> 'bool' @@ -8709,7 +9973,7 @@ exec_system_script(*args) -> 'bool' exec_system_script(file, complain_if_no_file=True) -> bool @param file: file name with IDC function(s). The file will be searched - in the idc subdir of ida (C++: const char *) + using get_idc_filename() . (C++: const char *) @param complain_if_no_file: 1: display warning if the file is not found 0: don't complain if file doesn't exist (C++: bool) @@ -8764,7 +10028,7 @@ Help on function get_idc_filename in module ida_expr: get_idc_filename(*args) -> 'char const *' Get full name of IDC file name. Search for file in list of include - directories, IDCPATH directory and the current directory. + directories, IDCPATH directory and system directories. get_idc_filename(file) -> str @param file: file name without full path (C++: const char *) @@ -8916,9 +10180,6 @@ class idc_value_t(builtins.object) | _create_empty_string(self, *args) -> 'void' | _create_empty_string(self) | - | _idc_value_t__get_e = __get_e(self, *args) -> 'wrapped_array_t< ushort,6 >' - | __get_e(self) -> wrapped_array_t< ushort,6 > - | | c_str(self, *args) -> 'char const *' | 'VT_STR' | @@ -8943,7 +10204,7 @@ class idc_value_t(builtins.object) | | set_float(self, *args) -> 'void' | set_float(self, f) - | f: ushort const [6] + | f: fpvalue_t const & | | set_int64(self, *args) -> 'void' | set_int64(self, v) @@ -8985,7 +10246,7 @@ class idc_value_t(builtins.object) | list of weak references to the object (if defined) | | e - | __get_e(self) -> wrapped_array_t< ushort,6 > + | idc_value_t_e_get(self) -> fpvalue_t | | funcidx | idc_value_t_funcidx_get(self) -> int @@ -9736,6 +10997,24 @@ get_prev_fixup_ea(*args) -> 'ea_t' @param ea: current address (C++: ea_t) @return: the previous address with fixup information, or BADADDR +Help on function handle_fixups_in_macro in module ida_fixup: + +handle_fixups_in_macro(*args) -> 'bool' + Handle two fixups in a macro. We often combine two instruction that + load parts of a value into one macro instruction. For example: ARM: + ADRP X0, #var@PAGE ADD X0, X0, #var@PAGEOFF --> ADRL X0, var MIPS: lui + $v0, hi(var) addiu $v0, $v0, lo(var) --> la $v0, var When applying the + fixups that fall inside such a macro, we should convert them to one + refinfo. This function does exactly that. It should be called from the + apply() callback of a custom fixup. + + handle_fixups_in_macro(ri, ea, other, macro_reft_and_flags) -> bool + @param ri (C++: refinfo_t *) + @param ea (C++: ea_t) + @param other (C++: fixup_type_t) + @param macro_reft_and_flags (C++: uint32) + @return: success ('false' means that RI was not changed) + Help on function is_fixup_custom in module ida_fixup: is_fixup_custom(*args) -> 'bool' @@ -10151,6 +11430,12 @@ frame_off_savregs(*args) -> 'ea_t' frame_off_savregs(pfn) -> ea_t @param pfn (C++: const func_t *) +Help on function free_regvar in module ida_frame: + +free_regvar(*args) -> 'void' + free_regvar(v) + @param v (C++: struct regvar_t *) + Help on function get_effective_spd in module ida_frame: get_effective_spd(*args) -> 'sval_t' @@ -10316,12 +11601,17 @@ class regvar_t(ida_range.range_t) | | __init__(self, *args) | __init__(self) -> regvar_t + | r: regvar_t const & | | __repr__ = _swig_repr(self) | | __swig_destroy__ = delete_regvar_t(...) | delete_regvar_t(self) | + | swap(self, *args) -> 'void' + | swap(self, r) + | @param r (C++: regvar_t &) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -11283,6 +12573,12 @@ find_func_bounds(*args) -> 'int' @param flags: Find function bounds flags (C++: int) @return: Find function bounds result codes +Help on function free_regarg in module ida_funcs: + +free_regarg(*args) -> 'void' + free_regarg(v) + @param v (C++: struct regarg_t *) + Help on function func_contains in module ida_funcs: func_contains(*args) -> 'bool' @@ -12171,12 +13467,17 @@ class regarg_t(builtins.object) | | __init__(self, *args) | __init__(self) -> regarg_t + | r: regarg_t const & | | __repr__ = _swig_repr(self) | | __swig_destroy__ = delete_regarg_t(...) | delete_regarg_t(self) | + | swap(self, *args) -> 'void' + | swap(self, r) + | @param r (C++: regarg_t &) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -12578,6 +13879,140 @@ class FlowChart(builtins.object) | | size +Help on class cancellable_graph_t in module ida_gdl: + +class cancellable_graph_t(gdl_graph_t) + | Proxy of C++ cancellable_graph_t class. + | + | Method resolution order: + | cancellable_graph_t + | gdl_graph_t + | builtins.object + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> cancellable_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_cancellable_graph_t(...) + | delete_cancellable_graph_t(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | cancelled + | cancellable_graph_t_cancelled_get(self) -> bool + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Methods inherited from gdl_graph_t: + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + Help on function display_gdl in module ida_gdl: display_gdl(*args) -> 'int' @@ -12589,6 +14024,126 @@ display_gdl(*args) -> 'int' @param fname (C++: const char *) @return: error code from os, 0 if ok +Help on class gdl_graph_t in module ida_gdl: + +class gdl_graph_t(builtins.object) + | Proxy of C++ gdl_graph_t class. + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> gdl_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_gdl_graph_t(...) + | delete_gdl_graph_t(self) + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + Help on function gen_complex_call_chart in module ida_gdl: gen_complex_call_chart(*args) -> 'bool' @@ -12834,9 +14389,15 @@ class qbasic_block_t(ida_range.range_t) Help on class qflow_chart_t in module ida_gdl: -class qflow_chart_t(builtins.object) +class qflow_chart_t(cancellable_graph_t) | Proxy of C++ qflow_chart_t class. | + | Method resolution order: + | qflow_chart_t + | cancellable_graph_t + | gdl_graph_t + | builtins.object + | | Methods defined here: | | __getitem__(self, *args) -> 'qbasic_block_t *' @@ -12880,10 +14441,8 @@ class qflow_chart_t(builtins.object) | @param _flags (C++: int) | | get_node_label(self, *args) -> 'char *' - | get_node_label(self, arg2, arg3, arg4) -> char * - | arg2: char * - | arg3: int - | arg4: int + | get_node_label(self, n) -> char * + | @param n (C++: int) | | is_noret_block(self, *args) -> 'bool' | is_noret_block(self, blknum) -> bool @@ -12910,9 +14469,9 @@ class qflow_chart_t(builtins.object) | print_names(self) -> bool | | print_node_attributes(self, *args) -> 'void' - | print_node_attributes(self, arg2, arg3) - | arg2: FILE * - | arg3: int + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) | | refresh(self, *args) -> 'void' | refresh(self) @@ -12928,12 +14487,6 @@ class qflow_chart_t(builtins.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | bounds | qflow_chart_t_bounds_get(self) -> range_t | @@ -12951,6 +14504,89 @@ class qflow_chart_t(builtins.object) | | title | qflow_chart_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from cancellable_graph_t: + | + | __disown__(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from cancellable_graph_t: + | + | cancelled + | cancellable_graph_t_cancelled_get(self) -> bool + | + | ---------------------------------------------------------------------- + | Methods inherited from gdl_graph_t: + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) === ida_gdl EPYDOC INJECTIONS === ida_gdl.CHART_FOLLOW_DIRECTION @@ -13390,6 +15026,180 @@ class TPointDouble(builtins.object) | | __hash__ = None +Help on class abstract_graph_t in module ida_graph: + +class abstract_graph_t(ida_gdl.gdl_graph_t) + | Proxy of C++ abstract_graph_t class. + | + | Method resolution order: + | abstract_graph_t + | ida_gdl.gdl_graph_t + | builtins.object + | + | Methods defined here: + | + | __disown__(self) + | + | __init__(self, *args) + | __init__(self) -> abstract_graph_t + | self: PyObject * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_abstract_graph_t(...) + | delete_abstract_graph_t(self) + | + | create_circle_layout(self, *args) -> 'bool' + | create_circle_layout(self, p, radius) -> bool + | @param p (C++: point_t) + | @param radius (C++: int) + | + | create_tree_layout(self, *args) -> 'bool' + | create_tree_layout(self) -> bool + | + | get_edge(self, *args) -> 'edge_info_t' + | get_edge(self, e) -> edge_info_t + | @param e (C++: edge_t) + | + | grcall(self, *args) -> 'ssize_t' + | grcall(self, code) -> ssize_t + | @param code (C++: int) + | + | nrect(self, *args) -> 'rect_t' + | nrect(self, n) -> rect_t + | @param n (C++: int) + | + | set_callback(self, *args) -> 'void' + | set_callback(self, _callback, _ud) + | @param _callback (C++: hook_cb_t *) + | @param _ud (C++: void *) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | callback_ud + | abstract_graph_t_callback_ud_get(self) -> void * + | + | circle_center + | abstract_graph_t_circle_center_get(self) -> point_t + | + | circle_radius + | abstract_graph_t_circle_radius_get(self) -> int + | + | current_layout + | abstract_graph_t_current_layout_get(self) -> layout_type_t + | + | rect_edges_made + | abstract_graph_t_rect_edges_made_get(self) -> bool + | + | thisown + | The membership flag + | + | title + | abstract_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + Help on function calc_dist in module ida_graph: calc_dist(*args) -> 'double' @@ -14037,61 +15847,98 @@ class interval_t(builtins.object) Help on class mutable_graph_t in module ida_graph: -class mutable_graph_t(builtins.object) +class mutable_graph_t(abstract_graph_t) | Proxy of C++ mutable_graph_t class. | + | Method resolution order: + | mutable_graph_t + | abstract_graph_t + | ida_gdl.gdl_graph_t + | builtins.object + | | Methods defined here: | - | __disown__(self) - | | __init__(self, *args, **kwargs) - | Initialize self. See help(type(self)) for accurate signature. + | __init__(self) -> abstract_graph_t + | self: PyObject * | | __repr__ = _swig_repr(self) | | __swig_destroy__ = delete_mutable_graph_t(...) | delete_mutable_graph_t(self) | + | add_edge(self, *args) -> 'bool' + | add_edge(self, i, j, ei) -> bool + | @param i (C++: int) + | @param j (C++: int) + | @param ei (C++: const edge_info_t *) + | + | add_node(self, *args) -> 'int' + | Add a node, possibly with a specific geometry + | + | add_node(self, r) -> int + | @param r: the node geometry (can be nullptr) (C++: const rect_t *) + | @return: the new node + | | calc_group_ea(self, *args) -> 'ea_t' - | calc_group_ea(self, arg0) -> ea_t - | arg0: intvec_t const & + | calc_group_ea(self, arg2) -> ea_t + | arg2: intvec_t const & | | change_group_visibility(self, *args) -> 'bool' + | Expand/collapse a group node + | | change_group_visibility(self, group, expand) -> bool - | @param group (C++: int) - | @param expand (C++: bool) - | - | clear(self, *args) -> 'void' - | clear(self) + | @param group: the group node (C++: int) + | @param expand: whether to expand or collapse (C++: bool) + | @return: success | | create_digraph_layout(self, *args) -> 'bool' | create_digraph_layout(self) -> bool | | create_group(self, *args) -> 'int' + | Create a new group node, that will contain all the nodes in 'nodes'. + | | create_group(self, nodes) -> int - | @param nodes (C++: const intvec_t &) + | @param nodes: the nodes that will be part of the group (C++: const + | intvec_t &) + | @return: the group node, or -1 in case of error | | del_custom_layout(self, *args) -> 'void' | del_custom_layout(self) | + | del_edge(self, *args) -> 'bool' + | del_edge(self, i, j) -> bool + | @param i (C++: int) + | @param j (C++: int) + | + | del_node(self, *args) -> 'ssize_t' + | Delete a node + | + | del_node(self, n) -> ssize_t + | @param n: the node to delete (C++: int) + | @return: the number of deleted edges + | | delete_group(self, *args) -> 'bool' + | Delete a group node.This deletes the group node only; it does not + | delete nodes that are part of the group. + | | delete_group(self, group) -> bool - | @param group (C++: int) + | @param group: the group node (C++: int) + | @return: success | | empty(self, *args) -> 'bool' - | empty(self) -> bool + | Is the graph (visually) empty? | | exists(self, *args) -> 'bool' + | Is the node visible? + | | exists(self, node) -> bool - | @param node (C++: int) + | @param node: the node number (C++: int) + | @return: success | | get_custom_layout(self, *args) -> 'bool' | get_custom_layout(self) -> bool | - | get_edge(self, *args) -> 'edge_info_t' - | get_edge(self, e) -> edge_info_t - | @param e (C++: edge_t) - | | get_first_subgraph_node(self, *args) -> 'int' | get_first_subgraph_node(self, group) -> int | @param group (C++: int) @@ -14109,8 +15956,15 @@ class mutable_graph_t(builtins.object) | @param node (C++: int) | | get_node_representative(self, *args) -> 'int' + | Get the node that currently visually represents 'node'. This will find + | the "closest" parent group node that's visible, by attempting to walk + | up the group nodes that contain 'node', and will stop when it finds a + | node that is currently visible.See also get_group_node() + | | get_node_representative(self, node) -> int - | @param node (C++: int) + | @param node: the node (C++: int) + | @return: the node that represents 'node', or 'node' if it's not part + | of any group | | is_collapsed_node(self, *args) -> 'bool' | is_collapsed_node(self, node) -> bool @@ -14148,24 +16002,21 @@ class mutable_graph_t(builtins.object) | is_user_graph(self) -> bool | | is_visible_node(self, *args) -> 'bool' + | Is the node currently visible?An invisible node is a node that's part + | of a group that's currently collapsed. + | | is_visible_node(self, node) -> bool - | @param node (C++: int) + | @param node: the node (C++: int) + | @return: success | | node_qty(self, *args) -> 'int' - | node_qty(self) -> int + | Get the number of visible nodes (the list can be retrieved using + | 'gdl.hpp' 's 'node_iterator' )See also size() | | npred(self, *args) -> 'int' | npred(self, b) -> int | @param b (C++: int) | - | nrect(self, *args) -> 'rect_t &' - | nrect(self, n) -> rect_t - | @param n (C++: int) - | - | - | nrect(self, n) -> rect_t - | @param n (C++: int) - | | nsucc(self, *args) -> 'int' | nsucc(self, b) -> int | @param b (C++: int) @@ -14179,9 +16030,38 @@ class mutable_graph_t(builtins.object) | predset(self, b) -> intvec_t const & | @param b (C++: int) | + | redo_layout(self, *args) -> 'bool' + | Recompute the layout, according to the value of 'current_layout'. + | + | refresh(self, *args) -> 'bool' + | Refresh the graphA graph needs refreshing when it's "backing data". + | E.g., if the number (or contents) of the objects in the above example, + | change.Let's say the user's plugin ends up finding a 5th piece of + | scattered data. It should then add it to its internal list of known + | objects, and tell IDA that the graph needs to be refreshed, using + | 'refresh_viewer()' . This will cause IDA to:discard all its internal + | rendering information,call 'mutable_graph_t::refresh()' on the graph + | so that the user's plugin has a chance to "sync" the number of nodes & + | edges that this graph contains, to the information that the plugin has + | collected so farre-create internal rendering information, andrepaint + | the view + | + | replace_edge(self, *args) -> 'bool' + | replace_edge(self, i, j, x, y) -> bool + | @param i (C++: int) + | @param j (C++: int) + | @param x (C++: int) + | @param y (C++: int) + | | reset(self, *args) -> 'void' | reset(self) | + | resize(self, *args) -> 'void' + | Resize the graph to 'n' nodes + | + | resize(self, n) + | @param n: the new size (C++: int) + | | set_custom_layout(self, *args) -> 'void' | set_custom_layout(self) | @@ -14202,8 +16082,14 @@ class mutable_graph_t(builtins.object) | @param node (C++: int) | @param group (C++: int) | + | set_nrect(self, *args) -> 'bool' + | set_nrect(self, n, r) -> bool + | @param n (C++: int) + | @param r (C++: const rect_t &) + | | size(self, *args) -> 'int' - | size(self) -> int + | Get the total number of nodes (including group nodes, and including + | hidden nodes.)See also node_qty() | | succ(self, *args) -> 'int' | succ(self, b, i) -> int @@ -14217,12 +16103,6 @@ class mutable_graph_t(builtins.object) | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | belongs | mutable_graph_t_belongs_get(self) -> intvec_t * | @@ -14239,19 +16119,141 @@ class mutable_graph_t(builtins.object) | mutable_graph_t_nodes_get(self) -> node_layout_t | | org_preds - | mutable_graph_t_org_preds_get(self) -> array_of_intvec_t + | mutable_graph_t_org_preds_get(self) -> array_of_intvec_t * | | org_succs - | mutable_graph_t_org_succs_get(self) -> array_of_intvec_t + | mutable_graph_t_org_succs_get(self) -> array_of_intvec_t * | | preds - | mutable_graph_t_preds_get(self) -> array_of_intvec_t + | mutable_graph_t_preds_get(self) -> array_of_intvec_t * | | succs - | mutable_graph_t_succs_get(self) -> array_of_intvec_t + | mutable_graph_t_succs_get(self) -> array_of_intvec_t * | | thisown | The membership flag + | + | ---------------------------------------------------------------------- + | Methods inherited from abstract_graph_t: + | + | __disown__(self) + | + | create_circle_layout(self, *args) -> 'bool' + | create_circle_layout(self, p, radius) -> bool + | @param p (C++: point_t) + | @param radius (C++: int) + | + | create_tree_layout(self, *args) -> 'bool' + | create_tree_layout(self) -> bool + | + | get_edge(self, *args) -> 'edge_info_t' + | get_edge(self, e) -> edge_info_t + | @param e (C++: edge_t) + | + | grcall(self, *args) -> 'ssize_t' + | grcall(self, code) -> ssize_t + | @param code (C++: int) + | + | nrect(self, *args) -> 'rect_t' + | nrect(self, n) -> rect_t + | @param n (C++: int) + | + | set_callback(self, *args) -> 'void' + | set_callback(self, _callback, _ud) + | @param _callback (C++: hook_cb_t *) + | @param _ud (C++: void *) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from abstract_graph_t: + | + | callback_ud + | abstract_graph_t_callback_ud_get(self) -> void * + | + | circle_center + | abstract_graph_t_circle_center_get(self) -> point_t + | + | circle_radius + | abstract_graph_t_circle_radius_get(self) -> int + | + | current_layout + | abstract_graph_t_current_layout_get(self) -> layout_type_t + | + | rect_edges_made + | abstract_graph_t_rect_edges_made_get(self) -> bool + | + | title + | abstract_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on class node_info_t in module ida_graph: @@ -14494,10 +16496,18 @@ class node_ordering_t(builtins.object) | clear(self, *args) -> 'void' | clear(self) | + | clr(self, *args) -> 'bool' + | clr(self, _node) -> bool + | @param _node (C++: int) + | | node(self, *args) -> 'int' | node(self, _order) -> int | @param _order (C++: size_t) | + | order(self, *args) -> 'int' + | order(self, _node) -> int + | @param _node (C++: int) + | | resize(self, *args) -> 'void' | resize(self, n) | @param n (C++: int) @@ -15604,7 +17614,7 @@ Help on function viewer_create_groups in module ida_graph: viewer_create_groups(*args) -> 'bool' This will perform an operation similar to what happens when a user manually selects a set of nodes, right-clicks and selects "Create - group". This is a wrapper around mutable_graph_t::create_group that + group". This is a wrapper around 'mutable_graph_t::create_group' that will, in essence:clone the current graphfor each 'group_crinfo_t' , attempt creating group in that new graphif all were successful, animate to that new graph.this accepts parameters that allow creating @@ -15628,9 +17638,9 @@ viewer_del_node_info(*args) -> 'void' Help on function viewer_delete_groups in module ida_graph: viewer_delete_groups(*args) -> 'bool' - Wrapper around mutable_graph_t::delete_group. This function will:clone - the current graphattempt deleting the groups in that new graphif - successful, animate to that new graph. + Wrapper around 'mutable_graph_t::delete_group' . This function + will:clone the current graphattempt deleting the groups in that new + graphif successful, animate to that new graph. viewer_delete_groups(gv, groups, new_current=-1) -> bool @param gv (C++: graph_viewer_t *) @@ -15699,7 +17709,7 @@ viewer_set_gli(*args) -> 'void' Help on function viewer_set_groups_visibility in module ida_graph: viewer_set_groups_visibility(*args) -> 'bool' - Wrapper around mutable_graph_t::change_visibility. This function + Wrapper around 'mutable_graph_t::change_visibility' . This function will:clone the current graphattempt changing visibility of the groups in that new graphif successful, animate to that new graph. @@ -15870,6 +17880,17 @@ class Hexrays_Hooks(builtins.object) | __swig_destroy__ = delete_Hexrays_Hooks(...) | delete_Hexrays_Hooks(self) | + | build_callinfo(self, *args) -> 'int' + | Analyzing a call instruction. + | + | build_callinfo(self, blk, type, callinfo) -> int + | @param blk: blk->tail is the call. (C++: mblock_t *) + | @param type: buffer for the output type. (C++: tinfo_t *) + | @param callinfo: prepared callinfo. Should return: 1 if the function + | type has been determined. The plugin should either + | specify the function type, either allocate and return + | a new mcallinfo_t object. (C++: mcallinfo_t **) + | | close_pseudocode(self, *args) -> 'int' | Pseudocode view is being closed. | @@ -15893,10 +17914,12 @@ class Hexrays_Hooks(builtins.object) | a preceding one (C++: minsn_t *) | | create_hint(self, *args) -> 'PyObject *' - | Create a hint for the current item. + | Create a hint for the current item. 'ui_get_custom_viewer_hint' | | create_hint(self, vu) -> PyObject * | @param vu (C++: vdui_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | curpos(self, *args) -> 'int' | Current cursor position has been changed. (for example, by left- @@ -15921,7 +17944,8 @@ class Hexrays_Hooks(builtins.object) | | func_printed(self, *args) -> 'int' | Function text has been generated. Plugins may modify the text in - | 'cfunc_t::sv' . + | 'cfunc_t::sv' . The text uses regular color codes (see 'lines.hpp' ) + | COLOR_ADDR is used to store pointers to ctree elements. | | func_printed(self, cfunc) -> int | @param cfunc (C++: cfunc_t *) @@ -16044,7 +18068,8 @@ class Hexrays_Hooks(builtins.object) | | print_func(self, cfunc, vp) -> int | @param cfunc (C++: cfunc_t *) - | @param vp: Returns: 1 if text has been generated by the plugin (C++: + | @param vp: Returns: 1 if text has been generated by the plugin It is + | forbidden to modify ctree at this event. (C++: | vc_printer_t *) | | prolog(self, *args) -> 'int' @@ -16102,9 +18127,9 @@ class Hexrays_Hooks(builtins.object) | Decompiled text is ready. | | text_ready(self, vu) -> int - | @param vu: This event can be used to modify the output text (sv). The - | text uses regular color codes (see lines.hpp) COLOR_ADDR is - | used to store pointers to ctree elements (C++: vdui_t *) + | @param vu: This event can be used to modify the output text (sv). + | Obsolete. Please use hxe_func_printed instead. (C++: + | vdui_t *) | | unhook(self, *args) -> 'bool' | unhook(self) -> bool @@ -16144,10 +18169,12 @@ class __cbhooks_t(Hexrays_Hooks) | @param vu (C++: vdui_t *) | | create_hint(self, *args) - | Create a hint for the current item. + | Create a hint for the current item. 'ui_get_custom_viewer_hint' | | create_hint(self, vu) -> PyObject * | @param vu (C++: vdui_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | curpos(self, *args) | Current cursor position has been changed. (for example, by left- @@ -16166,7 +18193,8 @@ class __cbhooks_t(Hexrays_Hooks) | | func_printed(self, *args) | Function text has been generated. Plugins may modify the text in - | 'cfunc_t::sv' . + | 'cfunc_t::sv' . The text uses regular color codes (see 'lines.hpp' ) + | COLOR_ADDR is used to store pointers to ctree elements. | | func_printed(self, cfunc) -> int | @param cfunc (C++: cfunc_t *) @@ -16212,7 +18240,8 @@ class __cbhooks_t(Hexrays_Hooks) | | print_func(self, cfunc, vp) -> int | @param cfunc (C++: cfunc_t *) - | @param vp: Returns: 1 if text has been generated by the plugin (C++: + | @param vp: Returns: 1 if text has been generated by the plugin It is + | forbidden to modify ctree at this event. (C++: | vc_printer_t *) | | refresh_pseudocode(self, *args) @@ -16242,9 +18271,9 @@ class __cbhooks_t(Hexrays_Hooks) | Decompiled text is ready. | | text_ready(self, vu) -> int - | @param vu: This event can be used to modify the output text (sv). The - | text uses regular color codes (see lines.hpp) COLOR_ADDR is - | used to store pointers to ctree elements (C++: vdui_t *) + | @param vu: This event can be used to modify the output text (sv). + | Obsolete. Please use hxe_func_printed instead. (C++: + | vdui_t *) | | ---------------------------------------------------------------------- | Data and other attributes defined here: @@ -16261,6 +18290,17 @@ class __cbhooks_t(Hexrays_Hooks) | __swig_destroy__ = delete_Hexrays_Hooks(...) | delete_Hexrays_Hooks(self) | + | build_callinfo(self, *args) -> 'int' + | Analyzing a call instruction. + | + | build_callinfo(self, blk, type, callinfo) -> int + | @param blk: blk->tail is the call. (C++: mblock_t *) + | @param type: buffer for the output type. (C++: tinfo_t *) + | @param callinfo: prepared callinfo. Should return: 1 if the function + | type has been determined. The plugin should either + | specify the function type, either allocate and return + | a new mcallinfo_t object. (C++: mcallinfo_t **) + | | cmt_changed(self, *args) -> 'int' | Comment got changed. | @@ -18208,6 +20248,8 @@ class carg_t(cexpr_t) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) -> 'ctype_t' | _get_op(self) -> ctype_t | @@ -19171,6 +21213,8 @@ class ccase_t(cinsn_t) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) -> 'ctype_t' | _get_op(self) -> ctype_t | @@ -20115,6 +22159,8 @@ class cexpr_t(citem_t) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) -> 'ctype_t' | _get_op(self) -> ctype_t | @@ -21123,7 +23169,8 @@ class chain_t(ida_pro.intvec_t) | append_list(self, *args) -> 'void' | Append the contents of the chain to the specified list of locations. | - | append_list(self, list) + | append_list(self, mba, list) + | @param mba (C++: const mba_t *) | @param list (C++: mlist_t *) | | clear_varnum(self, *args) -> 'void' @@ -21779,6 +23826,8 @@ class cinsn_t(citem_t) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) -> 'ctype_t' | _get_op(self) -> ctype_t | @@ -22161,6 +24210,8 @@ class citem_t(builtins.object) | | _ensure_no_op(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_op(self, *args) -> 'ctype_t' | _get_op(self) -> ctype_t | @@ -22491,18 +24542,44 @@ class codegen_t(builtins.object) | gen_micro(self, *args) -> 'merror_t' | Generate microcode for one instruction. The instruction is in INSN | + | load_effective_address(self, *args) -> 'mreg_t' + | Generate microcode to calculate the address of a memory operand. + | + | load_effective_address(self, n, flags=0) -> mreg_t + | @param n: - number of INSN operand (C++: int) + | @param flags: - reserved for future use (C++: int) + | @return: register containing the operand address. mr_none - failed + | (not a memory operand) + | | load_operand(self, *args) -> 'mreg_t' | Generate microcode to load one operand. | - | load_operand(self, opnum) -> mreg_t + | load_operand(self, opnum, flags=0) -> mreg_t | @param opnum (C++: int) + | @param flags: - reserved for future use (C++: int) + | @return: register containing the operand. | | microgen_completed(self, *args) -> 'void' | This method is called when the microcode generation is done. | | prepare_gen_micro(self, *args) -> 'merror_t' - | Setup internal data to handle new instruction This method should be - | called before calling 'gen_micro()' The instruction is in INSN + | Setup internal data to handle new instruction. This method should be + | called before calling 'gen_micro()' . Usually 'gen_micro()' is called + | by the decompiler. You have to call this function explicitly only if + | you yourself call 'gen_micro()' . The instruction is in INSN + | + | store_operand(self, *args) -> 'bool' + | Generate microcode to store an operand. In case of success an + | arbitrary number of instructions can be generated (and even no + | instruction if the source and target are the same) + | + | store_operand(self, n, mop, flags=0, outins=None) -> bool + | @param n: - number of target INSN operand (C++: int) + | @param mop: - operand to be stored (C++: const mop_t &) + | @param flags: - reserved for future use (C++: int) + | @param outins: - (OUT) the last generated instruction (C++: minsn_t + | **) + | @return: success | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -22542,6 +24619,15 @@ convert_to_user_call(*args) -> 'merror_t' @return: Microcode error codes code: MERR_OK - user-defined call generated else - error (MERR_INSN == inacceptable udc.tif) +Help on function create_cfunc in module ida_hexrays: + +create_cfunc(*args) -> 'cfuncptr_t' + Create a new 'cfunc_t' object. + + create_cfunc(mba) -> cfuncptr_t + @param mba: microcode object. After creating the cfunc object it takes + the ownership of MBA. (C++: mba_t *) + Help on function create_field_name in module ida_hexrays: create_field_name(*args) -> 'qstring' @@ -23467,7 +25553,8 @@ class cwhile_t(cloop_t) Help on function debug_hexrays_ctree in module ida_hexrays: debug_hexrays_ctree(*args) -> 'void' - debug_hexrays_ctree(msg) + debug_hexrays_ctree(level, msg) + level: int msg: char const * Help on function decompile in module ida_hexrays: @@ -23866,62 +25953,6 @@ class eamap_t(builtins.object) | valuetype = | Proxy of C++ qvector< cinsn_t * > class. -Help on class fnum_array in module ida_hexrays: - -class fnum_array(builtins.object) - | Proxy of C++ wrapped_array_t< uint16,6 > class. - | - | Methods defined here: - | - | __getitem__(self, *args) -> 'unsigned short const &' - | __getitem__(self, i) -> unsigned short const & - | i: size_t - | - | __init__(self, *args) - | __init__(self, data) -> fnum_array - | data: unsigned short (&)[6] - | - | __iter__ = _bounded_getitem_iterator(self) - | Helper function, to be set as __iter__ method for qvector-, or array-based classes. - | - | __len__(self, *args) -> 'size_t' - | __len__(self) -> size_t - | - | __repr__ = _swig_repr(self) - | - | __setitem__(self, *args) -> 'void' - | __setitem__(self, i, v) - | i: size_t - | v: unsigned short const & - | - | __swig_destroy__ = delete_fnum_array(...) - | delete_fnum_array(self) - | - | _get_bytes(self, *args) -> 'bytevec_t' - | _get_bytes(self) -> bytevec_t - | - | _set_bytes(self, *args) -> 'void' - | _set_bytes(self, bts) - | bts: bytevec_t const & - | - | ---------------------------------------------------------------------- - | Data descriptors defined here: - | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | - | bytes - | _get_bytes(self) -> bytevec_t - | - | data - | fnum_array_data_get(self) -> unsigned short (&)[6] - | - | thisown - | The membership flag - Help on class fnumber_t in module ida_hexrays: class fnumber_t(builtins.object) @@ -23961,9 +25992,6 @@ class fnumber_t(builtins.object) | __swig_destroy__ = delete_fnumber_t(...) | delete_fnumber_t(self) | - | _fnumber_t__get_fnum = __get_fnum(self, *args) -> 'wrapped_array_t< uint16,6 >' - | __get_fnum(self) -> fnum_array - | | _print(self, *args) -> 'void' | _print(self) | @@ -23987,7 +26015,7 @@ class fnumber_t(builtins.object) | list of weak references to the object (if defined) | | fnum - | __get_fnum(self) -> fnum_array + | fnumber_t_fnum_get(self) -> fpvalue_t | | nbytes | fnumber_t_nbytes_get(self) -> int @@ -24023,6 +26051,10 @@ class gco_info_t(builtins.object) | @param list: list to append to (C++: mlist_t *) | @param mba: microcode object (C++: const mba_t *) | + | cvt_to_ivl(self, *args) -> 'vivl_t' + | Convert operand info to VIVL. The returned VIVL can be used, for + | example, in a call of get_valranges(). + | | is_def(self, *args) -> 'bool' | is_def(self) -> bool | @@ -24977,14 +27009,13 @@ class history_t(qvector_history_t) Help on function init_hexrays_plugin in module ida_hexrays: init_hexrays_plugin(*args) -> 'bool' - 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. + Check that your plugin is compatible with hex-rays decompiler. This + function must be called before calling any other decompiler function. init_hexrays_plugin(flags=0) -> bool @param flags: reserved, must be 0 (C++: int) - @return: true if the decompiler exists and the dispatcher pointer is - ready to use. + @return: true if the decompiler exists and is compatible with your + plugin Help on function install_hexrays_callback in module ida_hexrays: @@ -25675,6 +27706,19 @@ Help on function lnot in module ida_hexrays: lnot(e) +Help on function locate_lvar in module ida_hexrays: + +locate_lvar(*args) -> 'bool' + Find a variable by name. + + locate_lvar(out, func_ea, varname) -> bool + @param out: output buffer for the variable locator (C++: + lvar_locator_t *) + @param func_ea: function start address (C++: ea_t) + @param varname: variable name (C++: const char *) + @return: success Since VARNAME is not always enough to find the + variable, it may decompile the function. + Help on class lvar_locator_t in module ida_hexrays: class lvar_locator_t(builtins.object) @@ -26071,6 +28115,9 @@ class lvar_saved_info_t(builtins.object) | clr_noptr_lvar(self, *args) -> 'void' | clr_noptr_lvar(self) | + | clr_unused_lvar(self, *args) -> 'void' + | clr_unused_lvar(self) + | | has_info(self, *args) -> 'bool' | has_info(self) -> bool | @@ -26086,6 +28133,9 @@ class lvar_saved_info_t(builtins.object) | is_noptr_lvar(self, *args) -> 'bool' | is_noptr_lvar(self) -> bool | + | is_unused_lvar(self, *args) -> 'bool' + | is_unused_lvar(self) -> bool + | | set_forced_lvar(self, *args) -> 'void' | set_forced_lvar(self) | @@ -26098,6 +28148,9 @@ class lvar_saved_info_t(builtins.object) | set_noptr_lvar(self, *args) -> 'void' | set_noptr_lvar(self) | + | set_unused_lvar(self, *args) -> 'void' + | set_unused_lvar(self) + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -26327,7 +28380,8 @@ class lvar_t(lvar_locator_t) | append_list(self, *args) -> 'void' | Append local variable to mlist. | - | append_list(self, lst, pad_if_scattered=False) + | append_list(self, mba, lst, pad_if_scattered=False) + | @param mba: ptr to the current mba_t (C++: const mba_t *) | @param lst: list to append to (C++: mlist_t *) | @param pad_if_scattered (C++: bool) | @@ -26340,6 +28394,9 @@ class lvar_t(lvar_locator_t) | clr_automapped(self, *args) -> 'void' | clr_automapped(self) | + | clr_decl_unused(self, *args) -> 'void' + | clr_decl_unused(self) + | | clr_dummy_arg(self, *args) -> 'void' | clr_dummy_arg(self) | @@ -26404,6 +28461,9 @@ class lvar_t(lvar_locator_t) | has_regname(self, *args) -> 'bool' | Has a register name? (like _RAX) | + | in_asm(self, *args) -> 'bool' + | Is variable used in an instruction translated into __asm? + | | is_aliasable(self, *args) -> 'bool' | Is the variable aliasable? | @@ -26415,6 +28475,9 @@ class lvar_t(lvar_locator_t) | is_automapped(self, *args) -> 'bool' | Was the variable automatically mapped to another variable? | + | is_decl_unused(self, *args) -> 'bool' + | Was declared as __unused by the user? See CVAR_UNUSED. + | | is_dummy_arg(self, *args) -> 'bool' | Is a dummy argument (added to fill a hole in the argument list) | @@ -26439,6 +28502,9 @@ class lvar_t(lvar_locator_t) | set_automapped(self, *args) -> 'void' | set_automapped(self) | + | set_decl_unused(self, *args) -> 'void' + | set_decl_unused(self) + | | set_dummy_arg(self, *args) -> 'void' | set_dummy_arg(self) | @@ -26691,6 +28757,9 @@ class lvar_uservec_t(builtins.object) | clear(self, *args) -> 'void' | clear(self) | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | | find_info(self, *args) -> 'lvar_saved_info_t *' | find saved user settings for given var | @@ -27185,7 +29254,7 @@ class mba_t(builtins.object) | | combine_blocks(self, *args) -> 'bool' | Combine blocks. This function merges blocks constituting linear flow. - | It calls 'remove_empty_blocks()' as well. + | It calls 'remove_empty_and_unreachable_blocks()' as well. | | common_stkvars_stkargs(self, *args) -> 'bool' | common_stkvars_stkargs(self) -> bool @@ -27202,6 +29271,23 @@ class mba_t(builtins.object) | (C++: int) | @return: pointer to the new copy | + | create_helper_call(self, *args) -> 'minsn_t *' + | Create a call of a helper function. + | + | create_helper_call(self, ea, helper, rettype=None, callargs=None, out=None) -> minsn_t + | @param ea: The desired address of the instruction (C++: ea_t) + | @param helper: The helper name (C++: const char *) + | @param rettype: The return type (NULL or empty type means 'void') + | (C++: const tinfo_t *) + | @param callargs: The helper arguments (NULL-no arguments) (C++: const + | mcallargs_t *) + | @param out: The operand where the call result should be stored. If + | this argument is not NULL, "mov helper_call(), out" will + | be generated. Otherwise "call helper()" will be generated. + | Note: the size of this operand must be equal to the + | RETTYPE size (C++: const mop_t *) + | @return: pointer to the created instruction or NULL if error + | | deleted_pairs(self, *args) -> 'bool' | deleted_pairs(self) -> bool | @@ -27328,6 +29414,9 @@ class mba_t(builtins.object) | has_passregs(self, *args) -> 'bool' | has_passregs(self) -> bool | + | has_stack_retval(self, *args) -> 'bool' + | has_stack_retval(self) -> bool + | | idaloc2vd(self, *args) -> 'vdloc_t' | idaloc2vd(self, loc, width) -> vdloc_t | @param loc (C++: const argloc_t &) @@ -27433,8 +29522,9 @@ class mba_t(builtins.object) | @return: true if at least one of the other blocks became empty or | unreachable | - | remove_empty_blocks(self, *args) -> 'bool' - | Delete all empty blocks. + | remove_empty_and_unreachable_blocks(self, *args) -> 'bool' + | Delete all empty and unreachable blocks. Blocks marked with MBL_KEEP + | won't be deleted. | | returns_fpval(self, *args) -> 'bool' | returns_fpval(self) -> bool @@ -27454,6 +29544,15 @@ class mba_t(builtins.object) | serialize(self, *args) -> 'void' | Serialize mbl array into a sequence of bytes. | + | set_maturity(self, *args) -> 'bool' + | Set maturity level. + | + | set_maturity(self, mat) -> bool + | @param mat (C++: mba_maturity_t) + | @return: true if it is time to stop analysis Plugins may use this + | function to skip some parts of the analysis. The maturity + | level cannot be decreased. + | | set_mba_flags(self, *args) -> 'void' | set_mba_flags(self, f) | @param f (C++: int) @@ -27553,6 +29652,9 @@ class mba_t(builtins.object) | consumed_argregs | mba_t_consumed_argregs_get(self) -> rlist_t | + | deprecated_idb_node + | mba_t_deprecated_idb_node_get(self) -> netnode + | | entry_ea | mba_t_entry_ea_get(self) -> ea_t | @@ -27587,7 +29689,6 @@ class mba_t(builtins.object) | mba_t_gotoff_stkvars_get(self) -> ivlset_t | | idb_node - | mba_t_idb_node_get(self) -> netnode | | idb_spoiled | mba_t_idb_spoiled_get(self) -> reginfovec_t @@ -27690,12 +29791,14 @@ class mbl_graph_t(simple_graph_t) | Method resolution order: | mbl_graph_t | simple_graph_t + | ida_gdl.gdl_graph_t | builtins.object | | Methods defined here: | | __init__(self, *args, **kwargs) - | Initialize self. See help(type(self)) for accurate signature. + | __init__(self) -> gdl_graph_t + | self: PyObject * | | __repr__ = _swig_repr(self) | @@ -27761,17 +29864,118 @@ class mbl_graph_t(simple_graph_t) | ---------------------------------------------------------------------- | Data descriptors inherited from simple_graph_t: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | colored_gdl_edges | simple_graph_t_colored_gdl_edges_get(self) -> bool | | title | simple_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | __disown__(self) + | + | __swig_destroy__ = delete_gdl_graph_t(...) + | delete_gdl_graph_t(self) + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on class mblock_t in module ida_hexrays: @@ -27962,7 +30166,7 @@ class mblock_t(builtins.object) | @return: zero or the value returned by mmv.visit_mop() | | get_reginsn_qty(self, *args) -> 'size_t' - | Calculate number of register instructions in the block. Assertions are + | Calculate number of regular instructions in the block. Assertions are | skipped by this function. | | get_valranges(self, *args) -> 'bool' @@ -28281,6 +30485,9 @@ class mcallarg_t(mop_t) | ea | mcallarg_t_ea_get(self) -> ea_t | + | flags + | mcallarg_t_flags_get(self) -> uint32 + | | name | mcallarg_t_name_get(self) -> qstring * | @@ -28316,6 +30523,8 @@ class mcallarg_t(mop_t) | | _ensure_no_t(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_a(self, *args) -> 'mop_addr_t *' | _get_a(self) -> mop_addr_t | @@ -28620,7 +30829,8 @@ class mcallarg_t(mop_t) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) -> 'bool' @@ -28767,6 +30977,9 @@ class mcallarg_t(mop_t) | is_one(self, *args) -> 'bool' | is_one(self) -> bool | + | is_pcval(self, *args) -> 'bool' + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) -> 'bool' | is_positive_constant(self) -> bool | @@ -28914,6 +31127,11 @@ class mcallarg_t(mop_t) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) -> 'void' + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) -> 'bool' | Is it possible for the operand to use aliased memory? | @@ -28973,6 +31191,10 @@ class mcallarg_t(mop_t) | unsigned_value(self, *args) -> 'uint64' | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) -> 'void' + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) -> 'uint64' | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -29480,6 +31702,8 @@ class minsn_t(builtins.object) | | _ensure_no_obj(self, o, attr, attr_is_acquired) | + | _ensure_ownership_transferrable(self, v) + | | _make_nop(self, *args) -> 'void' | Convert instruction to nop. This function erases all info but the | prev/next fields. In most cases it is better to use @@ -29701,9 +31925,8 @@ class minsn_t(builtins.object) | is_noret_call(self, *args) -> 'bool' | Is a non-returing call? | - | is_noret_call(self, ignore_noret_icall=False) -> bool - | @param ignore_noret_icall: if set, indirect calls to noret functions - | will return false (C++: bool) + | is_noret_call(self, flags=0) -> bool + | @param flags (C++: int) | | is_optional(self, *args) -> 'bool' | is_optional(self) -> bool @@ -30230,7 +32453,7 @@ modify_user_lvar_info(*args) -> 'bool' Modify saved local variable settings of one variable. modify_user_lvar_info(func_ea, mli_flags, info) -> bool - @param func_ea (C++: ea_t) + @param func_ea: function start address (C++: ea_t) @param mli_flags: bits that specify which attrs defined by INFO are to be set (C++: uint) @param info: local variable info attrs (C++: const lvar_saved_info_t @@ -30316,6 +32539,8 @@ class mop_addr_t(mop_t) | | _ensure_no_t(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_a(self, *args) -> 'mop_addr_t *' | _get_a(self) -> mop_addr_t | @@ -30624,7 +32849,8 @@ class mop_addr_t(mop_t) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) -> 'bool' @@ -30774,6 +33000,9 @@ class mop_addr_t(mop_t) | is_one(self, *args) -> 'bool' | is_one(self) -> bool | + | is_pcval(self, *args) -> 'bool' + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) -> 'bool' | is_positive_constant(self) -> bool | @@ -30917,6 +33146,11 @@ class mop_addr_t(mop_t) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) -> 'void' + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) -> 'bool' | Is it possible for the operand to use aliased memory? | @@ -30976,6 +33210,10 @@ class mop_addr_t(mop_t) | unsigned_value(self, *args) -> 'uint64' | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) -> 'void' + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) -> 'uint64' | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -31125,6 +33363,8 @@ class mop_t(builtins.object) | | _ensure_no_t(self) | + | _ensure_ownership_transferrable(self, v) + | | _get_a(self, *args) -> 'mop_addr_t *' | _get_a(self) -> mop_addr_t | @@ -31433,7 +33673,8 @@ class mop_t(builtins.object) | create_from_vdloc(self, mba, loc, _size) | @param mba: pointer to microcode (C++: mba_t *) | @param loc: location (C++: const vdloc_t &) - | @param _size (C++: int) + | @param _size: operand size Note: this function cannot handle scattered + | locations. (C++: int) | @return: success | | double_size(self, *args) -> 'bool' @@ -31583,6 +33824,9 @@ class mop_t(builtins.object) | is_one(self, *args) -> 'bool' | is_one(self) -> bool | + | is_pcval(self, *args) -> 'bool' + | is_pcval(self) -> bool + | | is_positive_constant(self, *args) -> 'bool' | is_positive_constant(self) -> bool | @@ -31730,6 +33974,11 @@ class mop_t(builtins.object) | @param width: the desired size of the operand part in bytes (C++: int) | @return: success | + | make_stkvar(self, *args) -> 'void' + | make_stkvar(self, mba, off) + | @param mba (C++: mba_t *) + | @param off (C++: sval_t) + | | may_use_aliased_memory(self, *args) -> 'bool' | Is it possible for the operand to use aliased memory? | @@ -31789,6 +34038,10 @@ class mop_t(builtins.object) | unsigned_value(self, *args) -> 'uint64' | unsigned_value(self) -> uint64 | + | update_numop_value(self, *args) -> 'void' + | update_numop_value(self, val) + | @param val (C++: uint64) + | | value(self, *args) -> 'uint64' | Retrieve value of a constant integer operand. These functions can be | called only for mop_n operands. See 'is_constant()' that can be called @@ -32356,48 +34609,6 @@ class operand_locator_t(builtins.object) | | __hash__ = None -Help on class operator_info_t in module ida_hexrays: - -class operator_info_t(builtins.object) - | Proxy of C++ operator_info_t class. - | - | Methods defined here: - | - | __init__(self, *args) - | __init__(self) -> operator_info_t - | - | __repr__ = _swig_repr(self) - | - | __swig_destroy__ = delete_operator_info_t(...) - | delete_operator_info_t(self) - | - | ---------------------------------------------------------------------- - | Data descriptors defined here: - | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | - | fixtype - | operator_info_t_fixtype_get(self) -> uchar - | - | flags - | operator_info_t_flags_get(self) -> uchar - | - | precedence - | operator_info_t_precedence_get(self) -> uchar - | - | text - | operator_info_t_text_get(self) -> char const * - | - | thisown - | The membership flag - | - | valency - | operator_info_t_valency_get(self) -> uchar - Help on class optblock_t in module ida_hexrays: class optblock_t(builtins.object) @@ -33479,6 +35690,18 @@ Help on function remove_hexrays_callback in module ida_hexrays: remove_hexrays_callback(callback) Deprecated. Please use Hexrays_Hooks instead +Help on function rename_lvar in module ida_hexrays: + +rename_lvar(*args) -> 'bool' + Rename a local variable. + + rename_lvar(func_ea, oldname, newname) -> bool + @param func_ea: function start address (C++: ea_t) + @param oldname: old name of the variable (C++: const char *) + @param newname: new name of the variable (C++: const char *) + @return: success This is a convenience function. For bulk renaming + consider using modify_user_lvars. + Help on function restore_user_cmts in module ida_hexrays: restore_user_cmts(*args) -> 'user_cmts_t *' @@ -33851,10 +36074,10 @@ class scif_t(vdloc_t) | Methods defined here: | | __init__(self, *args) - | __init__(self, _mba, n, tif) -> scif_t + | __init__(self, _mba, tif, n=None) -> scif_t | _mba: mba_t * - | n: qstring * | tif: tinfo_t * + | n: qstring * | | __repr__ = _swig_repr(self) | @@ -34027,6 +36250,9 @@ class scif_t(vdloc_t) | has_stkoff(self, *args) -> 'bool' | TRUE if argloc has a stack part. | + | in_stack(self, *args) -> 'bool' + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) -> 'bool' | See 'ALOC_NONE' . | @@ -34207,25 +36433,25 @@ set_type(*args) -> 'bool' Help on class simple_graph_t in module ida_hexrays: -class simple_graph_t(builtins.object) +class simple_graph_t(ida_gdl.gdl_graph_t) | Proxy of C++ simple_graph_t class. | + | Method resolution order: + | simple_graph_t + | ida_gdl.gdl_graph_t + | builtins.object + | | Methods defined here: | | __init__(self, *args, **kwargs) - | Initialize self. See help(type(self)) for accurate signature. + | __init__(self) -> gdl_graph_t + | self: PyObject * | | __repr__ = _swig_repr(self) | | ---------------------------------------------------------------------- | Data descriptors defined here: | - | __dict__ - | dictionary for instance variables (if defined) - | - | __weakref__ - | list of weak references to the object (if defined) - | | colored_gdl_edges | simple_graph_t_colored_gdl_edges_get(self) -> bool | @@ -34234,6 +36460,113 @@ class simple_graph_t(builtins.object) | | title | simple_graph_t_title_get(self) -> qstring * + | + | ---------------------------------------------------------------------- + | Methods inherited from ida_gdl.gdl_graph_t: + | + | __disown__(self) + | + | __swig_destroy__ = delete_gdl_graph_t(...) + | delete_gdl_graph_t(self) + | + | begin(self, *args) -> 'node_iterator' + | begin(self) -> node_iterator + | + | edge(self, *args) -> 'int' + | edge(self, node, i, ispred) -> int + | @param node (C++: int) + | @param i (C++: int) + | @param ispred (C++: bool) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'node_iterator' + | end(self) -> node_iterator + | + | entry(self, *args) -> 'int' + | entry(self) -> int + | + | exists(self, *args) -> 'bool' + | exists(self, node) -> bool + | @param node (C++: int) + | + | exit(self, *args) -> 'int' + | exit(self) -> int + | + | front(self, *args) -> 'int' + | front(self) -> int + | + | get_edge_color(self, *args) -> 'bgcolor_t' + | get_edge_color(self, i, j) -> bgcolor_t + | @param i (C++: int) + | @param j (C++: int) + | + | get_node_color(self, *args) -> 'bgcolor_t' + | get_node_color(self, n) -> bgcolor_t + | @param n (C++: int) + | + | get_node_label(self, *args) -> 'char *' + | get_node_label(self, n) -> char * + | @param n (C++: int) + | + | nedge(self, *args) -> 'size_t' + | nedge(self, node, ispred) -> size_t + | @param node (C++: int) + | @param ispred (C++: bool) + | + | node_qty(self, *args) -> 'int' + | node_qty(self) -> int + | + | npred(self, *args) -> 'int' + | npred(self, node) -> int + | @param node (C++: int) + | + | nsucc(self, *args) -> 'int' + | nsucc(self, node) -> int + | @param node (C++: int) + | + | pred(self, *args) -> 'int' + | pred(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | print_edge(self, *args) -> 'bool' + | print_edge(self, fp, i, j) -> bool + | @param fp (C++: FILE *) + | @param i (C++: int) + | @param j (C++: int) + | + | print_graph_attributes(self, *args) -> 'void' + | print_graph_attributes(self, fp) + | @param fp (C++: FILE *) + | + | print_node(self, *args) -> 'bool' + | print_node(self, fp, n) -> bool + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | print_node_attributes(self, *args) -> 'void' + | print_node_attributes(self, fp, n) + | @param fp (C++: FILE *) + | @param n (C++: int) + | + | size(self, *args) -> 'int' + | size(self) -> int + | + | succ(self, *args) -> 'int' + | succ(self, node, i) -> int + | @param node (C++: int) + | @param i (C++: int) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from ida_gdl.gdl_graph_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) Help on class stkvar_ref_t in module ida_hexrays: @@ -36760,6 +39093,9 @@ class var_ref_t(builtins.object) | compare(self, r) -> int | r: var_ref_t const & | + | getv(self, *args) -> 'lvar_t &' + | getv(self) -> lvar_t + | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -37151,6 +39487,9 @@ class vdloc_t(ida_typeinf.argloc_t) | has_stkoff(self, *args) -> 'bool' | TRUE if argloc has a stack part. | + | in_stack(self, *args) -> 'bool' + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) -> 'bool' | See 'ALOC_NONE' . | @@ -37265,9 +39604,9 @@ class vdui_t(builtins.object) | | calc_cmt_type(self, *args) -> 'cmt_type_t' | Check if the specified line can have a comment. Due to the coordinate - | system for comments (http://www.hexblog.com/?p=60) some function lines - | cannot have comments. This function checks if a comment can be - | attached to the specified line. + | system for comments: (https://www.hex-rays.com/blog/coordinate-system- + | for-hex-rays) some function lines cannot have comments. This function + | checks if a comment can be attached to the specified line. | | calc_cmt_type(self, lnnum, cmttype) -> cmt_type_t | @param lnnum: line number (0 based) (C++: size_t) @@ -37415,13 +39754,13 @@ class vdui_t(builtins.object) | | rename_lvar(self, *args) -> 'bool' | Rename local variable. This function permanently renames a local - | variable. + | variable.::rename_lvar() | | rename_lvar(self, v, name, is_user_name) -> bool | @param v: pointer to local variable (C++: lvar_t *) | @param name: new variable name (C++: const char *) - | @param is_user_name: use true to save the new name into the database - | (C++: bool) + | @param is_user_name: use true to save the new name into the database. + | use false to delete the saved name. (C++: bool) | @return: false if failed | | rename_strmem(self, *args) -> 'bool' @@ -38107,7 +40446,7 @@ do not use function frame info (only snippet mode) ida_hexrays.DECOMP_NO_HIDE """ -do not hide display waitbox. see close_hexrays_waitboxes() +do not close display waitbox. see close_hexrays_waitboxes() """ ida_hexrays.DECOMP_NO_WAIT @@ -38200,6 +40539,11 @@ ida_hexrays.FCI_DEAD some return registers were determined dead """ +ida_hexrays.FCI_EXPLOCS +""" +all arglocs are specified explicitly +""" + ida_hexrays.FCI_FINAL """ call type is final, should not be changed @@ -38497,6 +40841,11 @@ ida_hexrays.LVINF_NOPTR variable type should not be a pointer """ +ida_hexrays.LVINF_UNUSED +""" +unused argument, corresponds to CVAR_UNUSED +""" + ida_hexrays.MBA_ASRPROP """ assertion have been propagated @@ -38687,6 +41036,11 @@ ida_hexrays.MBL_INCONST inconsistent lists: we are building them """ +ida_hexrays.MBL_KEEP +""" +do not remove even if unreachable +""" + ida_hexrays.MBL_LIST """ use/def lists are ready (not dirty) @@ -38814,7 +41168,9 @@ reuse existing window, only if the ida_hexrays.OPROP_CCFLAGS """ -condition codes register value +else: value of a condition code register (like mr_cc) + +mop_n: a pc-relative value """ ida_hexrays.OPROP_FLOAT @@ -39042,6 +41398,34 @@ class compiler_info_t(builtins.object) | thisown | The membership flag +Help on function delinf in module ida_ida: + +delinf(*args) -> 'bool' + undefine a program specific information + + delinf(tag) -> bool + @param tag: one of inftag_t constants (C++: inftag_t) + @return: success + +Help on function get_dbctx_id in module ida_ida: + +get_dbctx_id(*args) -> 'ssize_t' + Get the current database context ID + +Help on function get_dbctx_qty in module ida_ida: + +get_dbctx_qty(*args) -> 'size_t' + Get number of database contexts + +Help on function getinf_str in module ida_ida: + +getinf_str(*args) -> 'qstring *' + get program specific information (a non-scalar value) + + getinf_str(tag) -> str + @param tag: one of inftag_t constants (C++: inftag_t) + @return: number of bytes stored in the buffer (<0 - not defined) + Help on class idainfo in module ida_ida: class idainfo(builtins.object) @@ -39384,10 +41768,9 @@ Help on function inf_get_pack_mode in module ida_ida: inf_get_pack_mode(*args) -> 'int' inf_get_pack_mode() -> int -Help on function inf_is_32bit in module ida_ida: +Help on function idainfo_is_32bit in module ida_ida: -inf_is_32bit(*args) -> 'bool' - inf_is_32bit() -> bool +idainfo_is_32bit() Help on function inf_is_64bit in module ida_ida: @@ -39746,6 +42129,11 @@ Help on function inf_get_af_low in module ida_ida: inf_get_af_low(*args) -> 'ushort' Get/set low/high 16bit halves of inf.af. +Help on function inf_get_app_bitness in module ida_ida: + +inf_get_app_bitness(*args) -> 'uint' + inf_get_app_bitness() -> uint + Help on function inf_get_appcall_options in module ida_ida: inf_get_appcall_options(*args) -> 'uint32' @@ -40114,6 +42502,21 @@ inf_inc_database_change_count(*args) -> 'void' inf_inc_database_change_count(cnt=1) @param cnt (C++: int) +Help on function inf_is_16bit in module ida_ida: + +inf_is_16bit(*args) -> 'bool' + inf_is_16bit() -> bool + +Help on function inf_is_32bit_exactly in module ida_ida: + +inf_is_32bit_exactly(*args) -> 'bool' + inf_is_32bit_exactly() -> bool + +Help on function inf_is_32bit_or_higher in module ida_ida: + +inf_is_32bit_or_higher(*args) -> 'bool' + inf_is_32bit_or_higher() -> bool + Help on function inf_is_limiter_empty in module ida_ida: inf_is_limiter_empty(*args) -> 'bool' @@ -41282,6 +43685,15 @@ Help on function in module ida_ida: lambda *args +Help on function switch_dbctx in module ida_ida: + +switch_dbctx(*args) -> 'dbctx_t *' + Switch to the database with the provided context ID + + switch_dbctx(idx) -> dbctx_t * + @param idx: the index of the database to switch to (C++: size_t) + @return: the current dbctx_t instance or nullptr + Help on function to_ea in module ida_ida: to_ea(*args) -> 'ea_t' @@ -41320,7 +43732,8 @@ ida_ida.ABI_HUGEARG_ALIGN """ use natural type alignment for an argument even if its alignment exceeds double native word size (the default is to use double word -max). e.g. if this bit is set, __int128 has 16-byte alignment +max). e.g. if this bit is set, __int128 has 16-byte alignment. this +bit is not used by ida yet """ ida_ida.ABI_MAP_STKARGS @@ -41662,7 +44075,7 @@ pack the database? ida_ida.LFLG_PC_FLAT """ -32-bit program? +32-bit program (or higher)? """ ida_ida.LFLG_PC_FPP @@ -42444,7 +44857,7 @@ Help on function as_cstr in module ida_idaapi: as_cstr(val) Returns a C str from the passed value. The passed value can be of type refclass (returned by a call to buffer() or byref()) - It scans for the first and returns the string value up to that point. + It scans for the first \x00 and returns the string value up to that point. Help on function as_int32 in module ida_idaapi: @@ -43402,9 +45815,9 @@ class call_stack_info_t(builtins.object) | | __hash__ = None -Help on class call_stack_t in module ida_idd: +Help on class call_stack_info_vec_t in module ida_idd: -class call_stack_t(builtins.object) +class call_stack_info_vec_t(builtins.object) | Proxy of C++ qvector< call_stack_info_t > class. | | Methods defined here: @@ -43418,7 +45831,7 @@ class call_stack_t(builtins.object) | i: size_t | | __init__(self, *args) - | __init__(self) -> call_stack_t + | __init__(self) -> call_stack_info_vec_t | x: qvector< call_stack_info_t > const & | | __iter__ = _bounded_getitem_iterator(self) @@ -43438,8 +45851,8 @@ class call_stack_t(builtins.object) | i: size_t | v: call_stack_info_t const & | - | __swig_destroy__ = delete_call_stack_t(...) - | delete_call_stack_t(self) + | __swig_destroy__ = delete_call_stack_info_vec_t(...) + | delete_call_stack_info_vec_t(self) | | _del(self, *args) -> 'bool' | _del(self, x) -> bool @@ -43564,6 +45977,178 @@ class call_stack_t(builtins.object) | | __hash__ = None +Help on class call_stack_t in module ida_idd: + +class call_stack_t(call_stack_info_vec_t) + | Proxy of C++ call_stack_t class. + | + | Method resolution order: + | call_stack_t + | call_stack_info_vec_t + | builtins.object + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> call_stack_t + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_call_stack_t(...) + | delete_call_stack_t(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Methods inherited from call_stack_info_vec_t: + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: qvector< call_stack_info_t > const & + | + | __getitem__(self, *args) -> 'call_stack_info_t const &' + | __getitem__(self, i) -> call_stack_info_t + | i: size_t + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: qvector< call_stack_info_t > const & + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: call_stack_info_t const & + | + | _del(self, *args) -> 'bool' + | _del(self, x) -> bool + | x: call_stack_info_t const & + | + | add_unique(self, *args) -> 'bool' + | add_unique(self, x) -> bool + | x: call_stack_info_t const & + | + | at(self, *args) -> 'call_stack_info_t const &' + | at(self, _idx) -> call_stack_info_t + | _idx: size_t + | + | back = _qvector_back(self) + | # ----------------------------------------------------------------------- + | + | begin(self, *args) -> 'qvector< call_stack_info_t >::const_iterator' + | begin(self) -> call_stack_info_t + | begin(self) -> call_stack_info_t + | + | capacity(self, *args) -> 'size_t' + | capacity(self) -> size_t + | + | clear(self, *args) -> 'void' + | clear(self) + | + | empty(self, *args) -> 'bool' + | empty(self) -> bool + | + | end(self, *args) -> 'qvector< call_stack_info_t >::const_iterator' + | end(self) -> call_stack_info_t + | end(self) -> call_stack_info_t + | + | erase(self, *args) -> 'qvector< call_stack_info_t >::iterator' + | erase(self, it) -> call_stack_info_t + | it: qvector< call_stack_info_t >::iterator + | + | + | erase(self, first, last) -> call_stack_info_t + | first: qvector< call_stack_info_t >::iterator + | last: qvector< call_stack_info_t >::iterator + | + | extract(self, *args) -> 'call_stack_info_t *' + | extract(self) -> call_stack_info_t + | + | find(self, *args) -> 'qvector< call_stack_info_t >::const_iterator' + | find(self, x) -> call_stack_info_t + | x: call_stack_info_t const & + | + | + | find(self, x) -> call_stack_info_t + | x: call_stack_info_t const & + | + | front = _qvector_front(self) + | # ----------------------------------------------------------------------- + | + | grow(self, *args) -> 'void' + | grow(self, x=call_stack_info_t()) + | x: call_stack_info_t const & + | + | has(self, *args) -> 'bool' + | has(self, x) -> bool + | x: call_stack_info_t const & + | + | inject(self, *args) -> 'void' + | inject(self, s, len) + | s: call_stack_info_t * + | len: size_t + | + | insert(self, *args) -> 'qvector< call_stack_info_t >::iterator' + | insert(self, it, x) -> call_stack_info_t + | it: qvector< call_stack_info_t >::iterator + | x: call_stack_info_t const & + | + | pop_back(self, *args) -> 'void' + | pop_back(self) + | + | push_back(self, *args) -> 'call_stack_info_t &' + | push_back(self, x) + | x: call_stack_info_t const & + | + | qclear(self, *args) -> 'void' + | qclear(self) + | + | reserve(self, *args) -> 'void' + | reserve(self, cnt) + | cnt: size_t + | + | resize(self, *args) -> 'void' + | resize(self, _newsize, x) + | _newsize: size_t + | x: call_stack_info_t const & + | + | + | resize(self, _newsize) + | _newsize: size_t + | + | size(self, *args) -> 'size_t' + | size(self) -> size_t + | + | swap(self, *args) -> 'void' + | swap(self, r) + | r: qvector< call_stack_info_t > & + | + | truncate(self, *args) -> 'void' + | truncate(self) + | + | ---------------------------------------------------------------------- + | Data descriptors inherited from call_stack_info_vec_t: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | ---------------------------------------------------------------------- + | Data and other attributes inherited from call_stack_info_vec_t: + | + | __hash__ = None + Help on function can_exc_continue in module ida_idd: can_exc_continue(*args) -> 'bool' @@ -44655,7 +47240,7 @@ class regval_t(builtins.object) | | set_float(self, *args) -> 'void' | set_float(self, x) - | x: ushort const * + | x: fpvalue_t const & | | set_int(self, *args) -> 'void' | set_int(self, x) @@ -44680,7 +47265,7 @@ class regval_t(builtins.object) | list of weak references to the object (if defined) | | fval - | regval_t_fval_get(self) -> uint16 [6] + | regval_t_fval_get(self) -> fpvalue_t | | ival | regval_t_ival_get(self) -> uint64 @@ -45018,11 +47603,12 @@ class IDB_Hooks(builtins.object) | bookmark_changed(self, *args) -> 'void' | Boomarked position changed. | - | bookmark_changed(self, index, pos, desc) + | bookmark_changed(self, index, pos, desc, operation) | @param index (C++: uint32) | @param pos (C++: const lochist_entry_t *) - | @param desc: if desc==NULL, then the bookmark was deleted. (C++: - | const char *) + | @param desc (C++: const char *) + | @param operation: 0-added, 1-updated, 2-deleted if desc==NULL, then + | the bookmark was deleted. (C++: int) | | byte_patched(self, *args) -> 'void' | A byte has been patched. @@ -45161,6 +47747,9 @@ class IDB_Hooks(builtins.object) | compiler_changed(self, *args) -> 'void' | The kernel has changed the compiler information. (\inf{cc} structure; | 'get_abi_name' ) + | + | compiler_changed(self, adjust_inf_fields) + | @param adjust_inf_fields: may change inf fields? (C++: bool) | | deleting_enum(self, *args) -> 'void' | An enum type is to be deleted. @@ -45272,6 +47861,13 @@ class IDB_Hooks(builtins.object) | @param dt (C++: dirtree_t *) | @param inode (C++: inode_t) | + | dirtree_segm_moved(self, *args) -> 'void' + | Dirtree: inodes were changed due to a segment movement or a program + | rebasing + | + | dirtree_segm_moved(self, dt) + | @param dt (C++: dirtree_t *) + | | enum_bf_changed(self, *args) -> 'void' | An enum type 'bitfield' attribute has been changed. | @@ -45472,10 +48068,11 @@ class IDB_Hooks(builtins.object) | renamed(self, *args) -> 'void' | The kernel has renamed a byte. See also the \idpcode{rename} event | - | renamed(self, ea, new_name, local_name) + | renamed(self, ea, new_name, local_name, old_name) | @param ea (C++: ea_t) - | @param new_name (C++: const char *) + | @param new_name: can be nullptr (C++: const char *) | @param local_name (C++: bool) + | @param old_name: can be nullptr (C++: const char *) | | renaming_enum(self, *args) -> 'void' | An enum or enum member is to be renamed. @@ -46017,7 +48614,7 @@ class IDP_Hooks(builtins.object) | @param to (C++: ea_t) | @param may_define (C++: bool) | @param code_ea (C++: ea_t *) - | @retval: <0 - cancel dref analysis + | @retval: <0 - failed dref analysis, >0 done dref analysis | @retval: 0 - not implemented or continue | | ev_create_flat_group(self, *args) -> 'int' @@ -46037,6 +48634,14 @@ class IDP_Hooks(builtins.object) | @retval: 1 - ok | @retval: 0 - not implemented | + | ev_create_merge_handlers(self, *args) -> 'int' + | Create merge handlers, if needed + | + | ev_create_merge_handlers(self, md) -> int + | @param md: This event is generated immediately after opening idbs. + | (C++: merge_data_t *) + | @return: must be 0 + | | ev_create_switch_xrefs(self, *args) -> 'int' | Create xrefs for a custom jump table. | @@ -46261,8 +48866,8 @@ class IDP_Hooks(builtins.object) | underscore | | ev_get_abi_info(self, abi_names, abi_opts, comp) -> int - | @param abi_names: - all possible ABis each in form abiname- - | opt1-opt2-... (C++: qstrvec_t *) + | @param abi_names: - all possible ABis each in form + | abiname-opt1-opt2-... (C++: qstrvec_t *) | @param abi_opts: - array of all possible options in form | "opt:description" or opt:hint-line#description (C++: | qstrvec_t *) @@ -46496,6 +49101,19 @@ class IDP_Hooks(builtins.object) | @retval: -1 - no | @retval: 0 - not implemented or not instruction | + | ev_is_control_flow_guard(self, *args) -> 'int' + | Detect if an instruction is a "thunk call" to a flow guard function + | (equivalent to call reg/return/nop) + | + | ev_is_control_flow_guard(self, p_reg, insn) -> int + | @param p_reg: indirect register number, may be -1 (C++: int *) + | @param insn: call/jump instruction (C++: const insn_t *) + | @retval: -1 - no thunk detected + | @retval: 1 - indirect call + | @retval: 2 - security check routine call (NOP) + | @retval: 3 - return thunk + | @retval: 0 - not implemented + | | ev_is_far_jump(self, *args) -> 'int' | is indirect far jump or call instruction? meaningful only if the | processor has 'near' and 'far' reference types @@ -46517,14 +49135,7 @@ class IDP_Hooks(builtins.object) | @retval: 2 - yes | | ev_is_insn_table_jump(self, *args) -> 'int' - | Determine if instruction is a table jump or call. If 'CF_JUMP' bit - | cannot describe all kinds of table jumps, please define this callback. - | It will be called for insns with 'CF_JUMP' bit set. - | - | ev_is_insn_table_jump(self, insn) -> int - | @param insn: the instruction (C++: const insn_t*) - | @retval: 0 - yes - | @retval: <0 - no + | Reserved. | | ev_is_jump_func(self, *args) -> 'int' | Is the function a trivial "jump" function?. @@ -46587,7 +49198,8 @@ class IDP_Hooks(builtins.object) | @param insn: instruction possibly belonging to a switch (C++: const | insn_t *) | @retval: 1 - switch is found, 'si' is filled - | @retval: 0 - no switch found or not implemented + | @retval: -1 - no switch found + | @retval: 0 - not implemented | | ev_last_cb_before_loader(self, *args) -> 'int' | ev_last_cb_before_loader(self) -> int @@ -46805,8 +49417,10 @@ class IDP_Hooks(builtins.object) | Floating point -> IEEE conversion | | ev_realcvt(self, m, e, swt) -> int - | @param m: pointer to data (C++: void *) - | @param e: internal IEEE format data (C++: uint16 *) + | @param m: ptr to processor-specific floating point value (C++: void + | *) + | @param e: IDA representation of a floating point value (C++: + | fpvalue_t *) | @param swt: operation (see realcvt() in ieee.h) (C++: uint16) | @retval: 0 - not implemented | @retval: 1 - ok @@ -46917,6 +49531,28 @@ class IDP_Hooks(builtins.object) | @retval: 1 - do not delete srranges at the item end | @retval: 0 - srranges can be deleted | + | ev_update_call_stack(self, *args) -> 'int' + | Calculate the call stack trace for the given thread. This callback is + | invoked when the process is suspended and should fill the 'trace' + | object with the information about the current call stack. Note that + | this callback is NOT invoked if the current debugger backend + | implements stack tracing via + | debugger_t::event_t::ev_update_call_stack. The debugger-specific + | algorithm takes priority. Implementing this callback in the processor + | module is useful when multiple debugging platforms follow similar + | patterns, and thus the same processor-specific algorithm can be used + | for different platforms. + | + | ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int + | @param stack: result (C++: call_stack_t *) + | @param tid: thread id (C++: int) + | @param getreg: function to get register values (C++: + | processor_t::regval_getter_t *) + | @param regvalues: register values array (C++: const regval_t *) + | @retval: 1 - ok + | @retval: -1 - failed + | @retval: 0 - unimplemented + | | ev_use_arg_types(self, *args) -> 'int' | Use information about callee arguments. | @@ -47139,11 +49775,12 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | bookmark_changed(self, *args) -> 'void' | Boomarked position changed. | - | bookmark_changed(self, index, pos, desc) + | bookmark_changed(self, index, pos, desc, operation) | @param index (C++: uint32) | @param pos (C++: const lochist_entry_t *) - | @param desc: if desc==NULL, then the bookmark was deleted. (C++: - | const char *) + | @param desc (C++: const char *) + | @param operation: 0-added, 1-updated, 2-deleted if desc==NULL, then + | the bookmark was deleted. (C++: int) | | byte_patched(self, *args) -> 'void' | A byte has been patched. @@ -47282,6 +49919,9 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | compiler_changed(self, *args) -> 'void' | The kernel has changed the compiler information. (\inf{cc} structure; | 'get_abi_name' ) + | + | compiler_changed(self, adjust_inf_fields) + | @param adjust_inf_fields: may change inf fields? (C++: bool) | | deleting_enum(self, *args) -> 'void' | An enum type is to be deleted. @@ -47393,6 +50033,13 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | @param dt (C++: dirtree_t *) | @param inode (C++: inode_t) | + | dirtree_segm_moved(self, *args) -> 'void' + | Dirtree: inodes were changed due to a segment movement or a program + | rebasing + | + | dirtree_segm_moved(self, dt) + | @param dt (C++: dirtree_t *) + | | enum_bf_changed(self, *args) -> 'void' | An enum type 'bitfield' attribute has been changed. | @@ -47593,10 +50240,11 @@ class _processor_t_Trampoline_IDB_Hooks(IDB_Hooks) | renamed(self, *args) -> 'void' | The kernel has renamed a byte. See also the \idpcode{rename} event | - | renamed(self, ea, new_name, local_name) + | renamed(self, ea, new_name, local_name, old_name) | @param ea (C++: ea_t) - | @param new_name (C++: const char *) + | @param new_name: can be nullptr (C++: const char *) | @param local_name (C++: bool) + | @param old_name: can be nullptr (C++: const char *) | | renaming_enum(self, *args) -> 'void' | An enum or enum member is to be renamed. @@ -48552,7 +51200,7 @@ class processor_t(IDP_Hooks) | @param to (C++: ea_t) | @param may_define (C++: bool) | @param code_ea (C++: ea_t *) - | @retval: <0 - cancel dref analysis + | @retval: <0 - failed dref analysis, >0 done dref analysis | @retval: 0 - not implemented or continue | | ev_create_func_frame(self, pfn) @@ -48730,14 +51378,7 @@ class processor_t(IDP_Hooks) | @retval: 2 - yes | | ev_is_insn_table_jump(self, *args) - | Determine if instruction is a table jump or call. If 'CF_JUMP' bit - | cannot describe all kinds of table jumps, please define this callback. - | It will be called for insns with 'CF_JUMP' bit set. - | - | ev_is_insn_table_jump(self, insn) -> int - | @param insn: the instruction (C++: const insn_t*) - | @retval: 0 - yes - | @retval: <0 - no + | Reserved. | | ev_is_ret_insn(self, *args) | Is the instruction a "return"? @@ -48789,7 +51430,8 @@ class processor_t(IDP_Hooks) | @param insn: instruction possibly belonging to a switch (C++: const | insn_t *) | @retval: 1 - switch is found, 'si' is filled - | @retval: 0 - no switch found or not implemented + | @retval: -1 - no switch found + | @retval: 0 - not implemented | | ev_may_be_func(self, *args) | Can a function start here? @@ -49302,6 +51944,14 @@ class processor_t(IDP_Hooks) | @param bitness (C++: int) | @param dataseg_sel: return value is ignored (C++: sel_t) | + | ev_create_merge_handlers(self, *args) -> 'int' + | Create merge handlers, if needed + | + | ev_create_merge_handlers(self, md) -> int + | @param md: This event is generated immediately after opening idbs. + | (C++: merge_data_t *) + | @return: must be 0 + | | ev_decorate_name(self, *args) -> 'PyObject *' | Decorate/undecorate a C symbol name. | @@ -49446,8 +52096,8 @@ class processor_t(IDP_Hooks) | underscore | | ev_get_abi_info(self, abi_names, abi_opts, comp) -> int - | @param abi_names: - all possible ABis each in form abiname- - | opt1-opt2-... (C++: qstrvec_t *) + | @param abi_names: - all possible ABis each in form + | abiname-opt1-opt2-... (C++: qstrvec_t *) | @param abi_opts: - array of all possible options in form | "opt:description" or opt:hint-line#description (C++: | qstrvec_t *) @@ -49616,6 +52266,19 @@ class processor_t(IDP_Hooks) | @retval: -1 - no | @retval: 0 - not implemented or not instruction | + | ev_is_control_flow_guard(self, *args) -> 'int' + | Detect if an instruction is a "thunk call" to a flow guard function + | (equivalent to call reg/return/nop) + | + | ev_is_control_flow_guard(self, p_reg, insn) -> int + | @param p_reg: indirect register number, may be -1 (C++: int *) + | @param insn: call/jump instruction (C++: const insn_t *) + | @retval: -1 - no thunk detected + | @retval: 1 - indirect call + | @retval: 2 - security check routine call (NOP) + | @retval: 3 - return thunk + | @retval: 0 - not implemented + | | ev_is_jump_func(self, *args) -> 'int' | Is the function a trivial "jump" function?. | @@ -49679,8 +52342,10 @@ class processor_t(IDP_Hooks) | Floating point -> IEEE conversion | | ev_realcvt(self, m, e, swt) -> int - | @param m: pointer to data (C++: void *) - | @param e: internal IEEE format data (C++: uint16 *) + | @param m: ptr to processor-specific floating point value (C++: void + | *) + | @param e: IDA representation of a floating point value (C++: + | fpvalue_t *) | @param swt: operation (see realcvt() in ieee.h) (C++: uint16) | @retval: 0 - not implemented | @retval: 1 - ok @@ -49723,6 +52388,28 @@ class processor_t(IDP_Hooks) | ev_term(self, *args) -> 'int' | The IDP module is being unloaded. | + | ev_update_call_stack(self, *args) -> 'int' + | Calculate the call stack trace for the given thread. This callback is + | invoked when the process is suspended and should fill the 'trace' + | object with the information about the current call stack. Note that + | this callback is NOT invoked if the current debugger backend + | implements stack tracing via + | debugger_t::event_t::ev_update_call_stack. The debugger-specific + | algorithm takes priority. Implementing this callback in the processor + | module is useful when multiple debugging platforms follow similar + | patterns, and thus the same processor-specific algorithm can be used + | for different platforms. + | + | ev_update_call_stack(self, stack, tid, getreg, regvalues) -> int + | @param stack: result (C++: call_stack_t *) + | @param tid: thread id (C++: int) + | @param getreg: function to get register values (C++: + | processor_t::regval_getter_t *) + | @param regvalues: register values array (C++: const regval_t *) + | @retval: 1 - ok + | @retval: -1 - failed + | @retval: 0 - unimplemented + | | ev_use_arg_types(self, *args) -> 'int' | Use information about callee arguments. | @@ -50669,11 +53356,6 @@ Custom instruction codes defined by processor extension plugins must be greater than or equal to this """ -ida_idp.HKCB_AUTODEL -""" -automatically delete event listener object after uninstalling it -""" - ida_idp.HKCB_GLOBAL """ is global event listener? if true, the listener will survive database @@ -50952,6 +53634,16 @@ ida_idp.PLFM_PPC PowerPC. """ +ida_idp.PLFM_RISCV +""" +RISC-V. +""" + +ida_idp.PLFM_RL78 +""" +Renesas RL78. +""" + ida_idp.PLFM_S390 """ IBM's S390. @@ -51053,6 +53745,11 @@ ida_idp.PLFM_UNSP SunPlus unSP. """ +ida_idp.PLFM_XTENSA +""" +Tensilica Xtensa. +""" + ida_idp.PLFM_Z8 """ Z8. @@ -51231,6 +53928,315 @@ processor_t::use_regarg_type uses this bit in the return value to indicate that the register value has been spoiled """ === ida_idp EPYDOC INJECTIONS END === +Help on function ecleaz in module ida_ieee: + +ecleaz(*args) -> 'void' + ecleaz(x) + @param x (C++: eNI) + +Help on class fpvalue_shorts_array_t in module ida_ieee: + +class fpvalue_shorts_array_t(builtins.object) + | Proxy of C++ wrapped_array_t< uint16,FPVAL_NWORDS > class. + | + | Methods defined here: + | + | __getitem__(self, *args) -> 'unsigned short const &' + | __getitem__(self, i) -> unsigned short const & + | i: size_t + | + | __init__(self, *args) + | __init__(self, data) -> fpvalue_shorts_array_t + | data: unsigned short (&)[FPVAL_NWORDS] + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | i: size_t + | v: unsigned short const & + | + | __swig_destroy__ = delete_fpvalue_shorts_array_t(...) + | delete_fpvalue_shorts_array_t(self) + | + | _get_bytes(self, *args) -> 'bytevec_t' + | _get_bytes(self) -> bytevec_t + | + | _set_bytes(self, *args) -> 'void' + | _set_bytes(self, bts) + | bts: bytevec_t const & + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | _get_bytes(self) -> bytevec_t + | + | data + | fpvalue_shorts_array_t_data_get(self) -> unsigned short (&)[FPVAL_NWORDS] + | + | thisown + | The membership flag + +Help on class fpvalue_t in module ida_ieee: + +class fpvalue_t(builtins.object) + | Proxy of C++ fpvalue_t class. + | + | Methods defined here: + | + | __add__(self, *args) -> 'fpvalue_t' + | __add__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __eq__(self, *args) -> 'bool' + | __eq__(self, r) -> bool + | r: fpvalue_t const & + | + | __ge__(self, *args) -> 'bool' + | __ge__(self, r) -> bool + | r: fpvalue_t const & + | + | __getitem__(self, i) + | + | __gt__(self, *args) -> 'bool' + | __gt__(self, r) -> bool + | r: fpvalue_t const & + | + | __init__(self, *args) + | __init__(self) -> fpvalue_t + | in: bytevec12_t const & + | + | __iter__(self) + | + | __le__(self, *args) -> 'bool' + | __le__(self, r) -> bool + | r: fpvalue_t const & + | + | __lt__(self, *args) -> 'bool' + | __lt__(self, r) -> bool + | r: fpvalue_t const & + | + | __mul__(self, *args) -> 'fpvalue_t' + | __mul__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __ne__(self, *args) -> 'bool' + | __ne__(self, r) -> bool + | r: fpvalue_t const & + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, i, v) + | + | __str__(self, *args) -> 'qstring' + | __str__(self) -> qstring + | + | __sub__(self, *args) -> 'fpvalue_t' + | __sub__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | __swig_destroy__ = delete_fpvalue_t(...) + | delete_fpvalue_t(self) + | + | __truediv__(self, *args) -> 'fpvalue_t' + | __truediv__(self, o) -> fpvalue_t + | o: fpvalue_t const & + | + | _get_10bytes(self, *args) -> 'void' + | _get_10bytes(self) + | + | _get_bytes(self, *args) -> 'void' + | _get_bytes(self) + | + | _get_float(self, *args) -> 'double' + | _get_float(self) -> double + | + | _get_shorts(self, *args) -> 'wrapped_array_t< uint16,FPVAL_NWORDS >' + | _get_shorts(self) -> fpvalue_shorts_array_t + | + | _set_10bytes(self, *args) -> 'void' + | _set_10bytes(self, _in) + | in: bytevec10_t const & + | + | _set_bytes(self, *args) -> 'void' + | _set_bytes(self, _in) + | in: bytevec12_t const & + | + | _set_float(self, *args) -> 'void' + | _set_float(self, v) + | v: double + | + | assign(self, *args) -> 'void' + | assign(self, r) + | r: fpvalue_t const & + | + | clear(self, *args) -> 'void' + | clear(self) + | + | compare(self, *args) -> 'int' + | compare(self, r) -> int + | r: fpvalue_t const & + | + | eabs(self, *args) -> 'void' + | Calculate absolute value. + | + | fadd(self, *args) -> 'fpvalue_error_t' + | Arithmetic operations. + | + | fadd(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | fdiv(self, *args) -> 'fpvalue_error_t' + | fdiv(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | fmul(self, *args) -> 'fpvalue_error_t' + | fmul(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | from_10bytes(self, *args) -> 'fpvalue_error_t' + | Conversions for 10-byte floating point values. + | + | from_10bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: const void *) + | + | from_12bytes(self, *args) -> 'fpvalue_error_t' + | Conversions for 12-byte floating point values. + | + | from_12bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: const void *) + | + | from_int64(self, *args) -> 'void' + | from_int64(self, x) + | @param x (C++: int64) + | + | from_str(self, *args) -> 'fpvalue_error_t' + | Convert string to IEEE. + | + | from_str(self, p) -> fpvalue_error_t + | p: char const * + | + | from_sval(self, *args) -> 'void' + | Convert integer to IEEE. + | + | from_sval(self, x) + | @param x (C++: sval_t) + | + | from_uint64(self, *args) -> 'void' + | from_uint64(self, x) + | @param x (C++: uint64) + | + | fsub(self, *args) -> 'fpvalue_error_t' + | fsub(self, y) -> fpvalue_error_t + | @param y (C++: const fpvalue_t &) + | + | get_kind(self, *args) -> 'fpvalue_kind_t' + | Get value kind. + | + | is_negative(self, *args) -> 'bool' + | Is negative value? + | + | mul_pow2(self, *args) -> 'fpvalue_error_t' + | Multiply by a power of 2. + | + | mul_pow2(self, power_of_2) -> fpvalue_error_t + | @param power_of_2 (C++: int32) + | + | negate(self, *args) -> 'void' + | Negate. + | + | to_10bytes(self, *args) -> 'fpvalue_error_t' + | to_10bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: void *) + | + | to_12bytes(self, *args) -> 'fpvalue_error_t' + | to_12bytes(self, fpval) -> fpvalue_error_t + | @param fpval (C++: void *) + | + | to_int64(self, *args) -> 'fpvalue_error_t' + | to_int64(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | to_str(self, *args) -> 'void' + | Convert IEEE to string. + | + | to_str(self, mode) + | @param mode: broken down into: low byte: number of digits after '.' + | second byte: FPNUM_LENGTH third byte: FPNUM_DIGITS + | (C++: uint) + | + | to_sval(self, *args) -> 'fpvalue_error_t' + | Convert IEEE to integer (+-0.5 if round) + | + | to_sval(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | to_uint64(self, *args) -> 'fpvalue_error_t' + | to_uint64(self, round=False) -> fpvalue_error_t + | @param round (C++: bool) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | _10bytes + | _get_10bytes(self) + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | bytes + | _get_bytes(self) + | + | float + | _get_float(self) -> double + | + | int64 + | + | shorts + | _get_shorts(self) -> fpvalue_shorts_array_t + | + | sval + | + | thisown + | The membership flag + | + | uint64 + | + | w + | fpvalue_t_w_get(self) -> uint16 [6] + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __hash__ = None + +=== ida_ieee EPYDOC INJECTIONS === +ida_ieee.E_SPECIAL_EXP +""" +Exponent in 'fpvalue_t' for NaN and Inf. +""" + +ida_ieee.IEEE_EXONE +""" +The exponent of 1.0. +""" +=== ida_ieee EPYDOC INJECTIONS END === Help on class Choose in module ida_kernwin: class Choose(builtins.object) @@ -51378,6 +54384,8 @@ class Choose(builtins.object) | | CH_FORCE_DEFAULT = 128 | + | CH_HAS_DIFF = 268435456 + | | CH_HAS_DIRTREE = 33554432 | | CH_MODAL = 1 @@ -51406,6 +54414,8 @@ class Choose(builtins.object) | | CH_QFTYP_WHOLE_WORDS = 16384 | + | CH_RENAME_IS_EDIT = 262144 + | | CH_RESTORE = 131072 | | EMPTY_CHOOSER = -2 @@ -52276,6 +55286,8 @@ class PluginForm(builtins.object) | | WCLS_CLOSE_LATER = 8 | + | WCLS_DELETE_LATER = 8 + | | WCLS_DONT_SAVE_SIZE = 4 | | WCLS_NO_CONTEXT = 2 @@ -52300,6 +55312,8 @@ class PluginForm(builtins.object) | | WOPN_DP_RIGHT = 262144 | + | WOPN_DP_SZHINT = 16777216 + | | WOPN_DP_TAB = 4194304 | | WOPN_DP_TAB_BEFORE = 6291456 @@ -52385,11 +55399,22 @@ class UI_Hooks(builtins.object) | debugger has been selected false: debugger menu will be | removed (user switched to "No debugger") (C++: bool) | + | desktop_applied(self, *args) -> 'void' + | a desktop has been applied + | + | desktop_applied(self, name, from_idb, type) + | @param name: the desktop name (C++: const char *) + | @param from_idb: the desktop was stored in the IDB (false if it comes + | from the registry) (C++: bool) + | @param type: the desktop type (1-disassembly, 2-debugger, 3-merge) + | (C++: int) + | | destroying_plugmod(self, *args) -> 'void' | The plugin object is about to be destroyed | - | destroying_plugmod(self, plugmod) + | destroying_plugmod(self, plugmod, entry) | @param plugmod (C++: const plugmod_t *) + | @param entry (C++: const plugin_t *) | | destroying_procmod(self, *args) -> 'void' | The processor module is about to be destroyed @@ -52416,18 +55441,23 @@ class UI_Hooks(builtins.object) | @param attrs (C++: chooser_item_attrs_t *) | | get_custom_viewer_hint(self, *args) -> 'PyObject *' - | ui wants to display a hint for a viewer (idaview or custom). If - | the REG_HINTS_MARKER sequence is found in the returned hints string, - | it will be replaced with the contents of the "regular" hints. If the - | SRCDBG_HINTS_MARKER sequence is found in the returned hints string, it - | will be replaced with the contents of the source-level debugger- - | generated hints. The following keywords might appear at the beginning - | of the returned hints: HIGHLIGHT textwhere text will be highlighted - | CAPTION captioncaption for the hint widget + | ui wants to display a hint for a viewer (idaview or custom). Every + | subscriber is supposed to append the hint lines to HINT and increment + | IMPORTANT_LINES accordingly. Completely overwriting the existing lines + | in HINT is possible but not recommended. If the REG_HINTS_MARKER + | sequence is found in the returned hints string, it will be replaced + | with the contents of the "regular" hints. If the SRCDBG_HINTS_MARKER + | sequence is found in the returned hints string, it will be replaced + | with the contents of the source-level debugger-generated hints. The + | following keywords might appear at the beginning of the returned + | hints: HIGHLIGHT textwhere text will be highlighted CAPTION + | captioncaption for the hint widget | | get_custom_viewer_hint(self, viewer, place) -> PyObject * | @param viewer: viewer (C++: TWidget*) | @param place: current position in the viewer (C++: place_t *) + | @retval: 0 - continue collecting hints with other subscribers + | @retval: 1 - stop collecting hints | | get_ea_hint(self, *args) -> 'PyObject *' | ui wants to display a simple hint for an address. Use this event @@ -52524,7 +55554,12 @@ class UI_Hooks(builtins.object) | | saved(self, *args) -> 'void' | The kernel has saved the database. This callback just informs the - | interface. + | interface. Note that at the time this notification is sent, the + | internal paths are not updated yet, and calling + | get_path(PATH_TYPE_IDB) will return the previous path. + | + | saved(self, path) + | @param path: the database path (C++: const char *) | | saving(self, *args) -> 'void' | The kernel is flushing its buffers to the disk. The user interface @@ -52778,6 +55813,75 @@ _kludge_force_declare_dirtree_t(*args) -> 'void' _kludge_force_declare_dirtree_t(arg1) arg1: dirtree_t const * +Help on class action_ctx_base_cur_sel_t in module ida_kernwin: + +class action_ctx_base_cur_sel_t(builtins.object) + | Proxy of C++ action_ctx_base_cur_sel_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> action_ctx_base_cur_sel_t + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_action_ctx_base_cur_sel_t(...) + | delete_action_ctx_base_cur_sel_t(self) + | + | reset(self, *args) -> 'void' + | reset(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | _from + | action_ctx_base_cur_sel_t__from_get(self) -> twinpos_t + | + | thisown + | The membership flag + | + | to + | action_ctx_base_cur_sel_t_to_get(self) -> twinpos_t + +Help on class action_ctx_base_source_t in module ida_kernwin: + +class action_ctx_base_source_t(builtins.object) + | Proxy of C++ action_ctx_base_source_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self) -> action_ctx_base_source_t + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_action_ctx_base_source_t(...) + | delete_action_ctx_base_source_t(self) + | + | reset(self, *args) -> 'void' + | reset(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | chooser + | action_ctx_base_source_t_chooser_get(self) -> chooser_base_t + | + | thisown + | The membership flag + Help on class action_ctx_base_t in module ida_kernwin: class action_ctx_base_t(builtins.object) @@ -52850,6 +55954,9 @@ class action_ctx_base_t(builtins.object) | cur_seg | action_ctx_base_t_cur_seg_get(self) -> segment_t * | + | cur_sel + | action_ctx_base_t_cur_sel_get(self) -> action_ctx_base_cur_sel_t + | | cur_strmem | action_ctx_base_t_cur_strmem_get(self) -> member_t * | @@ -52880,6 +55987,9 @@ class action_ctx_base_t(builtins.object) | regname | action_ctx_base_t_regname_get(self) -> char const * | + | source + | action_ctx_base_t_source_get(self) -> action_ctx_base_source_t + | | thisown | The membership flag | @@ -53452,6 +56562,168 @@ choose_xref(*args) -> 'ea_t' @param to: referenced address (C++: ea_t) @return: ea of selected xref, BADADDR if none selected +Help on class chooser_base_t in module ida_kernwin: + +class chooser_base_t(builtins.object) + | Proxy of C++ chooser_base_t class. + | + | Methods defined here: + | + | __init__(self, *args, **kwargs) + | Initialize self. See help(type(self)) for accurate signature. + | + | __repr__ = _swig_repr(self) + | + | ask_item_attrs(self, *args) -> 'bool' + | should chooser generate ui_get_chooser_item_attrs events? + | + | can_del(self, *args) -> 'bool' + | can_del(self) -> bool + | + | can_edit(self, *args) -> 'bool' + | can_edit(self) -> bool + | + | can_filter(self, *args) -> 'bool' + | can_filter(self) -> bool + | + | can_ins(self, *args) -> 'bool' + | is an operation allowed? + | + | can_refresh(self, *args) -> 'bool' + | can_refresh(self) -> bool + | + | can_sort(self, *args) -> 'bool' + | can_sort(self) -> bool + | + | get_builtin_number(self, *args) -> 'uint' + | get number of the built-in chooser + | + | get_count(self, *args) -> 'size_t' + | get the number of elements in the chooser + | + | get_ea(self, *args) -> 'ea_t' + | get an address of an element. Used to set breakpoint in any chooser + | which implements this callback. + | + | get_ea(self, arg2) -> ea_t + | arg2: size_t + | @return: the effective address, BADADDR if the element has no address + | + | get_quick_filter_initial_mode(self, *args) -> 'int' + | get_quick_filter_initial_mode(self) -> int + | + | get_row(self, *args) -> 'PyObject *' + | get a description of an element. + | + | get_row(self, n) -> PyObject * + | @param n: element number (0.. get_count() -1) (C++: size_t) + | + | has_diff_capability(self, *args) -> 'bool' + | has_diff_capability(self) -> bool + | + | has_dirtree(self, *args) -> 'bool' + | has_dirtree(self) -> bool + | + | is_force_default(self, *args) -> 'bool' + | should selection of the already opened non-modal chooser be changed? + | + | is_modal(self, *args) -> 'bool' + | is choose modal? + | + | is_multi(self, *args) -> 'bool' + | is multi-selection allowed? + | + | is_noidb(self, *args) -> 'bool' + | can use the chooser before opening the database? + | + | is_quick_filter_visible_initially(self, *args) -> 'bool' + | is_quick_filter_visible_initially(self) -> bool + | + | is_same(self, *args) -> 'bool' + | do the current and the given objects hold the same data? + | + | is_same(self, other) -> bool + | @param other (C++: const chooser_base_t *) + | + | is_status_bar_hidden(self, *args) -> 'bool' + | is_status_bar_hidden(self) -> bool + | + | popup_allowed(self, *args) -> 'bool' + | is a popup action allowed? + | + | popup_allowed(self, i) -> bool + | @param i (C++: int) + | + | should_rename_trigger_edit(self, *args) -> 'bool' + | should_rename_trigger_edit(self) -> bool + | + | should_restore_geometry(self, *args) -> 'bool' + | should_restore_geometry(self) -> bool + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | columns + | chooser_base_t_columns_get(self) -> int + | + | deflt_col + | chooser_base_t_deflt_col_get(self) -> int + | + | header + | chooser_base_t_header_get(self) -> char const *const * + | + | height + | chooser_base_t_height_get(self) -> int + | + | icon + | chooser_base_t_icon_get(self) -> int + | + | popup_names + | chooser_base_t_popup_names_get(self) -> qstring [chooser_base_t::NSTDPOPUPS] + | + | thisown + | The membership flag + | + | title + | chooser_base_t_title_get(self) -> char const * + | + | width + | chooser_base_t_width_get(self) -> int + | + | widths + | chooser_base_t_widths_get(self) -> int const * + | + | x0 + | chooser_base_t_x0_get(self) -> int + | + | x1 + | chooser_base_t_x1_get(self) -> int + | + | y0 + | chooser_base_t_y0_get(self) -> int + | + | y1 + | chooser_base_t_y1_get(self) -> int + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | NSTDPOPUPS = 4 + | + | POPUP_DEL = 1 + | + | POPUP_EDIT = 2 + | + | POPUP_INS = 0 + | + | POPUP_REFRESH = 3 + Help on class chooser_item_attrs_t in module ida_kernwin: class chooser_item_attrs_t(builtins.object) @@ -53693,12 +56965,8 @@ del_hotkey(*args) -> 'bool' Help on function del_idc_hotkey in module ida_kernwin: del_idc_hotkey(*args) -> 'bool' - Delete IDC function hotkey ( 'ui_del_idckey' ). - del_idc_hotkey(hotkey) -> bool - @param hotkey: hotkey name (C++: const char *) - @retval: 1 - ok - @retval: 0 - failed + @param hotkey (C++: const char *) Help on function delete_menu in module ida_kernwin: @@ -54479,7 +57747,10 @@ Help on function get_chooser_obj in module ida_kernwin: get_chooser_obj(*args) -> 'void *' Get the underlying object of the specified chooser ( - 'ui_get_chooser_obj' ).This is object is chooser-specific. + 'ui_get_chooser_obj' ).This attemps to find the choser by its title + and, if found, returns the result of calling its + 'chooser_base_t::get_chooser_obj()' method.This is object is chooser- + specific. get_chooser_obj(chooser_caption) -> void * @param chooser_caption (C++: const char *) @@ -55017,6 +58288,14 @@ is_idaq(*args) -> 'bool' is_idaq() -> bool Returns True or False depending if IDAPython is hosted by IDAQ +Help on function is_idaview in module ida_kernwin: + +is_idaview(*args) -> 'bool' + Is the given custom view an idaview? ( 'ui_is_idaview' ) + + is_idaview(v) -> bool + @param v (C++: TWidget *) + Help on function is_msg_inited in module ida_kernwin: is_msg_inited(*args) -> 'bool' @@ -55085,6 +58364,14 @@ jumpto(*args) -> 'bool' y: int @return: success +Help on function l_compare2 in module ida_kernwin: + +l_compare2(*args) -> 'int' + l_compare2(t1, t2, ud) -> int + @param t1 (C++: const place_t *) + @param t2 (C++: const place_t *) + @param ud (C++: void *) + Help on class line_rendering_output_entries_refs_t in module ida_kernwin: class line_rendering_output_entries_refs_t(builtins.object) @@ -55320,6 +58607,89 @@ class line_rendering_output_entry_t(builtins.object) | | __hash__ = None +Help on class linearray_t in module ida_kernwin: + +class linearray_t(builtins.object) + | Proxy of C++ linearray_t class. + | + | Methods defined here: + | + | __init__(self, *args) + | __init__(self, _ud) -> linearray_t + | _ud: void * + | + | __repr__ = _swig_repr(self) + | + | __swig_destroy__ = delete_linearray_t(...) + | delete_linearray_t(self) + | + | beginning(self, *args) -> 'bool' + | Are we at the beginning? + | + | down(self, *args) -> 'qstring const *' + | Get a line from down direction. place is ok BEFORE + | + | ending(self, *args) -> 'bool' + | ending(self) -> bool + | + | get_bg_color(self, *args) -> 'bgcolor_t' + | Get current background color. (the same behavior as with 'get_place()' + | : good before 'down()' and after 'up()' ) + | + | get_dlnnum(self, *args) -> 'int' + | Get default line number. (the same behavior as with 'get_place()' : + | good before 'down()' and after 'up()' ) + | + | get_linecnt(self, *args) -> 'int' + | Get number of lines for the current place. (the same behavior as with + | 'get_place()' : good before 'down()' and after 'up()' ) + | + | get_pfx_color(self, *args) -> 'bgcolor_t' + | Get current prefix color. (the same behavior as with 'get_place()' : + | good before 'down()' and after 'up()' ) + | + | get_place(self, *args) -> 'place_t *' + | Get the current place. If called before 'down()' , then returns place + | of line which will be returned by 'down()' . If called after 'up()' , + | then returns place if line returned by 'up()' . + | + | set_place(self, *args) -> 'int' + | Position the array. This function must be called before calling any + | other member functions. 'linearray_t' doesn't own 'place_t' + | structures. The caller must take care of 'place_t' objects. + | + | set_place(self, new_at) -> int + | @param new_at: new position of the array (C++: const place_t *) + | @return: the delta of lines that the linearray_t had to adjust the + | place by. For example, if the place_t has a lnnum of 5, + | but it turns out, upon generating lines, that the number of + | lines for that particular place is only 2, then 3 will be + | returned. + | + | set_userdata(self, *args) -> 'void' + | Change the user data. + | + | set_userdata(self, userd) + | @param userd (C++: void *) + | + | up(self, *args) -> 'qstring const *' + | Get a line from up direction. place is ok AFTER + | + | userdata(self, *args) -> 'void *' + | Get pointer to user data. + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | thisown + | The membership flag + Help on class lines_rendering_input_t in module ida_kernwin: class lines_rendering_input_t(builtins.object) @@ -55460,7 +58830,7 @@ msg(*args) -> 'PyObject *' Help on function msg_clear in module ida_kernwin: msg_clear(*args) -> 'void' - Clear the "Output window". + Clear the "Output" window. Help on function msg_get_lines in module ida_kernwin: @@ -55475,7 +58845,7 @@ msg_get_lines(*args) -> 'PyObject *' Help on function msg_save in module ida_kernwin: msg_save(*args) -> 'bool' - Save the "Output window" contents into a file + Save the "Output" window contents into a file msg_save(path) -> bool @param path: The path of the file to save the contents into. An empty @@ -55492,6 +58862,15 @@ nomem(*args) -> 'void' nomem(format) @param format (C++: const char *) +Help on function open_bookmarks_window in module ida_kernwin: + +open_bookmarks_window(*args) -> 'TWidget *' + Open the bookmarks window ( 'ui_open_builtin' ). + + open_bookmarks_window(w) -> TWidget * + @param w (C++: TWidget *) + @return: pointer to resulting window + Help on function open_bpts_window in module ida_kernwin: open_bpts_window(*args) -> 'TWidget *' @@ -55557,7 +58936,7 @@ open_frame_window(*args) -> 'TWidget *' Help on function open_funcs_window in module ida_kernwin: open_funcs_window(*args) -> 'TWidget *' - Open the functions window ( 'ui_open_builtin' ). + Open the 'Functions' window ( 'ui_open_builtin' ). open_funcs_window(ea) -> TWidget * @param ea: index of entry to select by default (C++: ea_t) @@ -55664,7 +59043,7 @@ open_stack_window(*args) -> 'TWidget *' Help on function open_strings_window in module ida_kernwin: open_strings_window(*args) -> 'TWidget *' - Open the strings window ( 'ui_open_builtin' ). + Open the 'Strings' window ( 'ui_open_builtin' ). open_strings_window(ea, selstart=BADADDR, selend=BADADDR) -> TWidget * @param ea: index of entry to select by default (C++: ea_t) @@ -55697,7 +59076,7 @@ open_tils_window(*args) -> 'TWidget *' Help on function open_trace_window in module ida_kernwin: open_trace_window(*args) -> 'TWidget *' - Open the trace window ( 'ui_open_builtin' ). + Open the tracing window ( 'ui_open_builtin' ). Help on function open_url in module ida_kernwin: @@ -55971,7 +59350,7 @@ plgform_new(*args) -> 'PyObject *' Help on function plgform_show in module ida_kernwin: plgform_show(*args) -> 'bool' - plgform_show(py_link, py_obj, caption, options=WOPN_DP_TAB|WOPN_RESTORE) -> bool + plgform_show(py_link, py_obj, caption, options=(0x0040 << 16)|0x00000004u) -> bool py_link: PyObject * py_obj: PyObject * caption: char const * @@ -55986,6 +59365,13 @@ process_ui_action(*args) -> 'bool' @param name: action name @return: Boolean +Help on function py_chooser_base_t_get_row in module ida_kernwin: + +py_chooser_base_t_get_row(*args) -> 'PyObject *' + py_chooser_base_t_get_row(chobj, n) -> PyObject * + chobj: chooser_base_t const * + n: size_t + Help on function py_get_ask_form in module ida_kernwin: py_get_ask_form(*args) -> 'size_t' @@ -56280,6 +59666,14 @@ Help on function refresh_choosers in module ida_kernwin: refresh_choosers(*args) -> 'void' refresh_choosers() +Help on function refresh_custom_viewer in module ida_kernwin: + +refresh_custom_viewer(*args) -> 'void' + Refresh custom ida viewer ( 'ui_refresh_custom_viewer' ) + + refresh_custom_viewer(custom_viewer) + @param custom_viewer (C++: TWidget *) + Help on function refresh_idaview in module ida_kernwin: refresh_idaview(*args) -> 'void' @@ -58704,6 +62098,11 @@ ida_kernwin.ACF_HAS_SELECTION there is currently a valid selection """ +ida_kernwin.ACF_HAS_SOURCE +""" +'source' field is present +""" + ida_kernwin.ACF_XTRN_EA """ cur_ea is in 'externs' segment @@ -58801,6 +62200,11 @@ ida_kernwin.BWN_ADDRWATCH the 'Watch List' window """ +ida_kernwin.BWN_BOOKMARKS +""" +a persistent 'Bookmarks' widget +""" + ida_kernwin.BWN_BPTS """ breakpoints @@ -59072,7 +62476,7 @@ type libraries ida_kernwin.BWN_TRACE """ -trace view +tracing view """ ida_kernwin.BWN_UNDOHIST @@ -59095,6 +62499,21 @@ ida_kernwin.BWN_XREFS xrefs """ +ida_kernwin.CDVF_LINEICONS +""" +icons can be drawn over the line control +""" + +ida_kernwin.CDVF_NOLINES +""" +don't show line numbers +""" + +ida_kernwin.CDVF_STATUSBAR +""" +keep the status bar in the custom viewer +""" + ida_kernwin.CHCOL_DEC """ decimal number @@ -59174,42 +62593,6 @@ ida_kernwin.CHITEM_UNDER underline the item """ -ida_kernwin.CHOOSER_MENU_EDIT -""" -Values of the 'menu_index' parameter. - -Obsolete. Please don't use -""" - -ida_kernwin.CHOOSER_MENU_JUMP -""" -Obsolete. Please don't use. -""" - -ida_kernwin.CHOOSER_MENU_SEARCH -""" -Obsolete. Please don't use. -""" - -ida_kernwin.CHOOSER_MULTI_SELECTION -""" -enable for multiple selections. A callback of type -'chooser_multi_cb_t' will be called for all selected items. -""" - -ida_kernwin.CHOOSER_NO_SELECTION -""" -Flags. - -enable even if there's no selected item. 'n' will be NO_SELECTION for -a callback. -""" - -ida_kernwin.CHOOSER_POPUP_MENU -""" -Add command to the popup menu. -""" - ida_kernwin.CH_ATTRS """ generate ui_get_chooser_item_attrs (gui only) @@ -59246,6 +62629,11 @@ if a non-modal chooser was already open, change selection to the default one """ +ida_kernwin.CH_HAS_DIFF +""" +The chooser can be used in a diffing/merging workflow. +""" + ida_kernwin.CH_HAS_DIRTREE """ The chooser can provide a 'dirtree_t' , meaning a tree-like structure @@ -59286,6 +62674,16 @@ ida_kernwin.CH_NOIDB use the chooser before opening the database """ +ida_kernwin.CH_NO_FILTER +""" +The chooser will not have filtering abilities. +""" + +ida_kernwin.CH_NO_SORT +""" +The chooser will not have sorting abilities. +""" + ida_kernwin.CH_NO_STATUS_BAR """ don't show a status bar @@ -59322,6 +62720,12 @@ ida_kernwin.CH_QFTYP_WHOLE_WORDS whole words quick filter type """ +ida_kernwin.CH_RENAME_IS_EDIT +""" +triggering a 'edit/rename' (i.e., F2 shortcut) on a cell, should call +the edit() callback for the corresponding row. +""" + ida_kernwin.CH_RESTORE """ restore floating position if present (equivalent of WOPN_RESTORE) (GUI @@ -59454,6 +62858,27 @@ ida_kernwin.CREATETB_ADV toolbar is for 'advanced mode' only """ +ida_kernwin.CVNF_ACT +""" +activate (i.e., switch to) the viewer. Activation is performed before +the new 'lochist_entry_t' instance is actually copied to the viewer's +'lochist_t' (otherwise, if the viewer was invisible its +on_location_changed() handler wouldn't be called.) +""" + +ida_kernwin.CVNF_JUMP +""" +'lochist_t' before going to the new location + +push the current position in this viewer's +""" + +ida_kernwin.CVNF_LAZY +""" +try and move the cursor to a line displaying the 'place_t' if +possible. This might disregard the Y position in case of success +""" + ida_kernwin.DP_BEFORE """ used with 'DP_INSIDE' . @@ -59486,6 +62911,12 @@ ida_kernwin.DP_RIGHT Dock src_form to the right of dest_form. """ +ida_kernwin.DP_SZHINT +""" +When floating or in a splitter (i.e., not tabbed), use the widget's +size hint to determine the best geometry (Qt only) +""" + ida_kernwin.DP_TAB """ Place src_form into a tab next to dest_form, if dest_form is in a tab @@ -59559,6 +62990,26 @@ ida_kernwin.HIST_TYPE type declarations """ +ida_kernwin.IDCHK_ARG +""" +bad argument(s) +""" + +ida_kernwin.IDCHK_KEY +""" +bad hotkey name +""" + +ida_kernwin.IDCHK_MAX +""" +too many IDC hotkeys +""" + +ida_kernwin.IDCHK_OK +""" +ok +""" + ida_kernwin.IWID_ADDRWATCH """ address watches (47) @@ -59569,6 +63020,11 @@ ida_kernwin.IWID_ALL mask """ +ida_kernwin.IWID_BOOKMARKS +""" +bookmarks list (59) +""" + ida_kernwin.IWID_BPTS """ breakpoints (13) @@ -59822,7 +63278,7 @@ type libraries (9) ida_kernwin.IWID_TRACE """ -trace view (16) +tracing view (16) """ ida_kernwin.IWID_UNDOHIST @@ -59896,6 +63352,17 @@ the corresponding makeplace() class implementation should return new instances. """ +ida_kernwin.RENADDR_HR +""" +dialog for "Pseudocode" additional flags: 0x01 Library function 0x02 +Mark as decompiled +""" + +ida_kernwin.RENADDR_IDA +""" +dialog for "IDA View" +""" + ida_kernwin.SETMENU_APP """ add menu item after the specified path @@ -59911,6 +63378,16 @@ ida_kernwin.SETMENU_INS add menu item before the specified path (default) """ +ida_kernwin.SVF_COPY_LINES +""" +keep a local copy of '*lines' +""" + +ida_kernwin.SVF_LINES_BYPTR +""" +remember the 'lines' ptr. do not make a copy of '*lines' +""" + ida_kernwin.UIJMP_ACTIVATE """ activate the new window @@ -59945,6 +63422,97 @@ Ctrl is pressedstate & 8 => Mouse left button is pressedstate & 16 => Mouse right button is pressedstate & 32 => Mouse middle button is pressedstate & 128 => Meta is pressed (OSX only) """ + +ida_kernwin.WCLS_DELETE_LATER +""" +assign the deletion of the widget to the UI loop ///< +""" + +ida_kernwin.WCLS_DONT_SAVE_SIZE +""" +don't save size of the window +""" + +ida_kernwin.WCLS_NO_CONTEXT +""" +don't change the current context (useful for toolbars) +""" + +ida_kernwin.WCLS_SAVE +""" +save state in desktop config +""" + +ida_kernwin.WOPN_CLOSED_BY_ESC +""" +override idagui.cfg:CLOSED_BY_ESC: esc will close +""" + +ida_kernwin.WOPN_DP_BEFORE +""" +place widget before dst_form in the tab bar instead of after used with +'WOPN_DP_INSIDE' and 'WOPN_DP_TAB' +""" + +ida_kernwin.WOPN_DP_BOTTOM +""" +Dock widget below dest_ctrl. +""" + +ida_kernwin.WOPN_DP_FLOATING +""" +Make widget floating. +""" + +ida_kernwin.WOPN_DP_INSIDE +""" +Create a new tab bar with both widget and dest_ctrl. +""" + +ida_kernwin.WOPN_DP_LEFT +""" +Dock widget to the left of dest_ctrl. +""" + +ida_kernwin.WOPN_DP_RIGHT +""" +Dock widget to the right of dest_ctrl. +""" + +ida_kernwin.WOPN_DP_SZHINT +""" +when floating or in a splitter (i.e., not tabbed), use the widget's +size hint to determine the best geometry (Qt only) +""" + +ida_kernwin.WOPN_DP_TAB +""" +Place widget into a tab next to dest_ctrl, if dest_ctrl is in a tab +bar (otherwise the same as 'WOPN_DP_INSIDE' ) +""" + +ida_kernwin.WOPN_DP_TOP +""" +Dock widget above dest_ctrl. +""" + +ida_kernwin.WOPN_NOT_CLOSED_BY_ESC +""" +override idagui.cfg:CLOSED_BY_ESC: esc will not close +""" + +ida_kernwin.WOPN_PERSIST +""" +widget will remain available when starting or stopping debugger +sessions +""" + +ida_kernwin.WOPN_RESTORE +""" +if the widget was the only widget in a floating area the last time it +was closed, it will be restored as floating, with the same +position+size as before +""" === ida_kernwin EPYDOC INJECTIONS END === Help on function COLSTR in module ida_lines: @@ -60609,7 +64177,9 @@ Help on function file2base in module ida_loader: file2base(*args) -> 'int' Load portion of file into the database. This function will include - (ea1..ea2) into the addressing space of the program (make it enabled) + (ea1..ea2) into the addressing space of the program (make it + enabled).The storage type of the specified range will be changed to + STT_VA. file2base(li, pos, ea1, ea2, patchable) -> int @param li: pointer of input source (C++: linput_t *) @@ -61532,6 +65102,11 @@ class bookmarks_t(builtins.object) | index: uint32 | ud: void * | + | get_dirtree_id(*args) -> 'dirtree_id_t' + | get_dirtree_id(e, ud) -> dirtree_id_t + | e: lochist_entry_t const & + | ud: void * + | | mark(*args) -> 'uint32' | mark(e, index, title, desc, ud) -> uint32 | e: lochist_entry_t const & @@ -61589,6 +65164,13 @@ bookmarks_t_get_desc(*args) -> 'qstring *' index: uint32 ud: void * +Help on function bookmarks_t_get_dirtree_id in module ida_moves: + +bookmarks_t_get_dirtree_id(*args) -> 'dirtree_id_t' + bookmarks_t_get_dirtree_id(e, ud) -> dirtree_id_t + e: lochist_entry_t const & + ud: void * + Help on function bookmarks_t_mark in module ida_moves: bookmarks_t_mark(*args) -> 'uint32' @@ -61880,9 +65462,6 @@ class renderer_info_t(builtins.object) | __swig_destroy__ = delete_renderer_info_t(...) | delete_renderer_info_t(self) | - | clear(self, *args) -> 'void' - | clear(self) - | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -62373,7 +65952,7 @@ Help on function clr_abits in module ida_nalt: clr_abits(*args) -> 'void' clr_abits(ea, bits) @param ea (C++: ea_t) - @param bits (C++: uint32) + @param bits (C++: aflags_t) Help on function clr_align_flow in module ida_nalt: @@ -62767,7 +66346,7 @@ find_custom_refinfo(*args) -> 'int' Help on function get_abi_name in module ida_nalt: -get_abi_name(*args) +get_abi_name() Help on function get_absbase in module ida_nalt: @@ -62777,8 +66356,8 @@ get_absbase(*args) -> 'ea_t' Help on function get_aflags in module ida_nalt: -get_aflags(*args) -> 'uint32' - get_aflags(ea) -> uint32 +get_aflags(*args) -> 'aflags_t' + get_aflags(ea) -> aflags_t @param ea (C++: ea_t) Help on function get_alignment in module ida_nalt: @@ -62830,6 +66409,11 @@ get_default_encoding_idx(*args) -> 'int' encoding is set - byte values are displayed without conversion. (C++: int) +Help on function get_elapsed_secs in module ida_nalt: + +get_elapsed_secs(*args) -> 'size_t' + Get seconds database stayed open. + Help on function get_encoding_bpu in module ida_nalt: get_encoding_bpu(*args) -> 'int' @@ -62859,6 +66443,24 @@ Help on function get_gotea in module ida_nalt: get_gotea(*args) -> 'ea_t' get_gotea() -> ea_t +Help on function get_ida_notepad_text in module ida_nalt: + +get_ida_notepad_text(*args) -> 'ssize_t' + Get notead text. + + get_ida_notepad_text(text) -> ssize_t + @param text (C++: qstring *) + +Help on function get_idb_ctime in module ida_nalt: + +get_idb_ctime(*args) -> 'time_t' + Get database creation timestamp. + +Help on function get_idb_nopens in module ida_nalt: + +get_idb_nopens(*args) -> 'size_t' + Get number of times the database is opened. + Help on function get_ids_modnode in module ida_nalt: get_ids_modnode(*args) -> 'netnode' @@ -62887,6 +66489,15 @@ get_ind_purged(*args) -> 'ea_t' get_ind_purged(ea) -> ea_t @param ea (C++: ea_t) +Help on function get_initial_ida_version in module ida_nalt: + +get_initial_ida_version(*args) -> 'ushort' + Get version of ida which created the database (string format like + "7.5") + + get_initial_ida_version(ver) -> ssize_t + @param ver (C++: qstring *) + Help on function get_input_file_path in module ida_nalt: get_input_file_path(*args) -> 'size_t' @@ -62898,6 +66509,11 @@ get_item_color(*args) -> 'bgcolor_t' get_item_color(ea) -> bgcolor_t @param ea (C++: ea_t) +Help on function get_loader_format_name in module ida_nalt: + +get_loader_format_name(*args) -> 'qstring *' + Get file format name for loader modules. + Help on function get_op_tinfo in module ida_nalt: get_op_tinfo(*args) -> 'bool' @@ -62940,6 +66556,22 @@ get_source_linnum(*args) -> 'uval_t' get_source_linnum(ea) -> uval_t @param ea (C++: ea_t) +Help on function get_srcdbg_paths in module ida_nalt: + +get_srcdbg_paths(*args) -> 'ssize_t' + Get source debug paths. + + get_srcdbg_paths(paths) -> ssize_t + @param paths (C++: qstring *) + +Help on function get_srcdbg_undesired_paths in module ida_nalt: + +get_srcdbg_undesired_paths(*args) -> 'ssize_t' + Get user-closed source files. + + get_srcdbg_undesired_paths(paths) -> ssize_t + @param paths (C++: qstring *) + Help on function get_str_encoding_idx in module ida_nalt: get_str_encoding_idx(*args) -> 'uchar' @@ -62978,6 +66610,12 @@ get_str_type_prefix_length(*args) -> 'size_t' get_str_type_prefix_length(strtype) -> size_t @param strtype (C++: int32) +Help on function get_strid in module ida_nalt: + +get_strid(*args) -> 'tid_t' + get_strid(ea) -> tid_t + @param ea (C++: ea_t) + Help on function get_strtype_bpu in module ida_nalt: get_strtype_bpu(*args) -> 'int' @@ -63007,6 +66645,36 @@ getnode(*args) -> 'netnode' getnode(ea) -> netnode @param ea (C++: ea_t) +Help on function has_aflag_linnum in module ida_nalt: + +has_aflag_linnum(*args) -> 'bool' + has_aflag_linnum(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_lname in module ida_nalt: + +has_aflag_lname(*args) -> 'bool' + has_aflag_lname(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti in module ida_nalt: + +has_aflag_ti(*args) -> 'bool' + has_aflag_ti(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti0 in module ida_nalt: + +has_aflag_ti0(*args) -> 'bool' + has_aflag_ti0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function has_aflag_ti1 in module ida_nalt: + +has_aflag_ti1(*args) -> 'bool' + has_aflag_ti1(flags) -> bool + @param flags (C++: aflags_t) + Help on function has_lname in module ida_nalt: has_lname(*args) -> 'bool' @@ -63067,6 +66735,180 @@ is__invsign1(*args) -> 'bool' is__invsign1(ea) -> bool @param ea (C++: ea_t) +Help on function is_aflag__bnot0 in module ida_nalt: + +is_aflag__bnot0(*args) -> 'bool' + is_aflag__bnot0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__bnot1 in module ida_nalt: + +is_aflag__bnot1(*args) -> 'bool' + is_aflag__bnot1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__invsign0 in module ida_nalt: + +is_aflag__invsign0(*args) -> 'bool' + is_aflag__invsign0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag__invsign1 in module ida_nalt: + +is_aflag__invsign1(*args) -> 'bool' + is_aflag__invsign1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_align_flow in module ida_nalt: + +is_aflag_align_flow(*args) -> 'bool' + is_aflag_align_flow(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_colored_item in module ida_nalt: + +is_aflag_colored_item(*args) -> 'bool' + is_aflag_colored_item(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_data_guessed_by_hexrays in module ida_nalt: + +is_aflag_data_guessed_by_hexrays(*args) -> 'bool' + is_aflag_data_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_fixed_spd in module ida_nalt: + +is_aflag_fixed_spd(*args) -> 'bool' + is_aflag_fixed_spd(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_func_guessed_by_hexrays in module ida_nalt: + +is_aflag_func_guessed_by_hexrays(*args) -> 'bool' + is_aflag_func_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_hidden_border in module ida_nalt: + +is_aflag_hidden_border(*args) -> 'bool' + is_aflag_hidden_border(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_hidden_item in module ida_nalt: + +is_aflag_hidden_item(*args) -> 'bool' + is_aflag_hidden_item(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_libitem in module ida_nalt: + +is_aflag_libitem(*args) -> 'bool' + is_aflag_libitem(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_lzero0 in module ida_nalt: + +is_aflag_lzero0(*args) -> 'bool' + is_aflag_lzero0(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_lzero1 in module ida_nalt: + +is_aflag_lzero1(*args) -> 'bool' + is_aflag_lzero1(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_manual_insn in module ida_nalt: + +is_aflag_manual_insn(*args) -> 'bool' + is_aflag_manual_insn(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_noret in module ida_nalt: + +is_aflag_noret(*args) -> 'bool' + is_aflag_noret(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_notcode in module ida_nalt: + +is_aflag_notcode(*args) -> 'bool' + is_aflag_notcode(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_notproc in module ida_nalt: + +is_aflag_notproc(*args) -> 'bool' + is_aflag_notproc(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_public_name in module ida_nalt: + +is_aflag_public_name(*args) -> 'bool' + is_aflag_public_name(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_retfp in module ida_nalt: + +is_aflag_retfp(*args) -> 'bool' + is_aflag_retfp(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_terse_struc in module ida_nalt: + +is_aflag_terse_struc(*args) -> 'bool' + is_aflag_terse_struc(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_tilcmt in module ida_nalt: + +is_aflag_tilcmt(*args) -> 'bool' + is_aflag_tilcmt(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_determined_by_hexrays in module ida_nalt: + +is_aflag_type_determined_by_hexrays(*args) -> 'bool' + is_aflag_type_determined_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_guessed_by_hexrays in module ida_nalt: + +is_aflag_type_guessed_by_hexrays(*args) -> 'bool' + is_aflag_type_guessed_by_hexrays(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_type_guessed_by_ida in module ida_nalt: + +is_aflag_type_guessed_by_ida(*args) -> 'bool' + is_aflag_type_guessed_by_ida(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_usersp in module ida_nalt: + +is_aflag_usersp(*args) -> 'bool' + is_aflag_usersp(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_userti in module ida_nalt: + +is_aflag_userti(*args) -> 'bool' + is_aflag_userti(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_weak_name in module ida_nalt: + +is_aflag_weak_name(*args) -> 'bool' + is_aflag_weak_name(flags) -> bool + @param flags (C++: aflags_t) + +Help on function is_aflag_zstroff in module ida_nalt: + +is_aflag_zstroff(*args) -> 'bool' + is_aflag_zstroff(flags) -> bool + @param flags (C++: aflags_t) + Help on function is_align_flow in module ida_nalt: is_align_flow(*args) -> 'bool' @@ -63079,6 +66921,12 @@ is_colored_item(*args) -> 'bool' is_colored_item(ea) -> bool @param ea (C++: ea_t) +Help on function is_data_guessed_by_hexrays in module ida_nalt: + +is_data_guessed_by_hexrays(*args) -> 'bool' + is_data_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + Help on function is_finally_visible_item in module ida_nalt: is_finally_visible_item(*args) -> 'bool' @@ -63093,6 +66941,12 @@ is_fixed_spd(*args) -> 'bool' is_fixed_spd(ea) -> bool @param ea (C++: ea_t) +Help on function is_func_guessed_by_hexrays in module ida_nalt: + +is_func_guessed_by_hexrays(*args) -> 'bool' + is_func_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + Help on function is_hidden_border in module ida_nalt: is_hidden_border(*args) -> 'bool' @@ -63175,6 +67029,24 @@ is_tilcmt(*args) -> 'bool' is_tilcmt(ea) -> bool @param ea (C++: ea_t) +Help on function is_type_determined_by_hexrays in module ida_nalt: + +is_type_determined_by_hexrays(*args) -> 'bool' + is_type_determined_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + +Help on function is_type_guessed_by_hexrays in module ida_nalt: + +is_type_guessed_by_hexrays(*args) -> 'bool' + is_type_guessed_by_hexrays(ea) -> bool + @param ea (C++: ea_t) + +Help on function is_type_guessed_by_ida in module ida_nalt: + +is_type_guessed_by_ida(*args) -> 'bool' + is_type_guessed_by_ida(ea) -> bool + @param ea (C++: ea_t) + Help on function is_usersp in module ida_nalt: is_usersp(*args) -> 'bool' @@ -63294,7 +67166,7 @@ class printop_t(builtins.object) | list of weak references to the object (if defined) | | aflags - | printop_t_aflags_get(self) -> flags_t + | printop_t_aflags_get(self) -> aflags_t | | features | printop_t_features_get(self) -> uchar @@ -63415,7 +67287,7 @@ retrieve_input_file_sha256(*args) -> 'uchar [ANY]' Help on function retrieve_input_file_size in module ida_nalt: -retrieve_input_file_size(*args) -> 'uint32' +retrieve_input_file_size(*args) -> 'size_t' Get size of input file in bytes. Help on function set__bnot0 in module ida_nalt: @@ -63447,7 +67319,7 @@ Help on function set_abits in module ida_nalt: set_abits(*args) -> 'void' set_abits(ea, bits) @param ea (C++: ea_t) - @param bits (C++: uint32) + @param bits (C++: aflags_t) Help on function set_absbase in module ida_nalt: @@ -63461,7 +67333,7 @@ Help on function set_aflags in module ida_nalt: set_aflags(*args) -> 'void' set_aflags(ea, flags) @param ea (C++: ea_t) - @param flags (C++: uint32) + @param flags (C++: aflags_t) Help on function set_align_flow in module ida_nalt: @@ -63512,6 +67384,12 @@ set_custom_data_type_ids(*args) -> 'void' @param ea (C++: ea_t) @param cdis (C++: const custom_data_type_ids_t *) +Help on function set_data_guessed_by_hexrays in module ida_nalt: + +set_data_guessed_by_hexrays(*args) -> 'void' + set_data_guessed_by_hexrays(ea) + @param ea (C++: ea_t) + Help on function set_default_encoding_idx in module ida_nalt: set_default_encoding_idx(*args) -> 'bool' @@ -63528,6 +67406,12 @@ set_fixed_spd(*args) -> 'void' set_fixed_spd(ea) @param ea (C++: ea_t) +Help on function set_func_guessed_by_hexrays in module ida_nalt: + +set_func_guessed_by_hexrays(*args) -> 'void' + set_func_guessed_by_hexrays(ea) + @param ea (C++: ea_t) + Help on function set_gotea in module ida_nalt: set_gotea(*args) -> 'void' @@ -63558,6 +67442,15 @@ set_has_ti1(*args) -> 'void' set_has_ti1(ea) @param ea (C++: ea_t) +Help on function set_ida_notepad_text in module ida_nalt: + +set_ida_notepad_text(*args) -> 'void' + Set notead text. + + set_ida_notepad_text(text, size=0) + @param text (C++: const char *) + @param size (C++: size_t) + Help on function set_ids_modnode in module ida_nalt: set_ids_modnode(*args) -> 'void' @@ -63587,6 +67480,14 @@ set_libitem(*args) -> 'void' set_libitem(ea) @param ea (C++: ea_t) +Help on function set_loader_format_name in module ida_nalt: + +set_loader_format_name(*args) -> 'void' + Set file format name for loader modules. + + set_loader_format_name(name) + @param name (C++: const char *) + Help on function set_lzero0 in module ida_nalt: set_lzero0(*args) -> 'void' @@ -63633,8 +67534,8 @@ set_outfile_encoding_idx(*args) -> 'bool' set encoding to be used when producing files set_outfile_encoding_idx(idx) -> bool - @param idx: - + @param idx: the encoding index idx can be 0 to use the IDB's default + 1-byte-per-unit encoding (C++: int) Help on function set_refinfo in module ida_nalt: @@ -63676,6 +67577,22 @@ set_source_linnum(*args) -> 'void' @param ea (C++: ea_t) @param lnnum (C++: uval_t) +Help on function set_srcdbg_paths in module ida_nalt: + +set_srcdbg_paths(*args) -> 'void' + Set source debug paths. + + set_srcdbg_paths(paths) + @param paths (C++: const char *) + +Help on function set_srcdbg_undesired_paths in module ida_nalt: + +set_srcdbg_undesired_paths(*args) -> 'void' + Set user-closed source files. + + set_srcdbg_undesired_paths(paths) + @param paths (C++: const char *) + Help on function set_str_type in module ida_nalt: set_str_type(*args) -> 'void' @@ -63716,6 +67633,18 @@ set_tinfo(*args) -> 'bool' @param ea (C++: ea_t) @param tif (C++: const tinfo_t *) +Help on function set_type_determined_by_hexrays in module ida_nalt: + +set_type_determined_by_hexrays(*args) -> 'void' + set_type_determined_by_hexrays(ea) + @param ea (C++: ea_t) + +Help on function set_type_guessed_by_ida in module ida_nalt: + +set_type_guessed_by_ida(*args) -> 'void' + set_type_guessed_by_ida(ea) + @param ea (C++: ea_t) + Help on function set_usemodsp in module ida_nalt: set_usemodsp(*args) -> 'void' @@ -63919,6 +67848,9 @@ class switch_info_t(builtins.object) | is_subtract(self, *args) -> 'bool' | is_subtract(self) -> bool | + | is_user_defined(self, *args) -> 'bool' + | is_user_defined(self) -> bool + | | set_elbase(self, *args) -> 'void' | set_elbase(self, base) | @param base (C++: ea_t) @@ -64029,6 +67961,20 @@ unhide_item(*args) -> 'void' unhide_item(ea) @param ea (C++: ea_t) +Help on function upd_abits in module ida_nalt: + +upd_abits(*args) -> 'void' + upd_abits(ea, clr_bits, set_bits) + @param ea (C++: ea_t) + @param clr_bits (C++: aflags_t) + @param set_bits (C++: aflags_t) + +Help on function uses_aflag_modsp in module ida_nalt: + +uses_aflag_modsp(*args) -> 'bool' + uses_aflag_modsp(flags) -> bool + @param flags (C++: aflags_t) + Help on function uses_modsp in module ida_nalt: uses_modsp(*args) -> 'bool' @@ -64074,6 +68020,26 @@ ida_nalt.AFL_HIDDEN the item is hidden completely """ +ida_nalt.AFL_HR_DETERMINED +""" +the type is definitely guessed by the decompiler +""" + +ida_nalt.AFL_HR_GUESSED_DATA +""" +the data type is guessed by the decompiler +""" + +ida_nalt.AFL_HR_GUESSED_FUNC +""" +the function type is guessed by the decompiler +""" + +ida_nalt.AFL_IDA_GUESSED +""" +the type is guessed by IDA +""" + ida_nalt.AFL_LIB """ item from the standard library. low level flag, is used to set @@ -64153,7 +68119,8 @@ terse structure variable display? ida_nalt.AFL_TI """ -has typeinfo? ( 'NSUP_TYPEINFO' ) +has typeinfo? ( 'NSUP_TYPEINFO' ); used only for addresses, not for +'member_t' """ ida_nalt.AFL_TI0 @@ -64171,6 +68138,11 @@ ida_nalt.AFL_TILCMT has type comment? (such a comment may be changed by IDA) """ +ida_nalt.AFL_TYPE_GUESSED +""" +who guessed the type information? +""" + ida_nalt.AFL_USEMODSP """ example: pop [rsp+N] @@ -64185,9 +68157,8 @@ user-defined SP value ida_nalt.AFL_USERTI """ -(comes from the user or type library) - -the type information is definitive. +the type information is definitive. (comes from the user or type +library) if not set see 'AFL_TYPE_GUESSED' """ ida_nalt.AFL_WEAKNAM @@ -64596,9 +68567,8 @@ Patch netnode tag. ida_nalt.REFINFO_CUSTOM """ -a custom reference the kernel will call \\ph{notify}(ph.custom_offset, -.... that can change all arguments used for calculations. This flag is -useful for custom fixups +a custom reference. see 'custom_refinfo_handler_t' . the id of the +custom refinfo is stored under the REFINFO_TYPE mask. """ ida_nalt.REFINFO_NOBASE @@ -64635,7 +68605,9 @@ usual) being added to it ida_nalt.REFINFO_TYPE """ -reference type +reference ID if REFINFO_CUSTOM set + +reference type (reftype_t), or custom """ ida_nalt.RIDX_ABINAME @@ -64708,11 +68680,6 @@ ida_nalt.RIDX_PROBLEMS problem lists """ -ida_nalt.RIDX_SELECTED_EXTLANG -""" -last selected extlang name (from the execute script box) -""" - ida_nalt.RIDX_SELECTORS """ 2..63 are for selector_t blob (see init_selectors()) @@ -64873,11 +68840,6 @@ ida_nalt.SWI_JSIZE jump offset expansion bit """ -ida_nalt.SWI_RESERVED -""" -was: SWI_DEFAULT -""" - ida_nalt.SWI_SELFREL """ jump address is relative to the element not to ELBASE @@ -64917,6 +68879,11 @@ ida_nalt.SWI_SUBTRACT table values are subtracted from the elbase instead of being added """ +ida_nalt.SWI_USER +""" +user specified switch (starting from version 2) +""" + ida_nalt.SWI_V32 """ 32-bit values in table @@ -65491,7 +69458,7 @@ is_ident_cp(*args) -> 'bool' Help on function is_in_nlist in module ida_name: is_in_nlist(*args) -> 'bool' - Is name included into names list? + Is the name included into the name list? is_in_nlist(ea) -> bool @param ea (C++: ea_t) @@ -65613,7 +69580,7 @@ make_name_weak(*args) -> 'void' Help on function rebuild_nlist in module ida_name: rebuild_nlist(*args) -> 'void' - Rebuild names list. + Rebuild the name list. Help on function reorder_dummy_names in module ida_name: @@ -65669,8 +69636,8 @@ set_name(*args) -> 'bool' @param flags: Set name flags . If a bit is not specified, then the corresponding action is not performed and the name will retain the same bits as before calling this function. - For new names, default is: non-public, non-weak, non- - auto. (C++: int) + For new names, default is: non-public, non-weak, + non-auto. (C++: int) @retval: 1 - ok, name is changed @retval: 0 - failure, a warning is displayed @@ -66197,8 +70164,8 @@ class netnode(builtins.object) | tag: uchar | | copyto(self, *args) -> 'size_t' - | copyto(self, target, count=1) -> size_t - | target: netnode + | copyto(self, destnode, count=1) -> size_t + | destnode: netnode | count: nodeidx_t | | create(self, *args) -> 'bool' @@ -66373,8 +70340,8 @@ class netnode(builtins.object) | tag: uchar | | moveto(self, *args) -> 'size_t' - | moveto(self, target, count=1) -> size_t - | target: netnode + | moveto(self, destnode, count=1) -> size_t + | destnode: netnode | count: nodeidx_t | | next(self, *args) -> 'bool' @@ -66555,6 +70522,13 @@ class netnode(builtins.object) | value_exists(self) -> bool | | ---------------------------------------------------------------------- + | Static methods defined here: + | + | exist(*args) -> 'bool' + | exist(_name) -> bool + | _name: char const * + | + | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ @@ -66571,6 +70545,12 @@ class netnode(builtins.object) | | __hash__ = None +Help on function netnode_exist in module ida_netnode: + +netnode_exist(*args) -> 'bool' + netnode_exist(_name) -> bool + _name: char const * + === ida_netnode EPYDOC INJECTIONS === ida_netnode.BADNODE """ @@ -66755,10 +70735,10 @@ Help on function op_offset in module ida_offset: op_offset(*args) -> 'bool' See 'op_offset_ex()' - op_offset(ea, n, type, target=BADADDR, base=0, tdelta=0) -> bool + op_offset(ea, n, type_and_flags, target=BADADDR, base=0, tdelta=0) -> bool @param ea (C++: ea_t) @param n (C++: int) - @param type (C++: reftype_t) + @param type_and_flags (C++: uint32) @param target (C++: ea_t) @param base (C++: ea_t) @param tdelta (C++: adiff_t) @@ -68984,7 +72964,7 @@ UTF-16 codepage. ida_pro.IDA_SDK_VERSION """ -IDA SDK v7.5. +IDA SDK v7.6. """ ida_pro.IDBDEC_ESCAPE @@ -70870,6 +74850,15 @@ class segment_t(ida_range.range_t) | comorg(self, *args) -> 'bool' | comorg(self) -> bool | + | is_16bit(self, *args) -> 'bool' + | Is a 16-bit segment? + | + | is_32bit(self, *args) -> 'bool' + | Is a 32-bit segment? + | + | is_64bit(self, *args) -> 'bool' + | Is a 64-bit segment? + | | is_header_segm(self, *args) -> 'bool' | is_header_segm(self) -> bool | @@ -70917,11 +74906,7 @@ class segment_t(ida_range.range_t) | segment structure may be modified directly, there are special | functions to modify some fields. | - | use32(self, *args) -> 'bool' - | Use 32 bit segment addressing? - | - | use64(self, *args) -> 'bool' - | Use 64 bit segment addressing? + | use64 = is_64bit(self, *args) -> 'bool' | | ---------------------------------------------------------------------- | Data descriptors defined here: @@ -71341,7 +75326,9 @@ silent mode, no "Adding segment..." in the messages window ida_segment.ADDSEG_SPARSE """ -use sparse storage method for the new segment +use sparse storage method for the new ranges of the created segment. +please note that the ranges that were already enabled before creating +the segment will not change their storage type. """ ida_segment.CSS_BREAK @@ -72033,8 +76020,7 @@ the value is specified by the user Help on function build_strlist in module ida_strlist: build_strlist(*args) -> 'void' - Build the string list. You should initialize options before this call - using the restore_config() or setup_strings_window() methods. + Rebuild the string list. Help on function clear_strlist in module ida_strlist: @@ -72052,13 +76038,14 @@ get_strlist_item(*args) -> 'bool' Help on function get_strlist_options in module ida_strlist: -get_strlist_options(*args) -> 'strwinsetup_t *' - Get access to the static string list options. +get_strlist_options(*args) -> 'strwinsetup_t const *' + Get the static string list options. Help on function get_strlist_qty in module ida_strlist: get_strlist_qty(*args) -> 'size_t' - Get number of elements in the string list. + Get number of elements in the string list. The list will be loaded + from the database (if saved) or built from scratch. Help on class string_info_t in module ida_strlist: @@ -72123,9 +76110,6 @@ class strwinsetup_t(builtins.object) | _set_strtypes(self, py_t) -> PyObject * | py_t: PyObject * | - | is_initialized(self, *args) -> 'bool' - | is_initialized(self) -> bool - | | ---------------------------------------------------------------------- | Data descriptors defined here: | @@ -72295,6 +76279,20 @@ Help on function get_first_struc_idx in module ida_struct: get_first_struc_idx(*args) -> 'uval_t' Get index of first structure. +Help on function get_innermost_member in module ida_struct: + +get_innermost_member(*args) -> 'PyObject *' + get_innermost_member(sptr, offset) -> PyObject * + Get the innermost member at the given offset + @param sptr: the starting structure + @param offset: offset into the starting structure + @return: + - None on failure + - tuple(member_t, struct_t, offset) + where member_t: a member in SPTR (it is not a structure), + struct_t: the innermost structure, + offset: remaining offset into the returned member + Help on function get_last_struc_idx in module ida_struct: get_last_struc_idx(*args) -> 'uval_t' @@ -74316,7 +78314,10 @@ append_abi_opts(*args) -> 'bool' Help on function append_argloc in module ida_typeinf: append_argloc(*args) -> 'bool' - Serialize argument location. + Serialize argument location Deserialize an argument location. Argument + FORBID_STKOFF check location type. It can be used, for example, to + check the return location of a function that cannot return a value in + the stack append_argloc(out, vloc) -> bool @param out (C++: qtype *) @@ -74574,6 +78575,9 @@ class argloc_t(builtins.object) | has_stkoff(self, *args) -> 'bool' | TRUE if argloc has a stack part. | + | in_stack(self, *args) -> 'bool' + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) -> 'bool' | See 'ALOC_NONE' . | @@ -74869,6 +78873,9 @@ class argpart_t(argloc_t) | has_stkoff(self, *args) -> 'bool' | TRUE if argloc has a stack part. | + | in_stack(self, *args) -> 'bool' + | TRUE if argloc is in stack entirely. + | | is_badloc(self, *args) -> 'bool' | See 'ALOC_NONE' . | @@ -75660,6 +79667,15 @@ del_tinfo_attr(*args) -> 'bool' key: qstring const & make_copy: bool +Help on function del_vftable_ea in module ida_typeinf: + +del_vftable_ea(*args) -> 'bool' + Delete the address of a vftable instance for a vftable type. + + del_vftable_ea(ordinal) -> bool + @param ordinal: ordinal number of a vftable type. (C++: uint32) + @return: success + Help on function deref_ptr in module ida_typeinf: deref_ptr(*args) -> 'bool' @@ -76129,12 +80145,10 @@ class enum_type_data_t(enum_member_vec_t) Help on function extract_argloc in module ida_typeinf: extract_argloc(*args) -> 'bool' - Deserialize argument location. - - extract_argloc(vloc, ptype, is_retval) -> bool + extract_argloc(vloc, ptype, forbid_stkoff) -> bool @param vloc (C++: argloc_t *) @param ptype (C++: const type_t **) - @param is_retval (C++: bool) + @param forbid_stkoff (C++: bool) Help on function find_tinfo_udt_member in module ida_typeinf: @@ -76233,6 +80247,9 @@ class func_type_data_t(funcargvec_t) | @param purged (C++: int) | @param cc_flags (C++: int) | + | is_golang_cc(self, *args) -> 'bool' + | is_golang_cc(self) -> bool + | | is_high(self, *args) -> 'bool' | is_high(self) -> bool | @@ -76928,6 +80945,26 @@ get_type_ordinal(*args) -> 'int32' @param ti (C++: const til_t *) @param name (C++: const char *) +Help on function get_vftable_ea in module ida_typeinf: + +get_vftable_ea(*args) -> 'ea_t' + Get address of a virtual function table. + + get_vftable_ea(ordinal) -> ea_t + @param ordinal: ordinal number of a vftable type. (C++: uint32) + @return: address of the corresponding virtual function table in the + current database. + +Help on function get_vftable_ordinal in module ida_typeinf: + +get_vftable_ordinal(*args) -> 'uint32' + Get ordinal number of the virtual function table. + + get_vftable_ordinal(vftable_ea) -> uint32 + @param vftable_ea: address of a virtual function table. (C++: ea_t) + @return: ordinal number of the corresponding vftable type. 0 - + failure. + Help on function guess_func_cc in module ida_typeinf: guess_func_cc(*args) -> 'cm_t' @@ -77135,6 +81172,14 @@ Help on function is_gcc64 in module ida_typeinf: is_gcc64(*args) -> 'bool' Is the target compiler 64 bit gcc? +Help on function is_golang_cc in module ida_typeinf: + +is_golang_cc(*args) -> 'bool' + GO language calling convention (return value in stack)? + + is_golang_cc(cc) -> bool + @param cc (C++: cm_t) + Help on function is_ordinal_name in module ida_typeinf: is_ordinal_name(*args) -> 'bool' @@ -78788,6 +82833,17 @@ set_type_alias(*args) -> 'bool' @param src_ordinal (C++: uint32) @param dst_ordinal (C++: uint32) +Help on function set_vftable_ea in module ida_typeinf: + +set_vftable_ea(*args) -> 'bool' + Set the address of a vftable instance for a vftable type. + + set_vftable_ea(ordinal, vftable_ea) -> bool + @param ordinal: ordinal number of the corresponding vftable type. + (C++: uint32) + @param vftable_ea: address of a virtual function table. (C++: ea_t) + @return: success + Help on class simd_info_t in module ida_typeinf: class simd_info_t(builtins.object) @@ -78850,6 +82906,11 @@ store_til(*args) -> 'bool' const char *) @return: success +Help on function switch_to_golang in module ida_typeinf: + +switch_to_golang(*args) -> 'void' + switch to GOLANG calling convention (to be used as default CC) + Help on class text_sink_t in module ida_typeinf: class text_sink_t(builtins.object) @@ -80372,6 +84433,9 @@ class udt_type_data_t(udtmembervec_t) | is_vftable(self, *args) -> 'bool' | is_vftable(self) -> bool | + | set_vftable(self, *args) -> 'void' + | set_vftable(self) + | | swap(self, *args) -> 'void' | swap(self, r) | @param r (C++: udt_type_data_t &) @@ -80757,6 +84821,11 @@ unpack_object_from_idb(*args) -> 'PyObject *' ea: ea_t pio_flags: int +Help on function use_golang_cc in module ida_typeinf: + +use_golang_cc(*args) -> 'bool' + is GOLANG calling convention used by default? + Help on class valstr_t in module ida_typeinf: class valstr_t(builtins.object) @@ -81156,6 +85225,11 @@ ida_typeinf.CC_CDECL_OK can use __cdecl calling convention? """ +ida_typeinf.CC_GOLANG_OK +""" +can use __golang calling convention +""" + ida_typeinf.CC_HAS_ELLIPSIS """ function has a variable list of arguments? @@ -81187,6 +85261,11 @@ ida_typeinf.FAI_STRUCT was initially a structure """ +ida_typeinf.FAI_UNUSED +""" +argument is not used by the function +""" + ida_typeinf.FTI_ALL """ all defined bits @@ -81209,6 +85288,11 @@ ida_typeinf.FTI_DEFCALL default call """ +ida_typeinf.FTI_EXPLOCS +""" +all arglocs are specified explicitly +""" + ida_typeinf.FTI_FARCALL """ far call @@ -82223,23 +86307,6 @@ get_printable_immvals(*args) -> 'PyObject *' @param F: flags for the specified address (C++: flags_t) @return: number of immediate values (0..2* UA_MAXOP ) -Help on function guess_table_address in module ida_ua: - -guess_table_address(*args) -> 'ea_t' - Guess the jump table address (ibm pc specific) - - guess_table_address(insn) -> ea_t - @param insn - an ida_ua.insn_t, or an address (C++: const insn_t &) - -Help on function guess_table_size in module ida_ua: - -guess_table_size(*args) -> 'asize_t' - Guess the jump table size. - - guess_table_size(insn, jump_table) -> asize_t - @param insn - an ida_ua.insn_t, or an address (C++: const insn_t &) - @param jump_table (C++: ea_t) - Help on function insn_add_cref in module ida_ua: insn_add_cref(*args) -> 'void' @@ -82417,6 +86484,10 @@ class insn_t(builtins.object) | | Op6 | + | Op7 + | + | Op8 + | | __dict__ | dictionary for instance variables (if defined) | @@ -83237,6 +87308,9 @@ class outctx_t(outctx_base_t) | procmod | outctx_t_procmod_get(self) -> procmod_t | + | saved_immvals + | outctx_t_saved_immvals_get(self) -> uval_t [8] + | | thisown | The membership flag | @@ -85158,12 +89232,17 @@ clear_trace(filename) Help on function create_align in module ida_bytes: create_align(*args) -> 'bool' - Alignment: 0 or 2..32. If it is 0, is will be calculated. + Create an alignment item. create_align(ea, length, alignment) -> bool - @param ea (C++: ea_t) - @param length (C++: asize_t) - @param alignment (C++: int) + @param ea: linear address (C++: ea_t) + @param length: size of the item in bytes. 0 means to infer from + ALIGNMENT (C++: asize_t) + @param alignment: alignment exponent. Example: 3 means align to 8 + bytes. 0 means to infer from LENGTH It is forbidden + to specify both LENGTH and ALIGNMENT as 0. (C++: + int) + @return: success Help on function create_array in module idc: @@ -85487,12 +89566,8 @@ del_hidden_range(*args) -> 'bool' Help on function del_idc_hotkey in module ida_kernwin: del_idc_hotkey(*args) -> 'bool' - Delete IDC function hotkey ( 'ui_del_idckey' ). - del_idc_hotkey(hotkey) -> bool - @param hotkey: hotkey name (C++: const char *) - @retval: 1 - ok - @retval: 0 - failed + @param hotkey (C++: const char *) Help on function del_items in module ida_bytes: @@ -88065,9 +92140,9 @@ load_debugger(*args) -> 'bool' Help on function load_trace_file in module ida_dbg: load_trace_file(*args) -> 'qstring *' - Load a recorded trace file in the trace window. If the call succeeds - and 'buf' is not null, the description of the trace stored in the - binary trace file will be returned in 'buf' + Load a recorded trace file in the 'Tracing' window. If the call + succeeds and 'buf' is not null, the description of the trace stored in + the binary trace file will be returned in 'buf' load_trace_file(filename) -> str @param filename (C++: const char *) @@ -88256,10 +92331,10 @@ Help on function op_offset in module ida_offset: op_offset(*args) -> 'bool' See 'op_offset_ex()' - op_offset(ea, n, type, target=BADADDR, base=0, tdelta=0) -> bool + op_offset(ea, n, type_and_flags, target=BADADDR, base=0, tdelta=0) -> bool @param ea (C++: ea_t) @param n (C++: int) - @param type (C++: reftype_t) + @param type_and_flags (C++: uint32) @param target (C++: ea_t) @param base (C++: ea_t) @param tdelta (C++: adiff_t) diff --git a/swig/bytes.i b/swig/bytes.i index b948cff..6658e38 100644 --- a/swig/bytes.i +++ b/swig/bytes.i @@ -36,9 +36,10 @@ %ignore get_bytes; %ignore get_strlit_contents; %ignore get_hex_string; -%ignore bin_search2; %ignore bin_search; // we redefine our own, w/ 2 params swapped, so we can apply the typemaps below %rename (bin_search) py_bin_search; +%rename (bin_search) bin_search2; +%ignore bin_search2(ea_t, ea_t, const uchar *, const uchar *, size_t, int); %ignore get_8bit; %rename (get_8bit) py_get_8bit; @@ -46,9 +47,7 @@ %ignore get_octet; %rename (get_octet) py_get_octet; -%ignore compiled_binpat_t; -%ignore compiled_binpat_vec_t; -%ignore parse_binpat_str; +%template(compiled_binpat_vec_t) qvector; // TODO: This could be fixed (if needed) %ignore set_dbgmem_source; @@ -177,8 +176,14 @@ %include "bytes.hpp" +// Make it so that 'imask' can be None %apply (const bytevec_t &_fields) { const bytevec_t &imask }; +%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) const bytevec_t &imask +{ // %typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) const bytevec_t &imask + $1 = ($input == Py_None || IDAPyBytes_Check($input)) ? 1 : 0; +} +// %clear(void *buf, ssize_t size); %clear(const void *buf, size_t size); diff --git a/swig/expr.i b/swig/expr.i index 24d8718..9d83b34 100644 --- a/swig/expr.i +++ b/swig/expr.i @@ -91,13 +91,8 @@ %extend idc_value_t { - wrapped_array_t __get_e() { - return wrapped_array_t($self->e); - } - %pythoncode { str = property(lambda self: self.c_str(), lambda self, v: self.set_string(v)) - e = property(__get_e) } } diff --git a/swig/funcs.i b/swig/funcs.i index 4ec7c63..b7b2e05 100644 --- a/swig/funcs.i +++ b/swig/funcs.i @@ -21,6 +21,7 @@ %ignore func_t::llabelqty; %ignore func_t::llabels; +%ignore FUNC_RESERVED; %template (dyn_stkpnt_array) dynamic_wrapped_array_t; %template (dyn_regvar_array) dynamic_wrapped_array_t; diff --git a/swig/gdl.i b/swig/gdl.i index 88e568c..eb07d49 100644 --- a/swig/gdl.i +++ b/swig/gdl.i @@ -2,8 +2,12 @@ #include %} -%ignore cancellable_graph_t; -%ignore gdl_graph_t; +%ignore gdl_graph_t::gen_gdl; +%ignore gdl_graph_t::gen_dot; +%ignore gdl_graph_t::path_exists; + +%ignore cancellable_graph_t::padding; +%ignore cancellable_graph_t::check_cancel; %ignore intmap_t; %ignore intset_t; diff --git a/swig/graph.i b/swig/graph.i index d28fa89..de210d8 100644 --- a/swig/graph.i +++ b/swig/graph.i @@ -18,36 +18,41 @@ // most of these aren't defined/exported through graph.hpp %ignore abstract_graph_t::callback; -%ignore abstract_graph_t; +%ignore abstract_graph_t::vgrcall; +%ignore abstract_graph_t::clear; +%ignore abstract_graph_t::dump_graph; +%ignore abstract_graph_t::calc_bounds; +%ignore abstract_graph_t::calc_fitting_params; +%ignore abstract_graph_t::for_all_nodes_edges; +%ignore abstract_graph_t::get_edge_ports; +%ignore abstract_graph_t::add_node_edges; +%ignore abstract_graph_t::create_polar_tree_layout; +%ignore abstract_graph_t::create_radial_tree_layout; +%ignore abstract_graph_t::create_orthogonal_layout; +%ignore abstract_graph_t::clone; +%ignore abstract_graph_t::nrect; +%rename (nrect) my_nrect; +%ignore abstract_graph_t::get_edge; +%rename (get_edge) my_get_edge; + %ignore edge_info_t::add_layout_point; %ignore edge_infos_wrapper_t::edge_infos_wrapper_t; %ignore edge_infos_wrapper_t::~edge_infos_wrapper_t; %ignore graph_dispatcher; %ignore graph_item_t::operator==; -%ignore mutable_graph_t::add_edge; -%ignore mutable_graph_t::add_node; + +// Meant to be constructed by the kernel/ui only +%feature("nodirector") mutable_graph_t; +%ignore mutable_graph_t::mutable_graph_t; %ignore mutable_graph_t::calc_center_of; %ignore mutable_graph_t::change_visibility; %ignore mutable_graph_t::check_new_group; -%ignore mutable_graph_t::clone; -%ignore mutable_graph_t::del_edge; -%ignore mutable_graph_t::del_node; -%ignore mutable_graph_t::fix_collapsed_group_edges; -%ignore mutable_graph_t::get_edge(edge_t); -%rename (get_edge) my_get_edge; %ignore mutable_graph_t::groups_are_present; %ignore mutable_graph_t::insert_simple_nodes; %ignore mutable_graph_t::insert_visible_nodes; %ignore mutable_graph_t::move_grouped_nodes; %ignore mutable_graph_t::move_to_same_place; -%ignore mutable_graph_t::mutable_graph_t; -%ignore mutable_graph_t::redo_layout; -%ignore mutable_graph_t::refresh; -%ignore mutable_graph_t::replace_edge; -%ignore mutable_graph_t::resize; -%ignore mutable_graph_t::set_nrect; -%ignore node_ordering_t::clr; -%ignore node_ordering_t::order; + %ignore point_t::dstr; %ignore point_t::print; %ignore pointseq_t::dstr; @@ -62,12 +67,16 @@ public: virtual int idaapi visit_edge(edge_t /*e*/, edge_info_t * /*ei*/) { qnotused(self); return 0; } } -%extend mutable_graph_t { +%extend abstract_graph_t { public: virtual edge_info_t my_get_edge(edge_t e) { return *($self->get_edge(e)); } + virtual rect_t my_nrect(int n) + { + return $self->nrect(n); + } } %template(screen_graph_selection_base_t) qvector; diff --git a/swig/hexrays.i b/swig/hexrays.i index 35010e6..b65d7d3 100644 --- a/swig/hexrays.i +++ b/swig/hexrays.i @@ -1,4 +1,7 @@ %{ +#undef HEXDSP +hexdsp_t *get_idapython_hexdsp(); +#define HEXDSP get_idapython_hexdsp() #include %} @@ -39,6 +42,10 @@ SWIGINTERN void __raise_vdf(const vd_failure_t &e) %include #endif +%typemap(check) const tinfo_t *type { + // %typemap(check) const tinfo_t *type +} + %define %define_hexrays_lifecycle_object(TypeName) %feature("ref") TypeName { @@ -147,8 +154,11 @@ SWIGINTERN void __raise_vdf(const vd_failure_t &e) %feature("nodirector") codegen_t; %ignore codegen_t::reserved; +%feature("nodirector") simple_graph_t; %ignore simple_graph_t::simple_graph_t; %ignore simple_graph_t::~simple_graph_t; + +%feature("nodirector") mbl_graph_t; %ignore mbl_graph_t::mbl_graph_t; %ignore mbl_graph_t::~mbl_graph_t; @@ -208,6 +218,15 @@ SWIGINTERN void __raise_vdf(const vd_failure_t &e) } }; +%extend mba_t { + %pythoncode { + """ + Deprecated. Please do not use. + """ + idb_node = property(lambda self: self.deprecated_idb_node) + } +}; + %ignore op_parent_info_t::really_alloc; %ignore getf_reginsn(const minsn_t *); @@ -289,6 +308,8 @@ SWIGINTERN void __raise_vdf(const vd_failure_t &e) %rename (_ll_make_num) make_num; %rename (_ll_create_helper) create_helper; +%delobject create_cfunc; + %extend cfunc_t { %immutable argidx; @@ -361,10 +382,13 @@ public: raise Exception("%s already owns attribute \"%s\" (%s); cannot be modified" % (self, attr, o)) return True + def _ensure_ownership_transferrable(self, v): + if not v.thisown: + raise Exception("%s is already owned, and cannot be reused" % v) + def _acquire_ownership(self, v, acquire): if acquire and (v is not None) and not isinstance(v, ida_idaapi.integer_types): - if not v.thisown: - raise Exception("%s is already owned, and cannot be reused" % v) + self._ensure_ownership_transferrable(v) v.thisown = False dereg = getattr(v, "_deregister", None) if dereg: @@ -662,6 +686,17 @@ cexpr_t *citem_t_cexpr_get(citem_t *item) { return (cexpr_t *) item; } CEXPR_MEMBER_REF_STR(char*, string, self.op == cot_str, None); }; +%feature("pythonprepend") cexpr_t::cexpr_t %{ + for arg in args[1:]: # skip copy constructor's arg + if isinstance(arg, cexpr_t): + self._ensure_ownership_transferrable(arg) +%} +%feature("pythonappend") cexpr_t::cexpr_t %{ + for arg in args[1:]: # skip copy constructor's arg + if isinstance(arg, cexpr_t): + self._acquire_ownership(arg, True) +%} + #undef CEXPR_MEMBER_REF_STR #undef CEXPR_MEMBER_REF @@ -956,18 +991,6 @@ void qswap(cinsn_t &a, cinsn_t &b); %possible_director_exc(ctree_visitor_t::apply_to) %possible_director_exc(ctree_visitor_t::apply_to_exprs) -%template (fnum_array) wrapped_array_t; -%extend fnumber_t { - wrapped_array_t __get_fnum() { - return wrapped_array_t($self->fnum); - } - - %pythoncode { - fnum = property(__get_fnum) - } -} - - %inline %{ // // diff --git a/swig/idd.i b/swig/idd.i index b0fe335..a3452c1 100644 --- a/swig/idd.i +++ b/swig/idd.i @@ -31,7 +31,7 @@ %uncomparable_elements_qvector(exception_info_t, excvec_t); %uncomparable_elements_qvector(process_info_t, procinfo_vec_t); -%template(call_stack_t) qvector; +%template(call_stack_info_vec_t) qvector; %template(meminfo_vec_t) qvector; %include "idd.hpp" diff --git a/swig/idp.i b/swig/idp.i index 5f6de3a..98c096a 100644 --- a/swig/idp.i +++ b/swig/idp.i @@ -57,6 +57,8 @@ struct undo_records_t; %ignore ignore_micro_t; %ignore procmod_t; %ignore plugmod_t; +%ignore get_hexdsp; +%ignore set_hexdsp; // @arnaud %ignore notify__calc_next_eas; diff --git a/swig/ieee.i b/swig/ieee.i new file mode 100644 index 0000000..fc02337 --- /dev/null +++ b/swig/ieee.i @@ -0,0 +1,209 @@ + +%{ +#include +%} + +%ignore ieee_ezero; +%ignore ieee_eone; +%ignore ieee_etwo; +%ignore ieee_e32; +%ignore ieee_elog2; +%ignore ieee_esqrt2; +%ignore ieee_eoneopi; +%ignore ieee_epi; +%ignore ieee_eeul; +%ignore realtoasc; +%ignore asctoreal; +%ignore eltoe; +%ignore eltoe64; +%ignore eltoe64u; +%ignore eetol; +%ignore eetol64; +%ignore eetol64u; +%ignore eldexp; +%ignore eadd; +%ignore emul; +%ignore ediv; +%ignore ecmp; +%ignore get_fpvalue_kind; +%ignore emovo; +%ignore emovi; +%ignore eshift; +%ignore emdnorm; +%ignore ieee_realcvt; +%ignore realcvt; +%ignore l_realcvt; +%ignore b_realcvt; + +%typemap(argout) (char *buf, size_t bufsize) +{ + // %typemap(argout) (char *buf, size_t bufsize) (ieee.i specialization) + Py_XDECREF(resultobj); + $result = IDAPyStr_FromUTF8($1); +} + +%_uint_result_as_output(sval_t, PyLong_FromLong, result == REAL_ERROR_OK); +%_uint_result_as_output(int64, PyLong_FromLongLong, result == REAL_ERROR_OK); +%_uint_result_as_output(uint64, PyLong_FromUnsignedLongLong, result == REAL_ERROR_OK); +%apply sval_t *result { sval_t *out }; +%apply int64 *result { int64 *out }; +%apply uint64 *result { uint64 *out }; + +%inline %{ +// +// +%} + +%define %define_sized_bytevec_t(TYPE, SIZE) +%typemap(check) (const TYPE &) +{ // %typemap(check) (const TYPE) + if ( $1->size() != SIZE ) + SWIG_exception_fail( + SWIG_ValueError, + "invalid bytes " "in method '" "$symname" "', argument " "$argnum"" should be " #SIZE " bytes long"); +} +%enddef +%define_sized_bytevec_t(bytevec12_t, 12); +%define_sized_bytevec_t(bytevec10_t, 10); + +%ignore fpvalue_t::from_half; +%ignore fpvalue_t::from_float; +%ignore fpvalue_t::from_double; +%ignore fpvalue_t::to_half; +%ignore fpvalue_t::to_float; +%ignore fpvalue_t::to_double; +%ignore fpvalue_t::from_str(const char **); + +%template (fpvalue_shorts_array_t) wrapped_array_t; + +%extend fpvalue_t { + fpvalue_t() + { + fpvalue_t *fp = new fpvalue_t(); + fp->clear(); + return fp; + } + + fpvalue_t(const bytevec12_t &in) + { + fpvalue_t *fp = new fpvalue_t(); + memmove(fp->w, in.begin(), sizeof(fp->w)); + return fp; + } + + void _get_bytes(bytevec12_t *vout) const + { + vout->resize(12); + memmove(vout->begin(), (const void *) $self->w, vout->size()); + } + + void _set_bytes(const bytevec12_t &in) + { + memmove($self->w, (const void *) in.begin(), sizeof($self->w)); + } + + void _get_10bytes(bytevec10_t *vout) const + { + vout->resize(10); + memmove(vout->begin(), (const void *) $self->w, vout->size()); + } + + void _set_10bytes(const bytevec10_t &in) + { + memmove($self->w, (const void *) in.begin(), sizeof($self->w)); + } + + // yes, it's called '_get_float', but we return a 'double' because + // that 'double' will be for SWiG to turn the type into a Python + // floating-point value with as much accuracy as possible. + double _get_float() const + { + double v; + fpvalue_error_t err = $self->to_double(&v); + if ( err != REAL_ERROR_OK ) + PyErr_SetString( + PyExc_ValueError, + "Raw data couldn't be converted to a floating-point number"); + return v; + } + + void _set_float(double v) + { + fpvalue_error_t err = $self->from_double(v); + if ( err != REAL_ERROR_OK ) + PyErr_SetString( + PyExc_ValueError, + "The floating-point number couldn't be converted"); + } + + qstring __str__() const + { + char buf[MAXSTR]; + $self->to_str(buf, sizeof(buf), 50); + qstring qs(buf); + qs.trim2(); + return qs; + } + + wrapped_array_t _get_shorts() + { + return wrapped_array_t($self->w); + } + + fpvalue_error_t from_str(const char *p) + { + return p != nullptr ? $self->from_str(&p) : REAL_ERROR_BADSTR; + } + + void assign(const fpvalue_t &r) + { + memmove($self->w, r.w, sizeof($self->w)); + } + + %pythoncode + { + bytes = property(_get_bytes, _set_bytes) + _10bytes = property(_get_10bytes, _set_10bytes) + shorts = property(_get_shorts) + float = property(_get_float, _set_float) + sval = property(lambda self: self.to_sval(), lambda self, v: self.from_sval(v)) + int64 = property(lambda self: self.to_int64(), lambda self, v: self.from_int64(v)) + uint64 = property(lambda self: self.to_uint64(), lambda self, v: self.from_uint64(v)) + + def __iter__(self): + shorts = self.shorts + for one in shorts: + yield one + + def __getitem__(self, i): + return self.shorts[i] + + def __setitem__(self, i, v): + self.shorts[i] = v + } +} + +%define %define_fpvalue_t_operator(OPERATOR, METHOD, ERRMSG) +%nopythonmaybecall fpvalue_t::OPERATOR; +%extend fpvalue_t { + fpvalue_t OPERATOR(const fpvalue_t &o) const + { + fpvalue_t r = *$self; + fpvalue_error_t err = r.METHOD(o); + if ( err != REAL_ERROR_OK ) + throw std::runtime_error(ERRMSG); + return r; + } +} +%enddef +%define_fpvalue_t_operator(__add__, fadd, "Addition failed"); +%define_fpvalue_t_operator(__sub__, fsub, "Subtraction failed"); +%define_fpvalue_t_operator(__mul__, fmul, "Multiplication failed"); +%define_fpvalue_t_operator(__truediv__, fdiv, "Division failed"); + +%include "ieee.h" + +%pythoncode %{ +# +# +%} diff --git a/swig/kernwin.i b/swig/kernwin.i index 9d9ba43..71f364c 100644 --- a/swig/kernwin.i +++ b/swig/kernwin.i @@ -21,7 +21,9 @@ struct dirspec_t; $result = PyLong_FromUnsignedLongLong((unsigned long long) $1); } +%ignore callui_t; %ignore sync_source_t::sync_source_t(); +%ignore l_compare; // Ignore the va_list functions %ignore vask_form; @@ -88,8 +90,6 @@ struct dirspec_t; %ignore destroy_custom_viewerdestroy_custom_viewer; %ignore set_custom_viewer_handler; %ignore set_custom_viewer_range; -%ignore is_idaview; -%ignore refresh_custom_viewer; %ignore set_custom_viewer_handlers; %ignore get_viewer_name; // Ignore these string functions. There are trivial replacements in Python. @@ -138,6 +138,33 @@ struct dirspec_t; %ignore chooser_item_attrs_t::cb; +// chooser_base_t should be read-only +%ignore chooser_base_t::chooser_base_t; +%ignore chooser_base_t::~chooser_base_t; +%ignore chooser_base_t::call_destructor; +%ignore chooser_base_t::check_version; +%ignore chooser_base_t::closed; +%ignore chooser_base_t::get_chooser_obj; +%ignore chooser_base_t::get_obj_id; +%ignore chooser_base_t::init; +%ignore chooser_base_t::set_ask_item_attrs; +%ignore chooser_base_t::ALL_CHANGED; +%ignore chooser_base_t::NOTHING_CHANGED; +%ignore chooser_base_t::SELECTION_CHANGED; +%ignore chooser_base_t::ALREADY_EXISTS; +%ignore chooser_base_t::EMPTY_CHOOSER; +%ignore chooser_base_t::NO_ATTR; +%ignore chooser_base_t::NO_SELECTION; + +%feature("nodirector") chooser_base_t; +%ignore chooser_base_t::get_row(qstrvec_t *, int *, chooser_item_attrs_t *, size_t) const; +%extend chooser_base_t { + PyObject *get_row(size_t n) const + { + return py_chooser_base_t_get_row($self, n); + } +} + // Make ask_addr(), ask_seg(), and ask_long() return a // tuple: (result, value) %rename (_ask_long) ask_long; @@ -163,8 +190,8 @@ struct dirspec_t; %apply bytevec_t *vout { bytevec_t *out }; %ignore register_place_class; -%ignore register_loc_converter; -%ignore lookup_loc_converter; +%ignore register_loc_converter2; +%ignore lookup_loc_converter2; %ignore hexplace_t; %ignore hexplace_gen_t; diff --git a/swig/lumina.i b/swig/lumina.i index 7c6645d..13fbd3b 100644 --- a/swig/lumina.i +++ b/swig/lumina.i @@ -21,12 +21,15 @@ %ignore func_info_and_frequency_t::swap; %ignore func_info_pattern_and_frequency_t::swap; %ignore input_file_t::swap; +%ignore func_info_pattern_and_frequency_t::swap; %ignore mdkey2str; %ignore str2mdkey; %ignore serialize; %ignore deserialize; %ignore new_lumina_client; %ignore close_server_connection; +%ignore close_server_connection2; +%ignore close_server_connections; %ignore get_mdkey_preferred_format; %ignore extract_type_from_metadata; %rename (extract_type_from_metadata) py_extract_type_from_metadata; diff --git a/swig/nalt.i b/swig/nalt.i index b466a06..7aaec3a 100644 --- a/swig/nalt.i +++ b/swig/nalt.i @@ -17,9 +17,6 @@ %ignore set_wide_value; %ignore del_wide_value; -%ignore get_strid; -%ignore _set_strid; -%ignore _del_strid; %ignore xrefpos_t; %ignore get_xrefpos; %ignore set_xrefpos; @@ -64,10 +61,6 @@ %ignore set_jumptable_info; %ignore get_jumptable_info; -%ignore refinfo_t::_get_target; -%ignore refinfo_t::_get_value; -%ignore refinfo_t::_get_opval; - %ignore custom_refinfo_handler_t; %ignore custom_refinfo_handlers_t; %ignore register_custom_refinfo; diff --git a/swig/netnode.i b/swig/netnode.i index 6c062d1..0e649bb 100644 --- a/swig/netnode.i +++ b/swig/netnode.i @@ -73,6 +73,8 @@ %ignore netnode_inited; %ignore netnode_is_available; %ignore netnode_copy; +%ignore netnode_copy2; +%ignore netnode_copyto2; %ignore netnode_altshift; %ignore netnode_charshift; %ignore netnode_supshift; diff --git a/swig/pro.i b/swig/pro.i index 917e09f..4aaf9c1 100644 --- a/swig/pro.i +++ b/swig/pro.i @@ -47,6 +47,12 @@ } } +// I am not sure how else to proceed for SWiG to not attempt +// generating a setter... +%ignore BADDIFF; +%rename (BADDIFF) _BADDIFF; +%constant diffpos_t _BADDIFF = diffpos_t(-1); + // // diff --git a/swig/segment.i b/swig/segment.i index f00e7cf..3ee2344 100644 --- a/swig/segment.i +++ b/swig/segment.i @@ -21,6 +21,10 @@ { ea_t start_ea; ea_t end_ea; + + %pythoncode { + use64 = is_64bit + } } #ifdef __EA64__ diff --git a/swig/srclang.i b/swig/srclang.i new file mode 100644 index 0000000..8de15e3 --- /dev/null +++ b/swig/srclang.i @@ -0,0 +1,23 @@ +%{ +#include +%} + +%ignore srclang_parser_t; +%ignore srclang_parsers_t; +%ignore srclang_parser_obj_t; +%ignore install_srclang_parser; +%ignore remove_srclang_parser; +%ignore select_srclang_parser; +%ignore get_srclang_parser_internal; +%ignore get_current_srclang_parser; +%ignore srclang_parser_visitor_t; +%ignore for_all_srclang_parsers; +%ignore find_parser_kind_t; +%ignore find_srclang_parser; +%ignore find_parser_by_idx; +%ignore find_parser_by_name; +%ignore find_parser_by_srclang; +%ignore init_srclang_parser; +%ignore term_srclang_parser; + +%include "srclang.hpp" diff --git a/swig/struct.i b/swig/struct.i index b2cdc79..82706b8 100644 --- a/swig/struct.i +++ b/swig/struct.i @@ -7,6 +7,9 @@ %ignore get_member_name(tid_t); %ignore get_member_by_id(tid_t, struc_t **); // allow version w/ qstring* only +%ignore get_innermost_member; +%rename (get_innermost_member) py_get_innermost_member; + //------------------------------------------------------------------------- // For 'get_member_by_id()' %typemap(in,numinputs=0) qstring *out_mname (qstring temp) { diff --git a/swig/typeinf.i b/swig/typeinf.i index 249480d..f96a044 100644 --- a/swig/typeinf.i +++ b/swig/typeinf.i @@ -5,6 +5,8 @@ // Most of these could be wrapped if needed %ignore get_cc; +%ignore get_effective_cc; +%ignore ::use_golang_abi; %ignore get_cc_type_size; %ignore get_de; %ignore skip_ptr_type_header; diff --git a/swig/ua.i b/swig/ua.i index 5412666..0da3714 100644 --- a/swig/ua.i +++ b/swig/ua.i @@ -88,6 +88,8 @@ Op4 = property(lambda self: self.__get_operand__(3)) Op5 = property(lambda self: self.__get_operand__(4)) Op6 = property(lambda self: self.__get_operand__(5)) + Op7 = property(lambda self: self.__get_operand__(6)) + Op8 = property(lambda self: self.__get_operand__(7)) auxpref = property(__get_auxpref__, __set_auxpref__) diff --git a/tbd.md b/tbd.md new file mode 100644 index 0000000..6828e19 --- /dev/null +++ b/tbd.md @@ -0,0 +1,85 @@ +Overview +======== + +This document describes the IDAPython linking process used on Apple Silicon Macs. + +Motivation +========== + +Since IDAPython must be compatible with different Python versions, we must provide the user with +a mechanism to easily switch between them. Traditionally the approach on Mac was to have the +idapyswitch utility patch the libpython load commands in all of IDAPython's modules. + +However this gets us into trouble on Apple Silicon, because codesigning rules are strictly enforced. +If we patch a dylib binary in IDA's installation, its code signature is invalidated and macOS will +refuse to load it (not only that, but the process is immediately killed). + +We must be able to switch between various Python versions _without_ modifying IDA's binaries. + +TBD Files +========= + +This is where .tbd files can help us. + +A .tbd file is a stub library that can be used in place of a real dylib. It is essentially just a text file +that describes the contents of a given library - e.g. the target arch, all exported symbols, and (most importantly) +the library's install name. + +This allows us to configure the libpython install name used when our IDAPython binaries are linked, so that they +point to a symlink for libpython instead of the real libpython binary. Thus, it is trivial to switch between +different Python versions because need only to modify the symlink target, and all of IDAPython's modules can +remain untouched. + +Generating TBD Files +==================== + +.tbd files can be generated using the 'tapi' utility on macOS. It is usually found here: + + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi + +For example, this is how you can recreate libpython3.tbd on an Apple Silicon machine: + + $ alias tapi='/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi' + $ cp /Library/Frameworks/Python.framework/Versions/3.9/Python /tmp/ + $ tapi stubify /tmp/Python + $ mv /tmp/Python.tbd ~/idasrc/current/plugins/idapython/libpython3.tbd + +Then replace the following line: + + install-name: '/Library/Frameworks/Python.framework/Versions/3.9/Python' + +With: + + install-name: '@executable_path/libpython3.link.dylib' + +Note that the libpython3.link.dylib symlink will be created by idapyswitch at idapython build time +(see TBD_MODULE_DEP in idapython/makefile and pyver_tool_t::do_apply_version() in idapyswitch_mac.cpp). + +It is also a good idea to clean up the .tbd file by removing all config directives that aren't +absolutely necessary. This makes it more likely that the .tbd file will continue to be compatible +with newer versions of the macOS linker (no surprise, the format is really unstable). + +So far it seems that only the following options are required: + + --- !tapi-tbd + tbd-version: 4 + targets: [ arm64-macos ] + install-name: '@executable_path/libpython3.link.dylib' + current-version: 3.9 + compatibility-version: 3.9 + exports: + + ... + +Everything else can be removed. + +Python 2 +======== + +The same approach can be used for Python2, but instead use: + + $ cp /System/Library/Frameworks/Python.framework/Versions/2.7/Python /tmp/ + +and use this install name instead: + + install-name: '@executable_path/libpython2.link.dylib' diff --git a/tools/chkapi.py b/tools/chkapi.py index b8088f6..b574532 100644 --- a/tools/chkapi.py +++ b/tools/chkapi.py @@ -387,6 +387,9 @@ def check_python(args): "structplace_t" : { "mustinherit" : "place_t" }, "textctrl_info_t" : { "mustinherit" : "ida_idaapi.py_clinked_object_t" }, "udt_type_data_t" : { "mustinherit" : "udtmembervec_t" }, + "call_stack_t" : { "mustinherit" : "call_stack_info_vec_t" }, + "abstract_graph_t" : { "mustinherit" : "ida_gdl.gdl_graph_t" }, + "mutable_graph_t" : { "mustinherit" : "abstract_graph_t" }, # Just look for the presence of those things "BADNODE" : {}, @@ -421,6 +424,7 @@ def check_python(args): # "vivl_t" : { "mustinherit" : "ivl_t" }, "ivl_t" : { "mustinherit" : "uval_ivl_t" }, "ivlset_t" : { "mustinherit" : "uval_ivl_ivlset_t" }, + "simple_graph_t" : { "mustinherit" : "ida_gdl.gdl_graph_t" }, } types_coherence = types_coherence_base.copy() diff --git a/tools/deploy/header.i.in b/tools/deploy/header.i.in index f3497ad..07e8842 100644 --- a/tools/deploy/header.i.in +++ b/tools/deploy/header.i.in @@ -721,16 +721,20 @@ SWIGINTERN PyObject *_maybe_byte_array_as_hex_or_none_result( //------------------------------------------------------------------------- // OUT qstrvec_t //------------------------------------------------------------------------- -%typemap(in,numinputs=0) qstrvec_t *out (qstrvec_t temp) { - $1 = &temp; +%typemap(in,numinputs=0) qstrvec_t *out (qstrvec_t temp) +{ + // %typemap(in,numinputs=0) qstrvec_t *out (qstrvec_t temp) + $1 = &temp; } %typemap(argout) qstrvec_t *out { + // %typemap(argout) qstrvec_t *out Py_XDECREF(resultobj); resultobj = qstrvec2pylist(*($1)); } %typemap(freearg) qstrvec_t* out { + // %typemap(freearg) qstrvec_t* out // Nothing. We certainly don't want 'temp' to be deleted. } @@ -816,6 +820,13 @@ SWIGINTERN PyObject *_maybe_byte_array_as_hex_or_none_result( %typemap(in) qtime64_t "$1 = PyLong_AsUnsignedLongLong($input);" %typemap(out) qtime64_t "$result = PyLong_FromUnsignedLongLong($1);" +%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) ea_t +{ + // %typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) ea_t + uint64 $1_temp; + $1 = PyW_GetNumber($input, &$1_temp); +} + //--------------------------------------------------------------------- // IN/OUT qstring/bytevec_t //--------------------------------------------------------------------- @@ -1479,17 +1490,17 @@ SWIGINTERN PyObject *qstrvec2pylist(const qstrvec_t &vec) } //------------------------------------------------------------------------- -%define %uint_result_as_output(TYPE, CONVFUNC) -%typemap(in,numinputs=0) TYPE *result (TYPE temp) +%define %_uint_result_as_output(TYPE, CONVFUNC, CHECK_EXPR) +%typemap(in,numinputs=0) TYPE *result (TYPE temp = 0) { - // %uint_result_as_output(TYPE, CONVFUNC) %typemap(in,numinputs=0) TYPE *result + // %_uint_result_as_output(TYPE, CONVFUNC, CHECK_EXPR) %typemap(in,numinputs=0) TYPE *result $1 = &temp; } %typemap(argout) TYPE *result { - // %uint_result_as_output(TYPE, CONVFUNC) %typemap(argout) TYPE *result + // %_uint_result_as_output(TYPE, CONVFUNC) %typemap(argout) TYPE *result Py_XDECREF(resultobj); - if ( int(result) > 0 ) + if ( CHECK_EXPR ) { resultobj = CONVFUNC(*(TYPE *) $1); } @@ -1500,10 +1511,18 @@ SWIGINTERN PyObject *qstrvec2pylist(const qstrvec_t &vec) } } %enddef + +//------------------------------------------------------------------------- +%define %uint_result_as_output(TYPE, CONVFUNC) +%_uint_result_as_output(TYPE, CONVFUNC, int(result) > 0); +%enddef + %uint_result_as_output(uint32, PyLong_FromUnsignedLong); %uint_result_as_output(uint64, PyLong_FromUnsignedLongLong); +%uint_result_as_output(int64, PyLong_FromLongLong); %apply uint32 *result { uint32 *out }; %apply uint64 *result { uint64 *out }; +%apply int64 *result { int64 *out }; #ifdef __EA64__ %apply uint64 *result { ea_t *result }; #else @@ -1788,5 +1807,27 @@ ${ALL_IMPORTS} // typemaps. ${NONNULL_TYPEMAPS} +// gdl_graph_t & subclasses +%cstring_output_maxstr_none(char *iobuf, int iobufsize); + +%typemap(argout) (char *iobuf, int iobufsize) +{ + // %typemap(argout) (char *iobuf, int iobufsize) + qfree($1); +} + +%typemap(directorout) char *get_node_label (qstring tmp) +{ + // %typemap(directorout) char *get_node_label (qstring tmp) + if ( IDAPyStr_AsUTF8(&tmp, result) ) + ::qstrncpy(iobuf, tmp.c_str(), iobufsize); + else + Swig::DirectorTypeMismatchException::raise( + SWIG_ErrorType(SWIG_TypeError), + "in output value of type 'char *' in method '$symname'"); + $result = iobuf; +} + + #endif // __HEADER_I__ // END: auto-inserted header diff --git a/tools/docs/hrdoc.cfg b/tools/docs/hrdoc.cfg new file mode 100644 index 0000000..7502d7f --- /dev/null +++ b/tools/docs/hrdoc.cfg @@ -0,0 +1,147 @@ +[epydoc] +# The list of objects to document. Objects can be named using +# dotted names, module filenames, or package directory names. +# Aliases for this option include "objects" and "values". +modules: idc, idautils, idaapi, ida_hexrays ida_allins ida_auto ida_bitrange ida_bytes ida_dbg ida_diskio ida_dirtree ida_entry ida_enum ida_expr ida_fixup ida_fpro ida_frame ida_funcs ida_gdl ida_graph ida_ida ida_idaapi ida_idc ida_idd ida_idp ida_ieee ida_kernwin ida_lines ida_loader ida_moves ida_nalt ida_name ida_netnode ida_offset ida_pro ida_problems ida_range ida_registry ida_search ida_segment ida_segregs ida_strlist ida_struct ida_tryblks ida_typeinf ida_ua ida_xref + +# The type of output that should be generated. Should be one +# of: html, text, latex, dvi, ps, pdf. +output: html + +# The path to the output directory. May be relative or absolute. +target: hr-html/ + +# An integer indicating how verbose epydoc should be. The default +# value is 0; negative values will supress warnings and errors; +# positive values will give more verbose output. +verbosity: 0 + +# A boolean value indicating that Epydoc should show a tracaback +# in case of unexpected error. By default don't show tracebacks +debug: 0 + +# If True, don't try to use colors or cursor control when doing +# textual output. The default False assumes a rich text prompt +simple-term: 0 + + +### Generation options + +# The default markup language for docstrings, for modules that do +# not define __docformat__. Defaults to epytext. +docformat: epytext + +# Whether or not parsing should be used to examine objects. +parse: yes + +# Whether or not introspection should be used to examine objects. +introspect: yes + +# Don't examine in any way the modules whose dotted name match this +# regular expression pattern. +#exclude + +# Don't perform introspection on the modules whose dotted name match this +# regular expression pattern. +#exclude-introspect + +# Don't perform parsing on the modules whose dotted name match this +# regular expression pattern. +#exclude-parse + +# The format for showing inheritance objects. +# It should be one of: 'grouped', 'listed', 'included'. +inheritance: listed + +# Whether or not to inclue private variables. (Even if included, +# private variables will be hidden by default.) +private: no + +# Whether or not to list each module's imports. +imports: no + +# Whether or not to include syntax highlighted source code in +# the output (HTML only). +sourcecode: no + +# Whether or not to includea a page with Epydoc log, containing +# effective option at the time of generation and the reported logs. +include-log: no + + +### Output options + +# The documented project's name. +name: IDAPython + +# The CSS stylesheet for HTML output. Can be the name of a builtin +# stylesheet, or the name of a file. +css: white + +# The documented project's URL. +url: http://code.google.com/p/idapython/ + +# HTML code for the project link in the navigation bar. If left +# unspecified, the project link will be generated based on the +# project's name and URL. +link: Hex-Rays + +# The "top" page for the documentation. Can be a URL, the name +# of a module or class, or one of the special names "trees.html", +# "indices.html", or "help.html" +#top: os.path + +# An alternative help file. The named file should contain the +# body of an HTML file; navigation bars will be added to it. +#help: my_helpfile.html + +# Whether or not to include a frames-based table of contents. +frames: yes + +# Whether each class should be listed in its own section when +# generating LaTeX or PDF output. +separate-classes: no + + +### API linking options + +# Define a new API document. A new interpreted text role +# will be created +#external-api: epydoc + +# Use the records in this file to resolve objects in the API named NAME. +#external-api-file: epydoc:api-objects.txt + +# Use this URL prefix to configure the string returned for external API. +#external-api-root: epydoc:http://epydoc.sourceforge.net/api + + +### Graph options + +# The list of graph types that should be automatically included +# in the output. Graphs are generated using the Graphviz "dot" +# executable. Graph types include: "classtree", "callgraph", +# "umlclass". Use "all" to include all graph types +#graph: classtree + +# The path to the Graphviz "dot" executable, used to generate +# graphs. +#dotpath: /usr/local/bin/dot + +# The name of one or more pstat files (generated by the profile +# or hotshot module). These are used to generate call graphs. +#pstat: profile.out + +# Specify the font used to generate Graphviz graphs. +# (e.g., helvetica or times). +graph-font: Helvetica + +# Specify the font size used to generate Graphviz graphs. +#graph-font-size: 10 + + +### Return value options + +# The condition upon which Epydoc should exit with a non-zero +# exit status. Possible values are error, warning, docstring_warning +#fail-on: error diff --git a/tools/dumpdoc.py b/tools/dumpdoc.py index 8abe404..e9815d3 100644 --- a/tools/dumpdoc.py +++ b/tools/dumpdoc.py @@ -22,7 +22,7 @@ try: except: from io import StringIO -ignore_types = (int, float, str, bool, dict, list, tuple, types.ModuleType) +ignore_types = (int, float, str, bool, dict, list, tuple, bytes, types.ModuleType) TRANSLATED_MARKER = b"\xE2\x86\x97" if sys.version_info.major < 3: @@ -298,23 +298,6 @@ all_specific_translations = { "Helper for pickle.", ), "helper for pickle", False), ], - - # - # The following is a kludge: IDA 7.5 ships with - # release_pydoc_injections*.txt and ida_nalt.py files that have - # a very slightly different wrapping. We want to prevent this - # from building IDAPython under the SDK. - # - "ida_nalt.set_outfile_encoding_idx" : [ - (( - "the encoding index idx can be 0 to use the IDB's default 1", - "the encoding index idx can be 0 to use the IDB's default", - ), "", False ), - (( - "1-byte-per-unit encoding (C++: int)", - "-byte-per-unit encoding (C++: int)", - ), "", False ), - ], } if is_64: @@ -339,12 +322,6 @@ def dump_namespace(namespace, namespace_name, keys, vec_info=None): if should_ignore_name(thing_name): continue thing = getattr(namespace, thing_name) - # KLUDGE - if thing_name == "IDB_Hooks": - try: - del thing.dirtree_segm_moved - except: - pass if isinstance(thing, ignore_types): continue if thing in spotted_things: diff --git a/tools/examples_index_template.html b/tools/examples_index_template.html new file mode 100644 index 0000000..bf4fe29 --- /dev/null +++ b/tools/examples_index_template.html @@ -0,0 +1,235 @@ + + + + IDAPython examples + + + + +
+ + Switch to MarkDown +
+ +

IDAPython examples:

+ +

Category:

+
+ + +
+ + : +
+
+ + + +
+ + + + diff --git a/tools/examples_index_template.md b/tools/examples_index_template.md new file mode 100644 index 0000000..211c0bd --- /dev/null +++ b/tools/examples_index_template.md @@ -0,0 +1,44 @@ +[Switch to HTML](http://htmlpreview.github.io/?https://github.com/idapython/src/blob/master/examples/index.html) + +# IDAPython examples + + +## Category: + + +#### +
+ + +
+ +#### Source code + + +#### Category + + +#### Description + + +#### Keywords + + + + +#### Uses + +* + + +#### See also + +* [](#) + + +
+ +
+ + + diff --git a/tools/gen_examples_index.py b/tools/gen_examples_index.py new file mode 100755 index 0000000..3d003ed --- /dev/null +++ b/tools/gen_examples_index.py @@ -0,0 +1,560 @@ +""" +Generate the index.html for the examples subdirectory, +based on structured docstrings on each Python example +""" + +from __future__ import print_function +import ast +import re +import os +import sys + +from argparse import ArgumentParser +parser = ArgumentParser() +parser.add_argument("-e", "--examples-dir", required=True) +parser.add_argument("-t", "--template", required=True) +parser.add_argument("-o", "--output", required=True) +parser.add_argument("-v", "--verbose", default=False, action="store_true") +args = parser.parse_args() + +def verb(msg): + if args.verbose: + print(msg) + +class ProcessException(Exception): + pass + +#------------------------------------------------------------------------------- + +class Examples(object): + def __init__(self): + self.re_indent = re.compile(r'^ *') + self.re_tag = re.compile(r'^ *([a-zA-Z_][a-zA-Z_0-9]*):') + + self.tags = Tags() + self.html = None + + def template(self, path): + with open(path, 'r') as f: + self.html = HTML(f.read(), self.tags) + + def process(self): + if not self.html: + raise ProcessException('No template!') + + self.examples = [] + + for relpath, path in self._files_with_extension('.py', args.examples_dir): + verb("Processing \"%s\"" % path) + with open(path, 'r') as f: + self._load_ast(relpath, path, ast.parse(f.read(), path)) + + self.examples = {'sub': sorted(self.examples, \ + key=lambda x: x[self.tags.order()])} + + self.html.produce(self.examples) + + def _load_ast(self, relpath, path, tree): + self.tags.reset() + self.tags.add(Tags.PATH, relpath) + self.tags.add(Tags.NAME, os.path.splitext(os.path.basename(path))[0]) + self.tags.add(Tags.USES, self._uses_names(tree)) + self.tags.add(Tags.CATEGORY, relpath.split(os.sep)[0]) + self._parse_structured_comment(ast.get_docstring(tree, False)) + self.examples.append(self.tags.get()) + + def _parse_structured_comment(self, docstring): + if not docstring: + return + + first_line = True + group_tag = None + group_lines = [] + + def end_group(): + if group_tag: + self._remove_common_indentation(group_lines) + + if group_tag == Tags.DESCRIPTION: + item = '\n'.join(group_lines).lstrip('\n') + elif group_tag in (Tags.KEYWORDS, Tags.SEE_ALSO): + item = [{group_tag: x.strip()} \ + for x in ','.join(group_lines).split(',')] + else: + item = ' '.join(group_lines) + + self.tags.add(group_tag, item) + + # Blocks of lines are separated by an empty line. + # An attempt is made to preserve the original indentation + # of each block of lines. + # + # If a block of lines wishes to contain a blank line, + # it must represent it with a line containing only a dot ('.') + # (indentation is irrelevant for these 'dot' lines). + # Example: + # description: + # This is one + # big paragraph + # . + # This is another + # big paragraph + # . + # This is the final + # big paragraph + + warned = False + + for line in docstring.split('\n'): + indent, line = self._indented_line(line.rstrip(), 0) + + if line == '': + end_group() + first_line = True + group_tag = None + group_lines = [] + continue + + if first_line: + first_line = False + + m = self.re_tag.match(line) + if not m: + if not warned: + warned = True + path = self.tags.get()[Tags.PATH] + verb('{}:\n No tag in docstring'.format(path)) + continue + + group_tag = m.group(1) + if not self.tags.is_valid(group_tag) or \ + not self.tags.can_occur_in_docstring(group_tag): + path = self.tags.get()[Tags.PATH] + msg = self.tags.error_message(group_tag) + verb('{}:\n {}'.format(path, msg)) + group_tag = None + + indent, line = self._indented_line(line, m.end()) + + if group_tag: + group_lines.append( (indent, line) ) + + end_group() + + def _indented_line(self, line, fromPos): + line = line[fromPos:] + + m = self.re_indent.match(line) + + indent = fromPos + len(m.group()) + line = line[m.end():] + + if line == '.': + return None, None + + return indent, line + + def _remove_common_indentation(self, lines): + if not lines: + return + + min_indent = min(t[0] for t in lines if t[1]) + + for i in range(len(lines)): + if lines[i][1]: + lines[i] = ((lines[i][0] - min_indent) * ' ') + lines[i][1] + else: + lines[i] = '' + + def _uses_names(self, tree): + names = set() + def callback(name): + names.add(name) + + visitor = TreeVisitor(callback, ['idc', 'idautils']) + visitor.generic_visit(tree) + return [{Tags.USES: name} for name in sorted(names)] + + def _files_with_extension(self, ext, rootdir): + for path, _, files in os.walk(rootdir): + for filename in files: + if os.path.splitext(filename)[1] == ext: + relpath = os.path.relpath(path, rootdir) + yield os.path.join(relpath, filename), \ + os.path.join(path, filename) + +#------------------------------------------------------------------------------- + +class Tags(object): + NAME = "name" + PATH = "path" + SUMMARY = "summary" + DESCRIPTION = "description" + CATEGORY = "category" + KEYWORDS = "keywords" + USES = "uses" + SEE_ALSO = "see_also" + JSDATA = "jsdata" + + # tags that can be used in the template (as a comment) + ALL_TAGS = set([NAME, PATH, SUMMARY, DESCRIPTION, CATEGORY, \ + KEYWORDS, USES, SEE_ALSO, JSDATA]) + + # tags that can be used in the examples' docstrings + IN_DOCSTRING = set([SUMMARY, DESCRIPTION, CATEGORY, \ + KEYWORDS, USES, SEE_ALSO]) + + def __init__(self): + self.tags = {} + self.reset() + + def order(self): + return self.NAME + + def error_message(self, name): + return 'Unrecognized tag: "{}"'.format(name) + + def check(self, name): + if name not in self.ALL_TAGS: + raise ProcessException(self.error_message(name)) + + def is_valid(self, name): + return name in self.ALL_TAGS + + def can_occur_in_docstring(self, tag): + return tag in self.IN_DOCSTRING + + def reset(self): + self.items = {} + for tag in self.ALL_TAGS: + if tag in (self.KEYWORDS, self.USES, self.SEE_ALSO): + self.items[tag] = [] + elif tag != self.JSDATA: + self.items[tag] = '' + + def add(self, tag, item): + self.items[tag] = item + + def get(self): + return self.items + +#------------------------------------------------------------------------------- + +class TreeVisitor(ast.NodeVisitor): + def __init__(self, callback, interesting_names, *args): + super(TreeVisitor, self).__init__(*args) + self.my_callback = callback + self.interesting_names = set(interesting_names) + + def visit_ImportFrom(self, node): + if self._is_interesting(node.module): + self._add_interesting_names(node.names) + + def _add_interesting_names(self, aliases): + for alias in aliases: + if isinstance(alias, ast.alias): + name = alias.asname if alias.asname else alias.name + self.interesting_names.add(name) + + def _is_interesting(self, name): + return name.startswith('ida_') or name in self.interesting_names + + def visit_Name(self, node): + self._callback_if_interesting(node) + + def visit_Attribute(self, node): + self._callback_if_interesting(node) + + def _callback_if_interesting(self, node): + names = self._dotted_name(node) + if not names: + return + if self._is_interesting(names[0]) \ + and names[-1] != '__init__': # removed calls to base constructors + self.my_callback('.'.join(names)) + + def _dotted_name(self, node): + if isinstance(node, ast.Name): + return [node.id] + if isinstance(node, ast.Attribute): + names = self._dotted_name(node.value) + if names: + return names + [node.attr] + return None + +#------------------------------------------------------------------------------- + +class HTML(object): + def __init__(self, template, tags): + self.replacer = TemplateReplacer(tags) + + self.replacer.template(template) + + def produce(self, examples): + with open(args.output, 'w') as f: + self.replacer.expand(examples, f) + +#------------------------------------------------------------------------------- + +class SpecialBlock(object): + GROUP = 0 + FIRST = 1 + LAST = 2 + + def __init__(self, kind, payload=None): + self.kind = kind + self.payload = payload + +#------------------------------------------------------------------------------- + +class TemplateReplacer(object): + def __init__(self, tags): + self.tags = tags + + self.re_variable = re.compile(r'(?i)') + + self.comment_block = '' + self.comment_end = '' + + self.comment_group = re.compile(r'$') + + self.comment_first = '' + self.comment_last = '' + + def template(self, content): + lines = content.strip().split('\n') + + # convert the file content, with block-end repetition blocks, + # into a list of (1) strings and (2) nested lists for blocks + + stack = [[]] + + for line in lines: + clean = line.strip().lower() + if clean == self.comment_block: + stack.append([]) + elif clean == self.comment_end: + if len(stack) == 0: + raise ProcessException('mismatched gen:end') + d = stack.pop() + stack[-1].append(d) + elif clean == self.comment_first: + # open block + stack.append([SpecialBlock(SpecialBlock.FIRST)]) + elif clean == self.comment_last: + # open block + stack.append([SpecialBlock(SpecialBlock.LAST)]) + else: + m = self.comment_group.match(clean) + if m: + v = m.group(1) + self.tags.check(v) + # open block + stack.append([SpecialBlock(SpecialBlock.GROUP, v)]) + else: + stack[-1].append(line) + + self.template = stack.pop() + + if len(stack) != 0: + raise ProcessException('gen:block/group without gen:end') + + def expand(self, data, f): + self._expand(self.template, data, None, f) + + def _expand(self, block, data, conditions, f): + self._verify_block(block, data) + + if not isinstance(block, list): + raise ProcessException('Expected block') + + for line in block: + if isinstance(line, list): + first = False # meaning, restrict/show only the first + last = False + if line and isinstance(line[0], SpecialBlock): + special = line[0] + line = line[1:] + if special.kind == SpecialBlock.GROUP: + gvar = special.payload + subkey = 'sub' + elif special.kind == SpecialBlock.FIRST: + first = True + subkey = None + elif special.kind == SpecialBlock.LAST: + last = True + subkey = None + else: + raise ProcessException('Unknown SpecialBlock: {} {}' \ + .format(special.kind, + repr(special.payload))) + else: + # regular block + gvar = None + subkey = self._obtain_subkey(line) + + if subkey is None: + # (i.e. first,last): multiple lines but no data repetition + if conditions: + if first and not conditions[0]: + continue + if last and not conditions[1]: + continue + self._expand(line, data, None, f) + continue + + subdata = data[subkey] + + if not isinstance(subdata, list): + raise ProcessException('Expected multiple data for {}' \ + .format('group' if gvar else 'block')) + + # repeat for each item + + if gvar: + subdata = self._group_by(subdata, gvar) + + n_items = len(subdata) + for i in range(n_items): + conditions = i == 0, i == n_items - 1 + self._expand(line, subdata[i], conditions, f) + continue + + f.write(self._substitute_variables(line, data)) + f.write('\n') + + def _obtain_subkey(self, block): + # presently (we don't need more at the moment) + # a block contains either: + # - a single variable inside, under the key = variable + # - multiple variables, under a constant key = 'sub' + # (so just one per block) + + variables = set() + + for line in block: + if isinstance(line, list): + continue # only this level + + for key, _, _ in self._variables_in_line(line): + variables.add(key) + + for key in variables: + break # get first + + return key if len(variables) == 1 else 'sub' + + def _group_by(self, data, gvar): + # data assumed already sorted + grouped = {} + for item in data: + value = item[gvar] + if isinstance(value, list): + for obj in value: + subvalue = obj[gvar] + if subvalue not in grouped: + grouped[subvalue] = [] + grouped[subvalue].append(item) + else: + if value not in grouped: + grouped[value] = [] + grouped[value].append(item) + + return [{gvar: key, 'sub': grouped[key]} for key in sorted(grouped)] + + def _substitute_variables(self, line, data): + out = '' + last = 0 + for key, start, end in self._variables_in_line(line): + sub = self._substitution_string(key, data) + out += line[last:start] + sub + last = end + out += line[last:] + + return out + + def _substitution_string(self, key, data): + if key != Tags.JSDATA: + value = data[key] + if key == Tags.PATH: + value = "/".join(value.split(os.sep)) + return str(value) + + if 'sub' not in data: + ProcessException('Please use at the top level only' \ + .format(Tags.JSDATA)) + data = data['sub'] + + # JavaScript representation of the data + js = '// collected data\nexamples = [' + first = True + for item in data: + if first: + first = False + else: + js += ',' + js += '\n' + self._js_example(item) + js += '\n];' + + return js + + def _js_example(self, data): + first = True + js = '{' + for tag in Tags.ALL_TAGS: + if tag in data and data[tag]: + if first: + first = False + else: + js += ',' + js += "'" + tag + "': " + self._js_subdata(tag, data[tag]) + js += '}' + return js + + def _js_subdata(self, tag, subdata): + if isinstance(subdata, list): + # no need to recurse, these are object enclosing a single item + subdata = [x[tag] for x in subdata] + + return repr(subdata) + + def _verify_block(self, block, data): + # check that all variables at the first 'flat' level of this block + # are present in the data and are not sublists + # (which would require an inner block) + + for line in block: + if isinstance(line, list): + continue # check only the flat level + + for key, _, _ in self._variables_in_line(line): + if key == Tags.JSDATA: + continue + if key not in data: + raise ProcessException('No keyword "{}" in data' \ + .format(key)) + if isinstance(data[key], list): + raise ProcessException('Missing block for multiple "{}" data' \ + .format(key)) + + def _variables_in_line(self, line): + pos = 0 + while True: + m = self.re_variable.search(line, pos) + if m is None: + break + + tag = m.group(1).lower() + self.tags.check(tag) + + yield tag, m.start(), m.end() + pos = m.end() + +try: + e = Examples() + e.template(args.template) + e.process() +except ProcessException as ex: + print('? {}\n {}'.format(sys.argv[0], ex)) + sys.exit(1) +# other exceptions - let them fail diff --git a/tools/genhooks/recipe_hexrays.py b/tools/genhooks/recipe_hexrays.py index 836cf29..23a8c29 100644 --- a/tools/genhooks/recipe_hexrays.py +++ b/tools/genhooks/recipe_hexrays.py @@ -7,8 +7,8 @@ recipe = { }, "create_hint" : { "params" : { - "result_hint" : { "suppress_for_call" : True, }, - "implines" : { "suppress_for_call" : True, }, + "hint" : { "suppress_for_call" : True, }, + "important_lines" : { "suppress_for_call" : True, }, }, "return" : { "type" : "PyObject *", diff --git a/tools/genhooks/recipe_idbhooks.py b/tools/genhooks/recipe_idbhooks.py index 69466ab..7fc8291 100644 --- a/tools/genhooks/recipe_idbhooks.py +++ b/tools/genhooks/recipe_idbhooks.py @@ -14,7 +14,6 @@ recipe = { { "name" : "cid", "type" : "const_t" }, ], }, - "dirtree_segm_moved" : {"ignore" : True}, } default_rtype = "void" diff --git a/tools/genhooks/recipe_idphooks.py b/tools/genhooks/recipe_idphooks.py index a70f660..0003a94 100644 --- a/tools/genhooks/recipe_idphooks.py +++ b/tools/genhooks/recipe_idphooks.py @@ -5,6 +5,7 @@ recipe = { "ev_last_cb_before_type_callbacks" : {"ignore" : True}, "ev_get_idd_opinfo" : {"ignore" : True}, "ev_loader_elf_machine" : {"ignore" : True}, + "ev_broadcast" : {"ignore" : True}, "ev_ana_insn" : { "return" : { "type" : "bool", diff --git a/tools/genswigheader.py b/tools/genswigheader.py index e35ef89..354af30 100644 --- a/tools/genswigheader.py +++ b/tools/genswigheader.py @@ -34,7 +34,7 @@ with open(args.input) as fin: parts.append("#if defined(IDA_MODULE_PRO)") parts.append("// nothing; has to be handled in pro.i") parts.append("#else") - required_headers = ["pro", "ida", "xref", "typeinf", "enum", "netnode", "range", "lines", "kernwin", "bytes", "auto", "nalt", "idd", "idp"] + required_headers = ["pro", "ida", "xref", "typeinf", "enum", "netnode", "range", "lines", "kernwin", "bytes", "auto", "nalt", "idd", "idp", "gdl"] # required_headers = ["pro", "ida", "xref", "typeinf", "enum", "netnode", "range", "lines", "kernwin", "bytes", "auto", "nalt", "idd", "idp", "dirtree"] for rh in required_headers: add_imports_from_dep(rh) diff --git a/tools/inject_pydoc.py b/tools/inject_pydoc.py index 0ac5505..750c812 100644 --- a/tools/inject_pydoc.py +++ b/tools/inject_pydoc.py @@ -327,7 +327,7 @@ class generated_func_info_t: m = self.PARAM_WITH_CPP_TYPE_INFO_RE.match(self.params[found_idx]) if m: text = re.sub(r"(.*)\(C\+\+:.*\)(.*)", r"\1 - %s\2" % m.group(1), text) - lines = textwrap.wrap(text, 70, subsequent_indent=" " * indent) + lines = textwrap.wrap(text, 70, subsequent_indent=" " * indent, break_on_hyphens=False) self.params = self.params[0:found_idx] + lines + self.params[found_idx+1:] else: verb("No param named '%s' for function with prototype '%s'" % (name, self.prototype)) @@ -335,10 +335,10 @@ class generated_func_info_t: def append_return(self, text, indent): if self.returns is not None: verb("Overriding return information") - self.returns = textwrap.wrap(text, 70, subsequent_indent=" " * indent) + self.returns = textwrap.wrap(text, 70, subsequent_indent=" " * indent, break_on_hyphens=False) def append_retval(self, text, indent): - self.retvals.extend(textwrap.wrap(text, 70, subsequent_indent=" " * indent)) + self.retvals.extend(textwrap.wrap(text, 70, subsequent_indent=" " * indent, break_on_hyphens=False)) def get_lines(self): return [self.prototype] \ diff --git a/tools/patch_codegen/dirtree.py b/tools/patch_codegen/dirtree.py index 9037217..b6dcdf4 100644 --- a/tools/patch_codegen/dirtree.py +++ b/tools/patch_codegen/dirtree.py @@ -9,9 +9,6 @@ "SwigDirector_dirspec_t::get_inode" : [ ("spontaneous_callback_call", None) ], - "SwigDirector_dirspec_t::get_size" : [ - ("spontaneous_callback_call", None) - ], "SwigDirector_dirspec_t::get_attrs" : [ ("spontaneous_callback_call", None) ], diff --git a/tools/patch_codegen/graph.py b/tools/patch_codegen/graph.py index 1655693..48396c3 100644 --- a/tools/patch_codegen/graph.py +++ b/tools/patch_codegen/graph.py @@ -1,36 +1,18 @@ { + "SwigDirector_abstract_graph_t::nrect" : [ + ("repl_text", ("return", "qnotused(c_result); qnotused(n); // return")), + ], + "SwigDirector_abstract_graph_t::get_edge" : [ + ("repl_text", ("return", "qnotused(c_result); qnotused(e); // return")), + ], + "SwigDirector_abstract_graph_t::clone" : [ + ("repl_text", ("return", "qnotused(c_result); // return")), + ], "SwigDirector_mutable_graph_t::get_edge" : [ ("repl_text", ("return", "qnotused(c_result); qnotused(e); // return")), ], "SwigDirector_mutable_graph_t::clone" : [ ("repl_text", ("return", "qnotused(c_result); // return")), ], - "SwigDirector_mutable_graph_t::redo_layout" : [ - ("repl_text", ("return", "qnotused(c_result); // return")), - ], - "SwigDirector_mutable_graph_t::resize" : [ - ("repl_text", ("Swig::Director", "qnotused(n); Swig::Director")), - ], - "SwigDirector_mutable_graph_t::add_node" : [ - ("repl_text", ("return", "qnotused(c_result); qnotused(r); // return")), - ], - "SwigDirector_mutable_graph_t::del_node" : [ - ("repl_text", ("return", "qnotused(c_result); qnotused(n); // return")), - ], - "SwigDirector_mutable_graph_t::add_edge" : [ - ("repl_text", ("return", "qnotused(c_result); qnotused(i); qnotused(j); qnotused(ei); // return")), - ], - "SwigDirector_mutable_graph_t::del_edge" : [ - ("repl_text", ("return", "qnotused(c_result); qnotused(i); qnotused(j); // return")), - ], - "SwigDirector_mutable_graph_t::replace_edge" : [ - ("repl_text", ("return", "qnotused(c_result); qnotused(i); qnotused(j); qnotused(x); qnotused(y); // return")), - ], - "SwigDirector_mutable_graph_t::refresh" : [ - ("repl_text", ("return", "qnotused(c_result); // return")), - ], - "SwigDirector_mutable_graph_t::set_nrect" : [ - ("repl_text", ("return", "qnotused(c_result); qnotused(n); qnotused(r); // return")), - ], } diff --git a/tools/patch_codegen/idp.py b/tools/patch_codegen/idp.py index 9b64e4f..90a0a26 100644 --- a/tools/patch_codegen/idp.py +++ b/tools/patch_codegen/idp.py @@ -47,4 +47,31 @@ if ( __argcnt == 2 ) ), ), ], + + "SwigDirector_IDB_Hooks::renamed" : [ + ("director_method_call_arity_cap", ( + False, # add GIL lock + "renamed", + "(method ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2,(__argcnt < 5 ? NULL : (PyObject *)obj3), NULL)", + "(swig_get_self(), (PyObject *) swig_method_name ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2,(__argcnt < 5 ? NULL : (PyObject *)obj3), NULL)") + ), + ], + + "SwigDirector_IDB_Hooks::compiler_changed" : [ + ("director_method_call_arity_cap", ( + False, # add GIL lock + "compiler_changed", + "(method ,(__argcnt == 1 ? NULL : (PyObject *)obj0), NULL)", + "(swig_get_self(), (PyObject *) swig_method_name ,(__argcnt == 1 ? NULL : (PyObject *)obj0), NULL)") + ), + ], + + "SwigDirector_IDB_Hooks::bookmark_changed" : [ + ("director_method_call_arity_cap", ( + False, # add GIL lock + "bookmark_changed", + "(method ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2,(__argcnt < 5 ? NULL : (PyObject *)obj3), NULL)", + "(swig_get_self(), (PyObject *) swig_method_name ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2,(__argcnt < 5 ? NULL : (PyObject *)obj3), NULL)") + ), + ], } diff --git a/tools/patch_codegen/kernwin.py b/tools/patch_codegen/kernwin.py index 4ebe0c1..54657c5 100644 --- a/tools/patch_codegen/kernwin.py +++ b/tools/patch_codegen/kernwin.py @@ -29,6 +29,19 @@ "(swig_get_self(), (PyObject *) swig_method_name ,(PyObject *)obj0,(PyObject *)obj1,(__argcnt < 4 ? NULL : (PyObject *)obj2), NULL)", )), ], + "SwigDirector_UI_Hooks::saved" : [ + ("director_method_call_arity_cap", ( + True, # add GIL lock + "saved", + "(method ,(__argcnt < 2 ? NULL : (PyObject *)obj0), NULL)", + "(swig_get_self(), (PyObject *) swig_method_name ,(__argcnt < 2 ? NULL : (PyObject *)obj0), NULL)", + )), + ("spontaneous_callback_call", ( + False, # add GIL lock + None, # try anchor + None # catch anchor + )), + ], "__additional_thread_unsafe__" : [ "py_get_ask_form",