IDAPython allows you to use the Python code in IDA to write scripts and customize basic IDA functionality. It offers more advanced and powerful automation than the IDC language and gives you access to Python modules and native Python abilities to interact with our API.
When you are asking yourself how to automate work in IDA, like renaming variables or performing custom analyses, the IDAPython API comes in handy. You can use simple code snippets directly inside the IDA output window to perform specific tasks or more advanced scripts for complex usage. Moreover, with IDAPython, you can write plugins to expand basic IDA capabilities even further.
Check out our Porting Guide, which is prepared to help you migrate and adapt your existing scripts and plugins from IDA 8.x to IDA 9.0.
The IDAPython API provides you a range of functions to interact with the disassembler, navigate through the output, and manipulate various elements such as functions, instructions, data, and comments.
This guide is is designed to speed up the learning curve in IDAPython API and kickstart your journey with scripting in IDA, assuming that you are already found your way around IDA and got familiar with .
First, check for the core concepts like common variables, then dive into our simple, reusable showing examples of commonly used functions. When you feel comfortable with some of the most popular IDAPython API usage, you can delve into our set of more complex .
IDAPython API is organized in modules, however their number may be a bit overwhelming for the first sigh. Here's the list of modules that should catch your attention first:
idautils
: This module extracts the most useful and handy functions allowing you to jump right away and interact with the disassembly without the need to scrutinize the whole IDAPython API from the start. You can find here functions to iterate through whole segments, functions (founded by IDA and also user-defined), named locations, etc.
ida_idaapi
: The ida_idaapi
module comes handy when you want to create custom plugins or handle events, as it gives you access to more advanced functions and allows interaction with overall system
idc
: This module provides functions that were originally part of native IDA IDC scripting language, wrapped for use in IDAPython API. This is a great starting point if you're already familiar with IDC scripting.
ida_funcs
: This module gives you tools to create and manipulate functions within IDA.
ida_kernwin
: This module provides functionality to interact with IDA UI, so you can create custom dialogs and more.
When you start working with IDAPython, you'll realize that one of the most commonly passed variables is ea
, which refers to the valid memory address (effective address). On the other hand, the BADADDR
is a constant that indicates an invalid address. It is used to indicate that an operation (such as querying a function) has failed or returned an invalid result, or signify that a specific memory location is unusable. Whenever you're working with functions that return memory addresses, it's a best practice to check whether the result equals BADADDR to ensure the operation was successful.
Here you can check the most common functions grouped by topics and short code samples that can serve as building blocks for longer scripts. They are usually focused on performing one specific action and can be easily reusable in more complex scripts, which you can find later under examples.
get_first_seg()
If you feel more comfortable with IDAPython now, you can delve into more complex and advanced examples shipped with your IDA instance. You can find them in the python/examples
folder where your IDA is installed or check them from our These collection gathered more advanced code samples, which usually make use of more modules and APIs.
Delve into our tutorial on .
IDAPython Reference
Explore the technical details of all functions, classes, and more.
IDAPython Getting Started
Check this guide to kickstart learning IDAPython with simple snippets.
IDAPython Examples
Dig into complex examples that showcase the full potential and versatility of our PythonAPI.
Writing Plugins in IDAPython
Learn the best practices for creating plugins with IDAPython.
IDAPython API gives you a way to enhance basic IDA capabilities and write your own plugins. These plugins can run directly in IDA as single scripts in the output window or even use complex UI.
IDAPython plugins are faster and easier to develop than C++ SDK plugins (thanks to excluding the build and compilation process) and offer almost the same powerful capabilities as native C++ plugins.
This tutorial will share best practices on how to start writing plugin in IDAPython, acccording to our new plugin framwork and best practises, that will streamline your plugin development.
Check our IDAPython reference docs for an up-to-date list of all modules, classes, functions, and so on.
Familiarize yourself with the ida_idaapi.plugin_t
class, a basic and required class that provides the necessary structure for your plugin. It mirrors the C++ SDK plugin_t
class.
Make sure your plugin will be compatible with the newest version of IDA—check our IDAPython Porting Guide for recent changes.
For this tutorial, we'll use the simple, exemplary plugin which adapted the new plugin framework that simplifies plugin development. It performs one specific task when called by the user after a database is loaded: it lists all functions and their addresses for the current IDA database and then terminates.
You can download "My First Plugin" from here:
.py
file to startThe minimum that your plugin should contain is a single Python file that will serve as an entry point. This file should define the main logic and include necessary imports and primary functions that will be executed when the plugin runs.
When creating a plugin, it's recommended to create a class inheriting from plugin_t
with specific flags and a class inheriting from plugmod_t
that performs the core functionality.
ida_idaapi.plugin_t
While creating a plugin, you should include a class that inherits from plugin_t
. This base class will outline the core functionality and lifecycle of your plugin.
Example of plugin_t
class implementation:
ida_idaapi.plugmod_t
When creating a plugin in the new framework, it's recommended to subclass plugmod_t
, that performs the main task of the plugin.
Example of plugmod_t
class implementation:
MyPlugin
class attributesflags
attribute
The flags
attribute defines the behavior and plugin properties, and what is crucial, describe its lifecycle: how and when it is loaded into IDA.
Your plugin may have no flags (flags = 0
). It is usually a good strategy for basic plugins that perform a specific task once and then are no longer needed. Assigning 0
to flags apply a default behavior to your plugin:
it can be loaded and reloaded at any time;
it is triggered by the user and does not run constantly in the background;
it does not modify the database.
Common flags
for plugins:
PLUGIN_MULTI
: Recommended for all plugins; this flag enables the plugin to run simultaneously across multiple opened IDBs within the same IDA instance.
PLUGIN_FIX
: The plugin loads when IDA launches and stays loaded until IDA exits.
PLUGIN_DRAW
: The plugin needs to be invoked for every screen refresh.
PLUGIN_MOD
: The plugin modifies the IDA database.
PLUGIN_PROC
: The plugin is a processor module extension.
PLUGIN_DBG
: The plugin will be loaded only when a debugger is active (for debugger-related plugins)
PLUGIN_UNL
: The plugin will be unloaded immediately after calling the run
method.
In our example, we used PLUGIN_UNL
flag, as after performing a specific task—listing functions in the current database—is no longer needed.
For a full list of available flags, refer to the ida_idaapi module.
comment
attribute The comment
attribute allows you to provide a brief description of your plugin.
wanted_name
attribute The wanted_name
attribute specifies the preferred short name of the plugin, as it apperas under Edit -> Plugins submenu.
wanted_hotkey
attribute The wanted_hotkey
attribute specifies a preferred shortcut to run the plugin.
The preferred name and hotkey may be overridden by changing the settings in the plugins.cfg
file.
Below we scrutinize the key components for defining your plugin lifecycle.
Define a PLUGIN_ENTRY function Declare a function called PLUGIN_ENTRY that returns a plugin_t
instance (or an object containing all attributes of a plugin_t object).
Initialization
The init()
method is called when the plugin is loaded into IDA and is responsible for initializing your plugin.
The init()
method returns an pointer to a plugmod_t
object and indicate that this object run method is going to be used.
In the new plugin framework, run/term functions of plugin_t
are not used. Virtual functions of plugmod_t
are used instead.
In our example, when MyPlugin.init()
is called it initalizes the plugin and returns a new instance of MyPlugmod
.
Activation
The run
method is executed when the user triggers your plugin activation, whether via hotkey or Edit -> Plugins submenu.
An alternative way of activation your plugin is via IDA events and registering a callback functions.
In our example, when the run()
method of MyPlugmod is called, it prints function names and addresses in Output window.
Unloading
The __del__()
is called automatically when the plugin is going to be unloaded (destroyed). The conditions that define the circumstances under which the plugin should be unloaded depend on the flags
setting.
Example of plugin lifecycle implementation:
In our example:
PLUGIN_ENTRY()
returns an instance of the MyPlugin
class.
MyPlugin.init()
is called to initialize the plugin and returns an instance of MyPlugmod
. MyPlugmod.run() is called when the plugin is activated by the user via the hotkey or the Plugins menu. Then, the run()
method of MyPlugmod
is called, which prints function names and addresses in the current IDA database.
MyPlugmod.__del__()
is called automatically when the plugin is destroyed (unloaded), and it prints a termination message. As we defined in flags
, our exemplary plugin unloads directly after performing its task.
ida-plugin.json
fileIt's recommended to add an ida-plugin.json
file to your plugin directory with essential metadata to ensure consistency, ease the organization of your plugin files (allows the plugin to be self-contained in its own sub-directory), and smooth the process for accepting your plugin into our official plugin repository, if you decide to share it with Hex-Rays community.
To work properly, the ida-plugin.json
file must contain at the very least the IDAMetadataDescriptorVersion
field as well as a plugin
object containing the name
and entryPoint
fields.
The name
will be used to identify the plugin and also generate a namespace name for it if necessary (e.g. an IDAPython plugin). The namespace name is generated by converting all non alphanumeric characters of the plugin name to underscores (_
) and prepending __plugins__
to it. For example "my plugin" would become __plugins__my_plugin
.
The entryPoint
must be the filename of the "main" file for the plugin. It should be stored in the same directory as its ida-plugin.json
file.
If the entryPoint
has no file extension, IDA will assume it is a native plugin and append the appropriate file extension for dynamic shared objects for the host platform (.dll
, .so
, .dylib
).
Example of the ida-plugin.json
file:
Copy the plugin directory (in our exemplary case, the folder containing my-first-plugin.py
and ida.plugin.json
files) or single script to plugins directory in your IDA installation folder. Once it's done, you may need to restart your IDA to see your plugin name under Edit -> Plugins submenu.
Run the plugin by pressing the specified hotkey or execute it from Edit -> Plugins -> <your_plugin>.
The following examples demonstrate the usage of the IDAPython API in more complex scripts.
IDA is shipped with examples of IDAPython scripts that perform specific tasks, useful for common situations.
The full library of our examples is shipped with your IDA instance in the python/examples folder. You can find them also in the GitHub repository.
Navigate to File -> Script file....
In the new dialog, select the .py
script you want to run and click Open.
Navigate to File -> Script command....
Paste the code into Please enter script body field and click Run.
In the output window/IDAPython console, type the following command: exec(open("path/to/your_script.py").read())
to execute the script.
dump_func_info
actions
add_hotkey
add_idc_hotkey
auto_instantiate_widget_plugin
colorize_disassembly_on_the_fly
create_structure_programmatically
custom_cli
custom_data_types_and_formats
dump_extra_comments
dump_flowchart
dump_selection
extend_idc
find_string
idapythonrc
install_user_defined_prefix
list_bookmarks
list_function_items
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
py_cvt64_sample
automatic_steps
dbg_trace
print_call_stack
print_registers
registers_context_menu
show_debug_names
simple_appcall_linux
simple_appcall_win
colorize_disassembly
colorize_pseudocode_lines
curpos_details
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
log_idb_events
operand_changed
replay_prototypes_changes
ana_emu_out
assemble
py_mex1
py_mex3
inject_command
paint_over_graph
paint_over_navbar
populate_pluginform_with_pyqt_widgets
func_chooser_coloring
lines_rendering
log_misc_events
prevent_jump
add_menus
askusingform
choose
choose_multi
chooser_with_folders
custom_graph_with_actions
custom_viewer
func_chooser
jump_next_comment
lazy_loaded_chooser
save_and_restore_listing_pos
show_and_hide_waitbox
show_selected_strings
sync_two_graphs
wrap_idaview
IDA 9.0 IDAPython Changes and porting guide
This guide provides information about what has been changed in the IDAPython API between IDA 8.4 and 9.0.
The largest change is due to the removal of two modules:
ida_struct
ida_enum
The functions below 8.4 are removed those under 9.0 are alternatives.
The idc alternatives and the examples are based on:
ida_typeinf
module
ida_typeinf.tinfo_t
, the type info class
ida_typeinf.udt_type_data_t
, the user defined type class
ida_typeinf.udm_t
, the user data type member class
NOTE: It is recommended to take a look at the implementation of the idc.* functions mentioned below.
add_struc
idc.add_struc
add_struc_member
idc.add_struc_member
del_struc
idc.del_struc
del_struc_member
idc.del_struc_member
del_struc_members
expand_struc
idc.expand_struc
get_best_fit_member
get_first_struc_idx
get_innermost_member
get_last_struc_idx
get_max_offset
get_member
get_member_by_fullname
get_member_by_id
see tinfo_t.get_udm_by_tid
get_member_by_name
get_member_cmt
idc.get_member_cmt
get_member_fullname
get_member_id
idc.get_member_id
get_member_name
idc.get_member_name
get_member_size
idc.get_member_size
get_member_struc
get_member_tinfo
get_next_member_idx
get_next_struc_idx
get_or_guess_member_tinfo
get_prev_member_idx
get_prev_struc_idx
get_sptr
get_struc
get_struc_by_idx
get_struc_cmt
idc.get_struc_cmt
get_struc_first_offset
get_struc_id
idc.get_struc_id
get_struc_idx
get_struc_last_offset
get_struc_name
idc.get_struc_name
get_struc_next_offset
get_struc_prev_offset
get_struc_qty
get_struc_size
idc.get_struc_size
is_anonymous_member_name
see ida_frame.is_anonymous_member_name
is_dummy_member_name
see ida_frame.is_dummy_member_name
is_member_id
idc.is_member_id
is_special_member
is_union
idc.is_union
is_varmember
is_varstr
retrieve_member_info
save_struc
see tinfo_t.save_type
set_member_cmt
idc.set_member_cmt
set_member_name
idc.set_member_name
set_member_tinfo
set_member_type
idc.set_member_type
set_struc_align
set_struc_cmt
idc.set_struc_cmt
set_struc_hidden
set_struc_idx
set_struc_listed
set_struc_name
idc.set_struc_name
stroff_as_size
see ida_typeinf.stroff_as_size
struct_field_visitor_t
see ida_typeinf.tinfo_visitor_t
unsync_and_delete_struc
visit_stroff_fields
visit_stroff_udms
see ida_typeinf.visit_stroff_udms
by_til
see ida_typeinf.udm_t.is_by_til
eoff
flag
get_size
use ida_typeinf.udm_t.size // 8
instead.
get_soff
see soff
below.
has_ti
has_union
id
is_baseclass
see ida_typeinf.udm_t.is_baseclass
is_destructor
see ida_typeinf.udm_t.can_be_dtor
is_dupname
props
soff
use ida_typeinf.udm_t.offset // 8
instead.
this
thisown
unimem
age
from_til
get_alignment
get_last_member
get_member
has_union
see ida_typeinf.tinfo_t.has_union
id
see ida_typeinf.tinfo_t.get_tid
is_choosable
is_copyof
is_frame
see ida_typeinf.tinfo_t.is_frame
is_ghost
is_hidden
is_mappedto
is_synced
is_union
see ida_typeinf.tinfo_t.is_union
is_varstr
see ida_typeinf.tinfo_t.is_varstruct
like_union
members
memqty
see ida_typeinf.tinfo_t.get_udt_nmembers
ordinal
see ida_typeinf.tinfo_t.get_ordinal
props
set_alignment
thisown
visit_field
visit_udm
The functions below 8.4 are removed those under 9.0 are alternatives.
The idc alternatives are based on:
ida_typeinf
module
ida_typeinf.tinfo_t
, the type info class
ida_typeinf.enum_type_data_t
, the enumeration type class
ida_typeinf.edm_t
, the enumeration member class
add_enum
idc.add_enum
add_enum_member
idc.add_enum_member
del_enum
idc.del_enum
del_enum_member
idc.del_enum_member
for_all_enum_members
get_bmask_cmt
idc.get_bmask_cmt
get_bmask_name
idc.get_bmask_name
get_enum
idc.get_enum
get_enum_cmt
idc.get_enum_cmt
get_enum_flag
idc.get_enum_flag
get_enum_idx
get_enum_member
idc.get_enum_member
get_enum_member_bmask
idc.get_enum_member_bmask
get_enum_member_by_name
idc.get_enum_member_by_name
get_enum_member_cmt
idc.get_enum_member_cmt
get_enum_member_enum
idc.get_enum_member_enum
get_enum_member_name
idc.get_enum_member_name
get_enum_member_serial
get_enum_member_value
idc.get_enum_member_value
get_enum_name
idc.get_enum_name
get_enum_name2
get_enum_qty
get_enum_size
idc.get_enum_size
get_enum_type_ordinal
get_enum_width
idc.get_enum_width
get_first_bmask
idc.get_first_bmask
get_first_enum_member
idc.get_first_enum_member
get_first_serial_enum_member
get_last_bmask
idc.get_last_bmask
get_last_enum_member
idc.get_last_enum_member
get_last_serial_enum_member
get_next_bmask
idc.get_next_bmask
get_next_enum_member
idc.get_next_enum_member
get_next_serial_enum_member
get_prev_bmask
idc.get_prev_bmask
get_prev_enum_member
idc.get_prev_enum_member
get_prev_serial_enum_member
getn_enum
is_bf
idc.is_bf
is_enum_fromtil
is_enum_hidden
is_ghost_enum
is_one_bit_mask
set_bmask_cmt
idc.set_bmask_cmt
set_bmask_name
idc.set_bmask_name
set_enum_bf
idc.set_enum_bf
set_enum_cmt
idc.set_enum_cmt
set_enum_flag
idc.set_enum_flag
set_enum_fromtil
set_enum_ghost
set_enum_hidden
set_enum_idx
set_enum_member_cmt
idc.set_enum_member_cmt
set_enum_member_name
idc.set_enum_member_name
set_enum_name
idc.set_enum_name
set_enum_type_ordinal
set_enum_width
idc.set_enum_width
visit_enum_member
callregs_t_regcount
get_ordinal_from_idb_type
is_autosync
get_udm_tid
: use tinfo_t.get_udm_tid
as an alternative.
get_tinfo_tid
: use tinfo_t.get_tid
as an alternative.
tinfo_t_get_stock
get_ordinal_qty
: use ida_typeinf.get_ordinal_count
or ida_typeinf.get_ordinal_limit
as alternatives.
import_type
: use idc.import_type
as an alternative.
detach_tinfo_t(_this: "tinfo_t") -> "bool"
get_tinfo_by_edm_name(tif: "tinfo_t", til: "til_t", mname: "char const *") -> "ssize_t"
stroff_as_size(plen: "int", tif: "tinfo_t", value: "asize_t") -> "bool"
visit_stroff_udms(sfv: "udm_visitor_t", path: "tid_t const *", disp: "adiff_t *", appzero: "bool") -> "adiff_t *"
is_one_bit_mask(mask: "uval_t") -> "bool"
get_idainfo_by_udm(flags: "flags64_t *", ti: "opinfo_t", set_lzero: "bool *", ap: "array_parameters_t", udm: "udm_t") -> "bool"
visit_udm
get_constant_group
set_registers(self, kind: "callregs_t::reg_kind_t", first_reg: "int", last_reg: "int") -> "void"
all_constants(self)
all_groups(self, skip_trivial=False)
get_constant_group(self, *args) -> "PyObject *"
get_max_serial(self, value: "uint64") -> "uchar"
get_serial(self, index: "size_t") -> "uchar"
find_argument(self, *args) -> "ssize_t"
find_base(self, n: "char const *") -> "til_t *"
get_type_names(self) -> "const char *"
detach(self) -> "bool"
is_punknown(self) -> "bool"
get_enum_nmembers(self) -> "size_t"
is_empty_enum(self) -> "bool"
get_enum_width(self) -> "int"
calc_enum_mask(self) -> "uint64"
get_edm_tid(self, idx: "size_t") -> "tid_t"
is_udm_by_til(self, idx: "size_t") -> "bool"
set_udm_by_til(self, idx: "size_t", on: "bool"=True, etf_flags: "uint"=0) -> "tinfo_code_t"
set_fixed_struct(self, on: "bool"=True) -> "tinfo_code_t"
set_struct_size(self, new_size: "size_t") -> "tinfo_code_t"
is_fixed_struct(self) -> "bool"
get_func_frame(self, pfn: "func_t const *") -> "bool"
is_frame(self) -> "bool"
get_frame_func(self) -> "ea_t"
set_enum_radix(self, radix: "int", sign: "bool", etf_flags: "uint"=0) -> "tinfo_code_t"
rename_funcarg(self, index: "size_t", name: "char const *", etf_flags: "uint"=0) -> "tinfo_code_t"
set_funcarg_type(self, index: "size_t", tif: "tinfo_t", etf_flags: "uint"=0) -> "tinfo_code_t"
set_func_rettype(self, tif: "tinfo_t", etf_flags: "uint"=0) -> "tinfo_code_t"
del_funcargs(self, idx1: "size_t", idx2: "size_t", etf_flags: "uint"=0) -> "tinfo_code_t"
del_funcarg(self, idx: "size_t", etf_flags: "uint"=0) -> "tinfo_code_t"
add_funcarg(self, farg: "funcarg_t", etf_flags: "uint"=0, idx: "ssize_t"=-1) -> "tinfo_code_t"
set_func_cc(self, cc: "cm_t", etf_flags: "uint"=0) -> "tinfo_code_t"
set_funcarg_loc(self, index: "size_t", argloc: "argloc_t", etf_flags: "uint"=0) -> "tinfo_code_t"
set_func_retloc(self, argloc: "argloc_t", etf_flags: "uint"=0) -> "tinfo_code_t"
get_stkvar(self, insn: "insn_t const &", x: "op_t const", v: "sval_t") -> "ssize_t"
is_retaddr(self) -> "bool"
is_savregs(self) -> "bool"
is_special_member(self) -> "bool"
is_by_til(self) -> "bool"
set_retaddr(self, on: "bool"=True) -> "void"
set_savregs(self, on: "bool"=True) -> "void
set_by_til(self, on: "bool"=True) -> "void"
set_fixed(self, on: "bool"=True) -> "void"
find_udm(self, udm: "udmt_t *", strmem_flags: "int") -> "int"
find_udm(self, udm: "udmt_t *", strmem_flags: "int") -> "int"
find_udm(self, name: "char const *", strmem_flags: "int") -> "int"
get_type_by_edm_name(self, mname: "const char *", til: "til_t"=None) -> "bool"
get_edm_by_name(self, mname: "char const *", til: "til_t"=None) -> "ssize_t"
8.4 To access the structure of a function frame, use:
get_struc() (use func_t::frame as structure ID)
get_frame(const func_t *pfn)
get_frame(ea_t ea)
9.0 To access the structure of a function frame, use:
tinfo_t::get_func_frame(const func_t *pfn)
as the preferred way.
get_func_frame(tinfo_t *out, const func_t *pfn)
get_stkvar
: see tinfo_t
get_frame
: see tinfo_t.get-func_frame
get_frame_member_by_id
get_min_spd_ea
delete_unreferenced_stkvars
delete_wrong_stkvar_ops
get_func_frame(out: "tinfo_t",pfn: "func_t const *") -> "bool"
add_frame_member(pfn: "func_t const *", name: "char const *", offset: "uval_t", tif: "tinfo_t", repr: "value_repr_t"=None, etf_flags: "uint"=0) -> "bool"
is_anonymous_member_name(name: "char const *") -> "bool"
is_dummy_member_name(name: "char const *") -> "bool"
is_special_frame_member(tid: "tid_t") -> "bool"
set_frame_member_type(pfn: "func_t const *",offset: "uval_t", tif: "tinfo_t", repr: "value_repr_t"=None, etf_flags: "uint"=0) -> "bool"
delete_frame_members(pfn: "func_t const *",start_offset: "uval_t", end_offset: "uval_t") -> "bool"
calc_frame_offset(pfn: "func_t *", off: "sval_t", insn: "insn_t const *"=None, op: "op_t const *"=None) -> "sval_t"
define_stkvar(pfn: "func_t *", name: "const char *", off: "sval_t", flags: "flags64_t", ti: "const opinfo_t *", nbytes: "asize_t") -> bool
define_stkvar(pfn: "func_t *", name: "char const *", off: "sval_t", tif: "tinfo_t", repr: "value_repr_t"=None) -> "bool"
free_chunck
get_8bit
find_bytes(bs: typing.Union[bytes, bytearray, str], range_start: int, range_size: typing.Optional[int] = None, range_end: typing.Optional[int] = ida_idaapi.BADADDR, mask: typing.Optional[typing.Union[bytes, bytearray]] = None, flags: typing.Optional[int] = BIN_SEARCH_FORWARD | BIN_SEARCH_NOSHOW, radix: typing.Optional[int] = 16, strlit_encoding: typing.Optional[typing.Union[int, str]] = PBSENC_DEF1BPU) -> int
find_string(_str: str, range_start: int, range_end: typing.Optional[int] = ida_idaapi.BADADDR, range_size: typing.Optional[int] = None, strlit_encoding: typing.Optional[typing.Union[int, str]] = PBSENC_DEF1BPU, flags: typing.Optional[int] = BIN_SEARCH_FORWARD | BIN_SEARCH_NOSHOW) -> int
op_enum(ea: "ea_t", n: "int", id: "enum_t", serial: "uchar"=0) -> "bool"
op_enum(ea: "ea_t", n: "int", id: "tid_t", serial: "uchar"=0) -> "bool"
get_enum_id(ea: "ea_t", n: "int") -> "tid_t"
get_enum_id(ea: "ea_t", n: "int") -> "enum_t"
parse_binpat_str(out: "compiled_binpat_vec_t", ea: "ea_t", _in: "char const *", radix: "int", strlits_encoding: "int"=0) -> "str"
parse_binpat_str(out: "compiled_binpat_vec_t", ea: "ea_t", _in: "char const *", radix: "int", strlits_encoding: "int"=0) -> "bool"
bin_search3(start_ea: "ea_t", end_ea: "ea_t", data: "compiled_binpat_vec_t", flags: "int) -> ea_t
bin_search(start_ea: "ea_t", end_ea: "ea_t", data: "compiled_binpat_vec_t const &", flags: "int") -> (ea_t, size_t)
bin_search(start_ea: "ea_t", end_ea: "ea_t", image: "uchar const *", mask: "uchar const *", len: "size_t", flags: "int") -> ea_t
get_octet2(ogen: "octet_generator_t") -> "uchar_t*"
get_octet(ogen: "octet_generator_t") -> "uchar_t*"
dirtree_cursor_root_cursor
dirtree_t_errstr
enumerate_files2
eclose
qflcose(fp: "FILE *") -> "int"
set_ea(self, _ea: "ea_t") -> "bool"
clear(self)
resize(self, n: "int") -> "void"
size(self) -> "size_t"
set(self, _node: "int", num: "int") -> "void"
clr(self, _node: "int") -> "bool"
node(self, _order: "size_t") -> "int"
order(self, _node: "int") -> "int"
See ida-gdl node_ordering_t
has been made an alias of ida_gdl.node_ordering_t
See ida-gdl edge_t
has been made an alias of ida_gdl.edge_t
abstract_graph_t
drawable_graph_t
mutable_graph_t
interactive_graph_t
abstract_graph_t
has been made an alias of drawable_graph_t
mutbale_graph_t
has been made an alias of interactive_graph_t
create_mutable_graph
create_interactive_graph
delete_mutable_graph
delete_interactive_graph
grcode_create_mutable_graph
grcode_create_interactive_graph
create_mutable_graph
has been made an alias of create_interactive_graph
delete_mutable_graph
has been made an alias of delete_interactive_graph
grcode_create_mutable_graph
has been made an alias of grcode_create_interactive_graph
get_member_type
checkout_hexrays_license
cinsn_t_insn_is_epilog
save_user_labels2(func_ea: "ea_t", user_labels: "user_labels_t", func: "cfunc_t"=None) -> "void"
save_user_labels(func_ea: "ea_t", user_labels: "user_labels_t", func: "cfunc_t"=None) -> "void"
restore_user_labels2(func_ea: "ea_t", func: "cfunc_t"=None) -> "user_labels_t *"
restore_user_labels(func_ea: "ea_t", func: "cfunc_t"=None) -> "user_labels_t *"
max_vlr_value(size: "int") -> "uvlr_t"
min_vlr_svalue(size: "int") -> "uvlr_t"
max_vlr_svalue(size: "int") -> "uvlr_t"
is_unsigned_cmpop(cmpop: "cmpop_t") -> "bool"
is_signed_cmpop(cmpop: "cmpop_t") -> "bool"
is_cmpop_with_eq(cmpop: "cmpop_t") -> "bool"
is_cmpop_without_eq(cmpop: "cmpop_t") -> "bool"
catchexpr_t
ccatch_t
ctry_t
cthrow_t
cblock_pos_t
set_strmem_type
rename_strmem
splice(self, pos: "qlist< cinsn_t >::iterator", other: "cinsn_list_t", first: "qlist< cinsn_t >::iterator", last: "qlist< cinsn_t >::iterator") -> "void"
pre_structural(self, ct: "control_graph_t *", cfunc: "cfunc_t", g: "simple_graph_t") -> "int"
begin_inlining(self, cdg: "codegen_t", decomp_flags: "int") -> "int"
inlining_func(self, cdg: "codegen_t", blk: "int", mbr: "mba_ranges_t") -> "int"
inlined_func(self, cdg: "codegen_t", blk: "int", mbr: "mba_ranges_t", i1: "int", i2: "int") -> "int"
collect_warnings(self, warnings: "qstrvec_t *", cfunc: "cfunc_t") -> "int"
was_scattered_arg(self) -> "bool"
set_scattered_arg(self) -> "void"
clr_scattered_arg(self) -> "void"
find_input_reg(self, reg: "int", _size: "int"=1) -> "int"
compute_dominators(self, domin: "array_of_node_bitset_t &", post: "bool"=False) -> "void"
compute_immediate_dominators(self, domin: "array_of_node_bitset_t const &", idomin: "intvec_t", post: "bool"=False) -> "void"
depth_first_preorder(self, pre: "node_ordering_t") -> "int"
depth_first_postorder(self, post: "node_ordering_t") -> "int"
begin(self) -> "simple_graph_t::iterator"
end(self) -> "simple_graph_t::iterator"
front(self) -> "int"
inc(self, p: "simple_graph_t::iterator &", n: "int"=1) -> "void"
goup(self, node: "int") -> "int"
calc_max_exp(self) -> "int"
is_nan(self) -> "bool"
was_unpaired(self) -> "bool"
split_block(self, blk: "mblock_t", start_insn: "minsn_t") -> "mblock_t *"
inline_func(self, cdg: "codegen_t", blknum: "int", ranges: "mba_ranges_t", decomp_flags: "int"=0, inline_flags: "int"=0) -> "merror_t"
locate_stkpnt(self, ea: "ea_t") -> "stkpnt_t const *"
clear(self) -> "void"
flowchart(self, fc: "qflow_chart_t") -> "int"
flowchart(self, fc: "qflow_chart_t", mba: "mba_t") -> "int"
cvt_to_cmp(self, strict: "bool") -> "bool"
cvt_to_cmp(self) -> "bool"
max_value(self, size_ : "int") -> "uvlr_t"
max_value(self) -> "uvlr_t"
min_svalue(self, size_: "int") -> "uvlr_t"
min_svalue(self) -> "uvlr_t"
max_svalue(self, size_: "int") -> "uvlr_t"
max_svalue(self) -> "uvlr_t"
get_stkvar(self, p_off=None: "uval_t *") -> "member_t *"
get_stkvar(self, udm: "udm_t"=None, p_off: "uval_t *"=None) -> "ssize_t"
get_stkvar(self, p_off: "uval_t *") -> "member_t *"
get_stkvar(self, udm: "udm_t"=None, p_off: "uval_t *"=None) -> "ssize_t"
is_node_altval(self) -> "bool"
is_node_supval(self) -> "bool"
is_node_valobj(self) -> "bool"
is_node_blob(self) -> "bool"
is_node_var(self) -> "bool"
is_struc_field(self) -> "bool"
is_cstr(self) -> "bool"
is_qstring(self) -> "bool"
is_bytearray(self) -> "bool"
is_buf_var(self) -> "bool"
is_decimal(self) -> "bool"
is_hexadecimal(self) -> "bool"
is_readonly_var(self) -> "bool"
is_incremented(self) -> "bool"
is_val_mapped(self) -> "bool"
is_hash(self) -> "bool"
use_hlpstruc(self) -> "bool"
is_bitmap(self) -> "bool"
is_onoff(self) -> "bool"
is_scalar_var(self) -> "bool"
is_bitfield(self) -> "bool"
is_boolean(self) -> "bool"
has_individual_node(self) -> "bool"
str_true(self) -> "char const *"
str_false(self) -> "char const *"
ridx(self) -> "size_t"
hashname(self) -> "char const *"
As will be shown in ida_idaapi Removed functions get_inf_structure
has been removed. It has been replaced by the following accessors.
ida_idaapi.get_inf_structure().procname
ida_ida.inf_get_procname()
ida_idaapi.get_inf_structure().max_ea
ida_ida.inf_get_max_ea()
ida_idaapi.get_inf_structure().is_32bit()
ida_ida.inf_is_32bit_exactly()
The list of getters and setters is given below.
inf_get_version() -> "ushort"
inf_get_genflags() -> "ushort"
inf_get_lflags() -> "uint32"
inf_get_app_bitness() -> "uint"
inf_get_database_change_count() -> "uint32"
inf_get_filetype() -> "filetype_t"
inf_get_ostype() -> "ushort"
inf_get_apptype() -> "ushort"
inf_get_asmtype() -> "uchar"
inf_get_specsegs() -> "uchar"
inf_get_af() -> "uint32"
inf_get_af2() -> "uint32"
inf_get_baseaddr() -> "uval_t"
inf_get_start_ss() -> "sel_t"
inf_get_start_cs() -> "sel_t"
inf_get_start_ip() -> "ea_t"
inf_get_start_ea() -> "ea_t"
inf_get_start_sp() -> "ea_t"
inf_get_main() -> "ea_t"
inf_get_min_ea() -> "ea_t"
inf_get_max_ea() -> "ea_t"
inf_get_omin_ea() -> "ea_t"
inf_get_omax_ea() -> "ea_t"
inf_get_lowoff() -> "ea_t"
inf_get_highoff() -> "ea_t"
inf_get_maxref() -> "uval_t"
inf_get_netdelta() -> "sval_t"
inf_get_xrefnum() -> "uchar"
inf_get_type_xrefnum() -> "uchar"
inf_get_refcmtnum() -> "uchar"
inf_get_xrefflag() -> "uchar"
inf_get_max_autoname_len() -> "ushort"
inf_get_nametype() -> "char"
inf_get_short_demnames() -> "uint32"
inf_get_long_demnames() -> "uint32"
inf_get_demnames() -> "uchar"
inf_get_listnames() -> "uchar"
inf_get_indent() -> "uchar"
inf_get_cmt_indent() -> "uchar"
inf_get_margin() -> "ushort"
inf_get_lenxref() -> "ushort"
inf_get_outflags() -> "uint32"
inf_get_cmtflg() -> "uchar"
inf_get_limiter() -> "uchar"
inf_get_bin_prefix_size() -> "short"
inf_get_prefflag() -> "uchar"
inf_get_strlit_flags() -> "uchar"
inf_get_strlit_break() -> "uchar"
inf_get_strlit_zeroes() -> "char"
inf_get_strtype() -> "int32"
inf_get_strlit_sernum() -> "uval_t"
inf_get_datatypes() -> "uval_t"
inf_get_abibits() -> "uint32"
inf_get_appcall_options() -> "uint32"
inf_get_privrange_start_ea() -> "ea_t"
inf_get_privrange_end_ea() -> "ea_t"
inf_get_cc_id() -> "comp_t"
inf_get_cc_cm() -> "cm_t"
inf_get_cc_size_i() -> "uchar"
inf_get_cc_size_b() -> "uchar"
inf_get_cc_size_e() -> "uchar"
inf_get_cc_defalign() -> "uchar"
inf_get_cc_size_s() -> "uchar"
inf_get_cc_size_l() -> "uchar"
inf_get_cc_size_ll() -> "uchar"
inf_get_cc_size_ldbl() -> "uchar"
inf_get_procname() -> "size_t"
inf_get_strlit_pref() -> "size_t"
inf_get_cc(out: "compiler_info_t") -> "bool"
inf_get_privrange(*args) -> "range_t"
inf_get_af_low() -> "ushort"
inf_get_af_high() -> "ushort"
inf_get_af2_low() -> "ushort"
inf_get_pack_mode() -> "int"
inf_get_demname_form() -> "uchar"
inf_is_auto_enabled() -> "bool"
inf_is_graph_view() -> "bool"
inf_is_32bit_or_higher() -> "bool"
inf_is_32bit_exactly() -> "bool"
inf_is_16bit() -> "bool"
inf_is_64bit() -> "bool"
inf_is_dll() -> "bool"
inf_is_flat_off32() -> "bool"
inf_is_be() -> "bool"
inf_is_wide_high_byte_first() -> "bool"
inf_is_snapshot() -> "bool"
inf_is_kernel_mode() -> "bool"
inf_is_limiter_thin() -> "bool"
inf_is_limiter_thick() -> "bool"
inf_is_limiter_empty() -> "bool"
inf_is_mem_aligned4() -> "bool"
inf_is_hard_float() -> "bool"
inf_abi_set_by_user() -> "bool"
inf_allow_non_matched_ops() -> "bool"
inf_allow_sigmulti() -> "bool"
inf_append_sigcmt() -> "bool"
inf_big_arg_align(*args) -> "bool"
inf_check_manual_ops() -> "bool"
inf_check_unicode_strlits() -> "bool"
inf_coagulate_code() -> "bool"
inf_coagulate_data() -> "bool"
inf_compress_idb() -> "bool"
inf_create_all_xrefs() -> "bool"
inf_create_func_from_call() -> "bool"
inf_create_func_from_ptr() -> "bool"
inf_create_func_tails() -> "bool"
inf_create_jump_tables() -> "bool"
inf_create_off_on_dref() -> "bool"
inf_create_off_using_fixup() -> "bool"
inf_create_strlit_on_xref() -> "bool"
inf_data_offset() -> "bool"
inf_dbg_no_store_path() -> "bool"
inf_decode_fpp() -> "bool"
inf_del_no_xref_insns() -> "bool"
inf_final_pass() -> "bool"
inf_full_sp_ana() -> "bool"
inf_gen_assume() -> "bool"
inf_gen_lzero() -> "bool"
inf_gen_null() -> "bool"
inf_gen_org() -> "bool"
inf_huge_arg_align(cc: cm_t) -> "bool"
inf_like_binary() -> "bool":
inf_line_pref_with_seg() -> "bool"
inf_loading_idc() -> "bool"
inf_macros_enabled() -> "bool"
inf_map_stkargs() -> "bool"
inf_mark_code() -> "bool"
inf_merge_strlits() -> "bool"
inf_no_store_user_info() -> "bool"
inf_noflow_to_data() -> "bool"
inf_noret_ana() -> "bool"
inf_op_offset() -> "bool"
inf_pack_idb() -> "bool"
inf_pack_stkargs(*args) -> "bool"
inf_prefix_show_funcoff() -> "bool"
inf_prefix_show_segaddr() -> "bool"
inf_prefix_show_stack() -> "bool"
inf_prefix_truncate_opcode_bytes() -> "bool"
inf_propagate_regargs() -> "bool"
inf_propagate_stkargs() -> "bool"
inf_readonly_idb() -> "bool"
inf_rename_jumpfunc() -> "bool"
inf_rename_nullsub() -> "bool"
inf_should_create_stkvars() -> "bool"
inf_should_trace_sp() -> "bool"
inf_show_all_comments() -> "bool"
inf_show_auto() -> "bool"
inf_show_hidden_funcs() -> "bool"
inf_show_hidden_insns() -> "bool"
inf_show_hidden_segms() -> "bool"
inf_show_line_pref() -> "bool"
inf_show_repeatables() -> "bool"
inf_show_src_linnum() -> "bool"
inf_show_void() -> "bool"
inf_show_xref_fncoff() -> "bool"
inf_show_xref_seg() -> "bool"
inf_show_xref_tmarks() -> "bool"
inf_show_xref_val() -> "bool"
inf_stack_ldbl() -> "bool"
inf_stack_varargs() -> "bool"
inf_strlit_autocmt() -> "bool"
inf_strlit_name_bit() -> "bool"
inf_strlit_names() -> "bool"
inf_strlit_savecase() -> "bool"
inf_strlit_serial_names() -> "bool"
inf_test_mode() -> "bool"
inf_trace_flow() -> "bool"
inf_truncate_on_del() -> "bool"
inf_unicode_strlits() -> "bool"
inf_use_allasm() -> "bool"
inf_use_flirt() -> "bool"
inf_use_gcc_layout() -> "bool"
inf_set_allow_non_matched_ops(_v: "bool"=True) -> "bool"
inf_set_graph_view(_v: "bool"=True) -> "bool"
inf_set_lflags(_v: "uint32") -> "bool"
inf_set_decode_fpp(_v: "bool"=True) -> "bool"
inf_set_32bit(_v: "bool"=True) -> "bool"
inf_set_64bit(_v: "bool"=True) -> "bool"
inf_set_dll(_v: "bool"=True) -> "bool"
inf_set_flat_off32(_v: "bool"=True) -> "bool"
inf_set_be(_v: "bool"=True) -> "bool"
inf_set_wide_high_byte_first(_v: "bool"=True) -> "bool"
inf_set_dbg_no_store_path(_v: "bool"=True) -> "bool"
inf_set_snapshot(_v: "bool"=True) -> "bool"
inf_set_pack_idb(_v: "bool"=True) -> "bool"
inf_set_compress_idb(_v: "bool"=True) -> "bool"
inf_set_kernel_mode(_v: "bool"=True) -> "bool"
inf_set_app_bitness(bitness: "uint") -> "void"
inf_set_database_change_count(_v: "uint32") -> "bool"
inf_set_filetype(_v: "filetype_t") -> "bool"
inf_set_ostype(_v: "ushort") -> "bool"
inf_set_apptype(_v: "ushort") -> "bool"
inf_set_asmtype(_v: "uchar") -> "bool"
inf_set_specsegs(_v: "uchar") -> "bool"
inf_set_af(_v: "uint32") -> "bool"
inf_set_trace_flow(_v: "bool"=True) -> "bool"
inf_set_mark_code(_v: "bool"=True) -> "bool"
inf_set_create_jump_tables(_v: "bool"=True) -> "bool"
inf_set_noflow_to_data(_v: "bool"=True) -> "bool"
inf_set_create_all_xrefs(_v: "bool"=True) -> "bool"
inf_set_del_no_xref_insns(_v: "bool"=True) -> "bool"
inf_set_create_func_from_ptr(_v: "bool"=True) -> "bool"
inf_set_create_func_from_call(_v: "bool"=True) -> "bool"
inf_set_create_func_tails(_v: "bool"=True) -> "bool"
inf_set_should_create_stkvars(_v: "bool"=True) -> "bool"
inf_set_propagate_stkargs(_v: "bool"=True) -> "bool"
inf_set_propagate_regargs(_v: "bool"=True) -> "bool"
inf_set_should_trace_sp(_v: "bool"=True) -> "bool"
inf_set_full_sp_ana(_v: "bool"=True) -> "bool"
inf_set_noret_ana(_v: "bool"=True) -> "bool"
inf_set_guess_func_type(_v: "bool"=True) -> "bool"
inf_set_truncate_on_del(_v: "bool"=True) -> "bool"
inf_set_create_strlit_on_xref(_v: "bool"=True) -> "bool"
inf_set_check_unicode_strlits(_v: "bool"=True) -> "bool"
inf_set_create_off_using_fixup(_v: "bool"=True) -> "bool"
inf_set_create_off_on_dref(_v: "bool"=True) -> "bool"
inf_set_op_offset(_v: "bool"=True) -> "bool"
inf_set_data_offset(_v: "bool"=True) -> "bool"
inf_set_use_flirt(_v: "bool"=True) -> "bool"
inf_set_append_sigcmt(_v: "bool"=True) -> "bool"
inf_set_allow_sigmulti(_v: "bool"=True) -> "bool"
inf_set_hide_libfuncs(_v: "bool"=True) -> "bool"
inf_set_rename_jumpfunc(_v: "bool"=True) -> "bool"
inf_set_rename_nullsub(_v: "bool"=True) -> "bool"
inf_set_coagulate_data(_v: "bool"=True) -> "bool"
inf_set_coagulate_code(_v: "bool"=True) -> "bool"
inf_set_final_pass(_v: "bool"=True) -> "bool"
inf_set_af2(_v: "uint32") -> "bool"
inf_set_handle_eh(_v: "bool"=True) -> "bool"
inf_set_handle_rtti(_v: "bool"=True) -> "bool"
inf_set_macros_enabled(_v: "bool"=True) -> "bool"
inf_set_merge_strlits(_v: "bool"=True) -> "bool"
inf_set_baseaddr(_v: "uval_t") -> "bool"
inf_set_start_ss(_v: "sel_t") -> "bool"
inf_set_start_cs(_v: "sel_t") -> "bool"
inf_set_start_ip(_v: "ea_t") -> "bool"
inf_set_start_ea(_v: "ea_t") -> "bool"
inf_set_start_sp(_v: "ea_t") -> "bool"
inf_set_main(_v: "ea_t") -> "bool"
inf_set_min_ea(_v: "ea_t") -> "bool"
inf_set_max_ea(_v: "ea_t") -> "bool"
inf_set_omin_ea(_v: "ea_t") -> "bool"
inf_set_omax_ea(_v: "ea_t") -> "bool"
inf_set_lowoff(_v: "ea_t") -> "bool"
inf_set_highoff(_v: "ea_t") -> "bool"
inf_set_maxref(_v: "uval_t") -> "bool"
inf_set_netdelta(_v: "sval_t") -> "bool"
inf_set_xrefnum(_v: "uchar") -> "bool"
inf_set_type_xrefnum(_v: "uchar") -> "bool"
inf_set_refcmtnum(_v: "uchar") -> "bool"
inf_set_xrefflag(_v: "uchar") -> "bool"
inf_set_show_xref_seg(_v: "bool"=True) -> "bool"
inf_set_show_xref_tmarks(_v: "bool"=True) -> "bool"
inf_set_show_xref_fncoff(_v: "bool"=True) -> "bool"
inf_set_show_xref_val(_v: "bool"=True) -> "bool"
inf_set_max_autoname_len(_v: "ushort") -> "bool"
inf_set_nametype(_v: "char") -> "bool"
inf_set_short_demnames(_v: "uint32") -> "bool"
inf_set_long_demnames(_v: "uint32") -> "bool"
inf_set_demnames(_v: "uchar") -> "bool"
inf_set_listnames(_v: "uchar") -> "bool"
inf_set_indent(_v: "uchar") -> "bool"
inf_set_cmt_indent(_v: "uchar") -> "bool"
inf_set_margin(_v: "ushort") -> "bool"
inf_set_lenxref(_v: "ushort") -> "bool"
inf_set_outflags(_v: "uint32") -> "bool"
inf_set_show_void(_v: "bool"=True) -> "bool"
inf_set_show_auto(_v: "bool"=True) -> "bool"
inf_set_gen_null(_v: "bool"=True) -> "bool"
inf_set_show_line_pref(_v: "bool"=True) -> "bool"
inf_set_line_pref_with_seg(_v: "bool"=True) -> "bool"
inf_set_gen_lzero(_v: "bool"=True) -> "bool"
inf_set_gen_org(_v: "bool"=True) -> "bool"
inf_set_gen_assume(_v: "bool"=True) -> "bool"
inf_set_gen_tryblks(_v: "bool"=True) -> "bool"
inf_set_cmtflg(_v: "uchar") -> "bool"
inf_set_show_repeatables(_v: "bool"=True) -> "bool"
inf_set_show_all_comments(_v: "bool"=True) -> "bool"
inf_set_hide_comments(_v: "bool"=True) -> "bool"
inf_set_show_src_linnum(_v: "bool"=True) -> "bool"
inf_set_show_hidden_insns(_v: "bool"=True) -> "bool"
inf_set_show_hidden_funcs(_v: "bool"=True) -> "bool"
inf_set_show_hidden_segms(_v: "bool"=True) -> "bool"
inf_set_limiter(_v: "uchar") -> "bool"
inf_set_limiter_thin(_v: "bool"=True) -> "bool"
inf_set_limiter_thick(_v: "bool"=True) -> "bool"
inf_set_limiter_empty(_v: "bool"=True) -> "bool"
inf_set_bin_prefix_size(_v: "short") -> "bool"
inf_set_prefflag(_v: "uchar") -> "bool"
inf_set_prefix_show_segaddr(_v: "bool"=True) -> "bool"
inf_set_prefix_show_funcoff(_v: "bool"=True) -> "bool"
inf_set_prefix_show_stack(_v: "bool"=True) -> "bool"
inf_set_prefix_truncate_opcode_bytes(_v: "bool"=True) -> "bool"
inf_set_strlit_flags(_v: "uchar") -> "bool"
inf_set_strlit_names(_v: "bool"=True) -> "bool"
inf_set_strlit_name_bit(_v: "bool"=True) -> "bool"
inf_set_strlit_serial_names(_v: "bool"=True) -> "bool"
inf_set_unicode_strlits(_v: "bool"=True) -> "bool"
inf_set_strlit_autocmt(_v: "bool"=True) -> "bool"
inf_set_strlit_savecase(_v: "bool"=True) -> "bool"
inf_set_strlit_break(_v: "uchar") -> "bool"
inf_set_strlit_zeroes(_v: "char") -> "bool"
inf_set_strtype(_v: "int32") -> "bool"
inf_set_strlit_sernum(_v: "uval_t") -> "bool"
inf_set_datatypes(_v: "uval_t") -> "bool"
inf_set_abibits(_v: "uint32") -> "bool"
inf_set_mem_aligned4(_v: "bool"=True) -> "bool"
inf_set_pack_stkargs(_v: "bool"=True) -> "bool"
inf_set_big_arg_align(_v: "bool"=True) -> "bool"
inf_set_stack_ldbl(_v: "bool"=True) -> "bool"
inf_set_stack_varargs(_v: "bool"=True) -> "bool"
inf_set_hard_float(_v: "bool"=True) -> "bool"
inf_set_abi_set_by_user(_v: "bool"=True) -> "bool"
inf_set_use_gcc_layout(_v: "bool"=True) -> "bool"
inf_set_map_stkargs(_v: "bool"=True) -> "bool"
inf_set_huge_arg_align(_v: "bool"=True) -> "bool"
inf_set_appcall_options(_v: "uint32") -> "bool"
inf_set_privrange_start_ea(_v: "ea_t") -> "bool"
inf_set_privrange_end_ea(_v: "ea_t") -> "bool"
inf_set_cc_id(_v: "comp_t") -> "bool"
inf_set_cc_cm(_v: "cm_t") -> "bool"
inf_set_cc_size_i(_v: "uchar") -> "bool"
inf_set_cc_size_b(_v: "uchar") -> "bool"
inf_set_cc_size_e(_v: "uchar") -> "bool"
inf_set_cc_defalign(_v: "uchar") -> "bool"
inf_set_cc_size_s(_v: "uchar") -> "bool"
inf_set_cc_size_l(_v: "uchar") -> "bool"
inf_set_cc_size_ll(_v: "uchar") -> "bool"
inf_set_cc_size_ldbl(_v: "uchar") -> "bool"
inf_set_procname(*args) -> "bool"
inf_set_strlit_pref(*args) -> "bool"
inf_set_cc(_v: "compiler_info_t") -> "bool"
inf_set_privrange(_v: "range_t") -> "bool"
inf_set_af_low(saf: "ushort") -> "void"
inf_set_af_high(saf2: "ushort") -> "void"
inf_set_af2_low(saf: "ushort") -> "void"
inf_set_pack_mode(pack_mode: "int") -> "int"
inf_inc_database_change_count(cnt: "int"=1) -> "void"
get_inf_structure
see inf_structure getters and inf_structure setters
loader_input_t_from_linput
loader_input_t_from_capsule
loader_input_t_from_fp
cpu2ieee(ieee_out: "fpvalue_t *", cpu_fpval: "void const *", size: "int") -> "int"
ieee2cpu(cpu_fpval: "void *", ieee_out: "fpvalue_t const &", size: "int") -> "int"
See also IDB events below.
has_realcvt
get_uFlag
gen_stkvar_def(ctx: "outctx_t &", mptr: "member_t const *", v: : "sval_t") -> ssize_t
gen_stkvar_def(ctx: "outctx_t &", mptr: "udm_t", v: "sval_t", tid: "tid_t") -> "ssize_t"
ev_gen_stkvar_def(self, *args) -> "int"
ev_gen_stkvar_def(self, outctx: "outctx_t *", stkvar: "udm_t", v: "sval_t", tid: "tid_t") -> "int"
lt_udm_created(self, udtname: "char const *", udm: "udm_t") -> "void"
lt_udm_deleted(self, udtname: "char const *", udm_tid: "tid_t", udm: "udm_t") -> "void"
lt_udm_renamed(self, udtname: "char const *", udm: "udm_t", oldname: "char const *") -> "void"
lt_udm_changed(self, udtname: "char const *", udm_tid: "tid_t", udmold: "udm_t", udmnew: "udm_t") -> "void"
lt_udt_expanded(self, udtname: "char const *", udm_tid: "tid_t", delta: "adiff_t") -> "void"
frame_created(self, func_ea: "ea_t") -> "void"
frame_udm_created(self, func_ea: "ea_t", udm: "udm_t") -> "void"
frame_udm_deleted(self, func_ea: "ea_t", udm_tid: "tid_t", udm: "udm_t") -> "void"
frame_udm_renamed(self, func_ea: "ea_t", udm: "udm_t", oldname: "char const *") -> "void"
frame_udm_changed(self, func_ea: "ea_t", udm_tid: "tid_t", udmold: "udm_t", udmnew: "udm_t") -> "void"
frame_expanded(self, func_ea: "ea_t", udm_tid: "tid_t", delta: "adiff_t") -> "void"
All the _processor_t functions have been removed from ida_idp.
_get_10bytes
_set_10bytes
place_t_as_enumplace_t
place_t_as_structplace_t
open_enums_window
open_structs_window
choose_struc
choose_enum(title, default_id) -> "enum_t"
choose_enum_by_value(title, default_id, value, nbytes) -> "enum_t"
place_t_as_idaplace_t
has been made an alias of place_t.as_idaplace_t
place_t_as_simpleline_place_t
has been made an alias of place_t.as_simpleline_place_t
place_t_as_tiplace_t
has been made an alias of place_t.as_tiplace_t
enumplace_t
structplace_t
as_enumplace_t
as_structplace_t
place_as_enumplace_t
place_as_structplace_t
find_in
nearest_before(self, range: "tagged_line_section_t", start: "cpidx_t", tag: "color_t"=0) -> "tagged_line_section_t const *"
nearest_after(self, range: "tagged_line_section_t", start: "cpidx_t", tag: "color_t"=0) -> "tagged_line_section_t const *"
has_widget_lifecycle(self) -> "bool"
is_ida_library(path: "char *", pathsize: "size_t", handle: "void **") -> "bool"
set_user_defined_prefix
bookmarks_t_mark
has been made an alias of bookmarks_t.mark
bookmarks_t_get_desc
has been made an alias of bookmarks_t.get_desc
bookmarks_t_find_index
has been made an alias of bookmarks_t.find_index
bookmarks_t_size
has been made an alias of bookmarks_t.size
bookmarks_t_erase
has been made an alias of bookmarks_t.erase
bookmarks_t_get_dirtree_id
has been made an alias of bookmarks_t.get_dirtree_id
bookmarks_t_get
has been made an alias of bookmarks_t.get
validate_idb_names
netnode.exist has been made an alias of netnode.exist
uchar_array_frompointer
tid_array_frompointer
ea_array_frompointer
sel_array_frompointer
int_pointer_frompointer
sel_pointer_frompointer
ea_pointer_frompointer
See Added classes below
erase(self, name: "char const *") -> "bool"
assign(self, value: "uchar") -> "void"
value(self) -> "uchar"
cast(self) -> "uchar *"
frompointer(t: "uchar *") -> "uchar_pointer *"
assign(self, value: "ushort") -> "void"
value(self) -> "ushort"
cast(self) -> "ushort *"
frompointer(t: "ushort *") -> "ushort_pointer *"
assign(self, value: "uint") -> "void"
value(self) -> "uint"
cast(self) -> "uint *"
frompointer(t: "uint *") -> "uint_pointer *"
assign(self, value: "sint8") -> "void"
value(self) -> "sint8"
cast(self) -> "sint8 *"
frompointer(t: "sint8 *") -> "sint8_pointer *"
assign(self, value: "int8") -> "void"
value(self) -> "int8"
cast(self) -> "int8 *"
frompointer(t: "int8 *") -> "int8_pointer *"
assign(self, value: "uint8") -> "void"
value(self) -> "uint8"
cast(self) -> "uint8 *"
frompointer(t: "uint8 *") -> "uint8_pointer *"
assign(self, value: "int16") -> "void"
value(self) -> "int16"
cast(self) -> "int16 *"
frompointer(t: "int16 *") -> "int16_pointer *"
assign(self, value: "uint16") -> "void"
value(self) -> "uint16"
cast(self) -> "uint16 *"
frompointer(t: "uint16 *") -> "uint16_pointer *"
assign(self, value: "int32") -> "void"
value(self) -> "int32"
cast(self) -> "int32 *"
frompointer(t: "int32 *") -> "int32_pointer *"
assign(self, value: "uint32") -> "void"
value(self) -> "uint32"
cast(self) -> "uint32 *"
frompointer(t: "uint32 *") -> "uint32_pointer *"
assign(self, value: "int64") -> "void"
value(self) -> "int64"
cast(self) -> "int64 *"
frompointer(t: "int64 *") -> "int64_pointer *"
assign(self, value: "uint64") -> "void"
value(self) -> "uint64"
cast(self) -> "uint64 *"
frompointer(t: "uint64 *") -> "uint64_pointer *"
assign(self, value: "ssize_t") -> "void"
value(self) -> "ssize_t"
cast(self) -> "ssize_t *"
frompointer(t: "ssize_t *") -> "ssize_pointer *"
assign(self, value: "bool") -> "void"
value(self) -> "bool"
cast(self) -> "bool *"
frompointer(t: "bool *") -> "bool_pointer *"
assign(self, value: "short") -> "void"
value(self) -> "short"
cast(self) -> "short *"
frompointer(t: "short *") -> "short_pointer *"
assign(self, value: "char") -> "void"
value(self) -> "char"
cast(self) -> "char *"
frompointer(t: "char *") -> "char_pointer *"
assign(self, value: "sel_t") -> "void"
value(self) -> "sel_t"
cast(self) -> "sel_t *"
frompointer(t: "sel_t *") -> "sel_pointer *"
assign(self, value: "asize_t") -> "void"
value(self) -> "asize_t"
cast(self) -> "asize_t *"
frompointer(t: "asize_t *") -> "asize_pointer *"
assign(self, value: "adiff_t") -> "void"
value(self) -> "adiff_t"
cast(self) -> "adiff_t *"
from_pointer(t: "adiff_t*") -> "adiff_pointer *"
assign(self, value: "uval_t") -> "void"
value(self) -> "uval_t"
cast(self) -> "uval_t *"
frompointer(t: "uval_t *") -> "uval_pointer *"
assign(self, value: "ea32_t") -> "void"
value(self) -> "ea32_t"
cast(self) -> "ea32_t *"
frompointer(t: "ea32_t *") -> "ea32_pointer *"
assign(self, value: "ea64_t") -> "void"
value(self) -> "ea64_t"
cast(self) -> "ea64_t *"
frompointer(t: "ea64_t *") -> "ea64_pointer *"
assign(self, value: "flags_t") -> "void"
value(self) -> "flags_t"
cast(self) -> "flags_t *"
frompointer(t: "flags_t *") -> "flags_pointer *"
assign(self, value: "flags64_t") -> "void"
value(self) -> "flags64_t"
cast(self) -> "flags64_t *"
frompointer(t: "flags64_t *") -> "flags64_pointer *"
assign(self, value: "tid_t") -> "void"
value(self) -> "tid_t"
cast(self) -> "tid_t *"
frompointer(t: "tid_t *") -> "tid_pointer *"
get_login_name() -> "qstring *"
reg_value_info_t_make_dead_end
reg_value_info_t_make_aborted
reg_value_info_t_make_badinsn
reg_value_info_t_make_unkinsn
reg_value_info_t_make_unkfunc
reg_value_info_t_make_unkloop
reg_value_info_t_make_unkmult
reg_value_info_t_make_num
reg_value_info_t_make_initial_sp
invalidate_regfinder_cache(ea: "ea_t") -> "void"
invalidate_regfinder_cache(from=BADADDR: "ea_t", to=BADADDR: "ea_t") -> "void"
movt(self, r: "reg_value_info_t", insn: "insn_t const &") -> "void"
reg_load
reg_flush
find_binary
construct_macro(insn: "insn_t *", enable: "bool", build_macro: "PyObject *") -> bool (See [Modified functions](#modified-functions-4))
construct_macro2(_this: "macro_constructor_t *", insn: "insn_t *", enable: "bool") -> "bool"
construct_macro(_this: "macro_constructor_t *", insn: "insn_t *", enable: "bool") -> "bool"
construct_macro(self, insn: "insn_t", enable: "bool") -> "bool"
Structs() -> [(idx, sid, name)]
Structs() -> [(ordinal, sid, name)]
StructMembers(sid) -> [(offset, name, size)]
StructMembers(sid) -> [(offset_in_bytes, name, size_in_bytes)]
The following table provide a list of IDB events that have been replaced or, in some cases, removed.
truc_created
local_types_changed
deleting_struc
none
struc_deleted
local_types_changed
changing_struc_align
none
struc_align_changed
local_types_changed
renaming_struc
none
struc_renamed
local_types_changed
expanding_struc
none
struc_expanded
lt_udt_expanded, frame_expanded, local_types_changed
struc_member_created
lt_udm_created, frame_udm_created, local_types_changed
deleting_struc_member
none
struc_member_deleted
lt_udm_deleted, frame_udm_deleted, local_types_changed
renaming_struc_member
none
struc_member_renamed
lt_udm_renamed, frame_udm_renamed, local_types_changed
changing_struc_member
none
struc_member_changed
lt_udm_changed, frame_udm_changed, local_types_changed
changing_struc_cmt
none
struc_cmt_changed
local_types_changed
enum_created
local_types_changed
deleting_enum
none
enum_deleted
local_types_changed
renaming_enum
none
enum_renamed
local_types_changed
changing_enum_bf
local_types_changed
enum_bf_changed
local_types_changed
changing_enum_cmt
none
enum_cmt_changed
local_types_changed
enum_member_created
local_types_changed
deleting_enum_member
none
enum_member_deleted
local_types_changed
enum_width_changed
local_types_changed
enum_flag_changed
local_types_changed
enum_ordinal_changed
`none
Following is the list of error values returned by the type info module. It can also be found in typeinf.hpp
in the IDASDK:
TERR_OK
0
ok
TERR_STABLE
1
it means no errors occurred but nothing has changed (this code is internal: should never be returned to caller) -*
TERR_SAVE_ERROR
-1
failed to save
TERR_SERIALIZE
-2
failed to serialize
TERR_BAD_NAME
-3
name is not acceptable
TERR_BAD_ARG
-4
bad argument
TERR_BAD_TYPE
-5
bad type
TERR_BAD_SIZE
-6
bad size
TERR_BAD_INDEX
-7
bad index
TERR_BAD_ARRAY
-8
arrays are forbidden as function arguments
TERR_BAD_BF
-9
bitfields are forbidden as function arguments
TERR_BAD_OFFSET
-10
bad member offset
TERR_BAD_UNIVAR
-11
unions cannot have variable sized members
TERR_BAD_VARLAST
-12
variable sized member must be the last member in the structure
TERR_OVERLAP
-13
the member overlaps with other members that cannot be deleted
TERR_BAD_SUBTYPE
-14
recursive structure nesting is forbidden
TERR_BAD_VALUE
-15
value is not acceptable
TERR_NO_BMASK
-16
bitmask is not found
TERR_BAD_BMASK
-17
Bad enum member mask. The specified mask should not intersect with any existing mask in the enum. Zero masks are prohibited too
TERR_BAD_MSKVAL
-18
bad bmask and value combination
TERR_BAD_REPR
-19
bad or incompatible field representation
TERR_GRP_NOEMPTY
-20
could not delete group mask for not empty group
TERR_DUPNAME
-21
duplicate name
TERR_UNION_BF
-22
unions cannot have bitfields
TERR_BAD_TAH
-23
bad bits in the type attributes (TAH bits)
TERR_BAD_BASE
-24
bad base class
TERR_BAD_GAP
-25
bad gap
TERR_NESTED
-26
recursive structure nesting is forbidden
TERR_NOT_COMPAT
-27
the new type is not compatible with the old type
TERR_BAD_LAYOUT
-28
failed to calculate the structure/union layout
TERR_BAD_GROUPS
-29
bad group sizes for bitmask enum
TERR_BAD_SERIAL
-30
enum value has too many serials
TERR_ALIEN_NAME
-31
enum member name is used in another enum
TERR_STOCK
-32
stock type info cannot be modified
TERR_ENUM_SIZE
-33
bad enum size
TERR_NOT_IMPL
-34
not implemented
TERR_TYPE_WORSE
-35
the new type is worse than the old type
TERR_BAD_FX_SIZE
-36
cannot extend struct beyond fixed size
This section gives examples of how to port some ida_struct and ida_enum functions using ida_typeinf.
The following code can be used as an example of how to replace ida_struct.del_struct_members.
The following code can be used as an example of how to replace ida_struct.get_best_fit_member.
The following code can be used as an example of how to replace ida_struct.get_innermost_member.
The following code can be used as an example of how to replace ida_struct.get_first_struc_idx.
The following code can be used as an example of how to replace ida_struct.get_member_fullname.
The following code can be used as an example of how to replace ida_struct.get_struc.
The following code can be used as an example of how to replace ida_struct.get_member.
The following code can be used as an example of how to replace ida_struct.get_member_by_fullname.
The following code can be used as an example of how to replace ida_struct.get_member_struc.
The following code can be used as an example of how to replace ida_struct.get_member_tinfo.
The following code can be used as an example of how to replace ida_struct.get_member_by_name.
The following code can be used as an example of how to replace ida_struct.get_struc_idx.
The following code can be used as an example of how to replace ida_struct.get_struc_idx.
The following code can be used as an example of how to replace ida_struct.is_varmember.
The following code can be used as an example of how to replace ida_struct.is_special_member.
The following code can be used as an example of how to replace ida_struct.get_sptr.
see
see
see
see
see
see
see
see
see
see
see
see
see
see
see
see
see
see
see