LogoLogo
IDA 9.0
IDA 9.0
  • Welcome to Hex-Rays docs
    • What's new?
  • Getting Started
    • Install IDA
    • Licensing
    • Basic Usage
    • What's next?
  • User Guide
    • User Interface
      • Menu Bar
        • File
          • Load file
          • Script File
          • Script command
          • Produce output files
          • Invoke OS Shell
          • Take database snapshot
          • Save database
          • Save database as...
          • Abort IDA
          • Exit IDA
        • Edit
          • Export data
          • Undo an action
          • Redo an action
          • Clear undo history
          • Disable undo
          • Convert to instruction
          • Convert to data
          • Convert to string literal
          • Convert to array
          • Undefine a byte
          • Give Name to the Location
          • Operand types
            • Offset
            • Number
            • Perform en masse operation
            • Convert operand to character
            • Convert operand to segment
            • Complex Offset Expression
            • Convert operand to symbolic constant (enum)
            • Convert operand to stack variable
            • Change operand sign
            • Bitwise negate operand
            • User-defined operand
            • Set operand type
          • Comments
          • Functions
          • Structs
          • Segments
          • Patch core
          • Other
            • Rename Any Address
          • Plugins
        • Jump
          • Center current line in window
          • Problems List
        • Search
          • REGULAR EXPRESSION SYNTAX SUMMARY
        • View
          • Open subviews
          • Graphs
          • Message Window
          • Arrows window
          • Database snapshot manager
          • Highlighting identifiers
          • Browser options
          • Lumina options
          • Assembler level and C level types
          • C++ type details
          • Bookmarks window
          • Calculator
          • View segment registers
          • View Internal Flags
          • Hide
          • Unhide
          • Del hidden range
          • Hide all items
          • Unhide all items
          • Setup hidden items
        • Debugger
          • Debugger window
          • Process Control
            • Start process
            • Process options
            • Pause process
            • Terminate process
            • Step into
            • Step over
            • Run to cursor
            • Run until return
            • Attach to process
            • Detach from process
            • Set current ip
            • Show application screen
          • Breakpoints
          • Watches
          • Tracing
          • Source code view
            • Watch view (source level)
          • Process Memory
            • Take memory snapshot
            • Manual memory regions
            • Refresh memory
          • Thread list
          • Module list
          • Stack trace
          • Exceptions
          • Debugger options
          • Switch debugger
        • Lumina
        • Options
          • Low & High Suspicious Operand Limits
        • Windows
          • Rename a stack variable
          • Miscellanous Options
          • Environment variables
          • Reset Hidden Messages
          • Various dialog help messages
        • List of all menu options
      • Desktops
      • Command line
      • How To Use List Viewers in IDA
      • Licenses
        • Apache License for Ghidra
        • Apache License for LLVM
        • Common Public License Version 1.0
        • APPLE PUBLIC SOURCE LICENSE
        • PCRE2 LICENCE
        • GNU Lesser General Public License v2.1 for libiberty
      • Database conversion from idb to i64
    • Disassembler
      • Interactivity
      • Background Analysis
      • Graph view
        • Graphing tutorial
      • Proximity view
      • Navigation
        • Anchor
        • How to Enter a Segment Value
        • How to Enter a Number
        • How to Enter an Identifier
        • How to enter text
        • How to Enter an Address
      • Disassembly Gallery
        • Philips 51XA-G3
        • 6502 and 65C02 Disassembler
        • 6301, 6303, 6800, 6801 and 6803 Disassembler
        • 68040, Amiga
        • 6805 Disassembler
        • 6808 Disassembler
        • 6809 OS9 Flex Disassembler
        • 6809 Disassembler
        • 6811 Disassembler
        • 68HC12 Disassembler
        • 68HC16 Disassembler
        • 68k Amiga Disassembler
        • 68k Mac OS
        • 68k Palm Pilot
        • Unix COFF
        • NEC 78k0 and 78k0s Processor
        • 80196 Processor
        • 8051 Disassembler
        • Analog Devices 218x.
        • Alpha Processor – NT COFF
        • Alpha Processor – Unix ELF
        • Android ARM Executables (.elf)
        • ARC Processor
        • ARM Processor EPOC App
        • ARM Processor EPOC PE File
        • ARM Processor EPOC ROMFile
        • EPOC SIS File Handler
        • ARM Processor iOS (iPhone): Unlock
        • ARM Processor iOS (iPhone): Objective-C metadata
        • ARM Processor iOS (iPhone): Objective-C Instance variables
        • ARM Processor iOS (iPhone): Parameter Identification & Tracking (PIT)
        • ARM Processor iOS (iPhone): Start
        • ARM Processor iOS (iPhone): Switch statements
        • ARM Processor iOS (iPhone): C++ signatures
        • ARM Processor iOS (iPhone): Write
        • ARM Processor: Linux ELF
        • ARM Processor: AOF SDK
        • ARM Processor: Windows CE COFF Format
        • ARM Processor: Windows CE PE Format
        • ATMEL AVR Disassembler
        • C166 Processor
        • C166 Processor with ELF file
        • Rockwell C39
        • Microsoft .NET CLI Disassembler. VisualBasic library
        • CR16
        • Android Dalvik Executables (.dex)
        • Microsoft .NET CLI Disassembler
        • DSP56K
        • Fujitsu FR (.elf)
        • Gameboy
        • H8 300: COFF FILE Format
        • H8 300s: COFF FILE Format
        • H8 500
        • HPPA Risc Processor: HP-UX SOM
        • i51
        • i860
        • Intel i960
        • Intel IA-64 (Itanium)
        • Java Bytecode
        • Angstrem KR 1878
        • Renesas/Hitachi M16C
        • Renesas/Hitachi M32R
        • M740
        • M7700
        • M7900
        • MIPS Processor: Nintendo N64
        • MIPS R5900 Processor : Sony bin
        • MIPS Processor: Sony ELF
        • MIPS Processor: Sony PSX
        • MIPS Processor: Sony PSX
        • MIPS Processor: Unix COFF File Format
        • MIPS Processor: Unix ELF File Format
        • MIPS Processor: Windows CE PE File Format
        • MIPS Processor: Windows CE PE2 File Format
        • Panasonic MN102
        • Atmel OAK DSP
        • 80×86 Architecture: DOS Extender
        • 80×86 Architecture: Watcom Runtime
        • 80×86 Architecture: Geos APP
        • 80×86 Architecture: Geos DRV
        • 80×86 Architecture: Geos LIB
        • 80×86 Architecture: GNU COFF Format
        • 80×86 Architecture: OS/2 Linear Executable Format
        • 80×86 Architecture: Netware NLM
        • 80×86 Architecture: QNX Executable
        • 80×86 Architecture: Watcom Runtime
        • 80×86 Architecture: Windows OMF
        • 80×86 Architecture: Windows Portable Executable Format
        • 80×86 Architecture: Windows Virtual Device Driver
        • 80×86 Architecture: Windows 16 bits DLL
        • X-Box Disassembler
        • PDP 11: SAV File
        • PIC
        • PIC 12xx
        • Power PC AIF ECOFF file Format
        • Power PC Linux ELF
        • Mac OS PEF File
        • Mac OS X File
        • Windows NT PE File
        • Hitachi SH-1 Processor
        • Hitachi SH-3 Processor: Windows CE COFF format
        • Hitachi SH-3 Processor: Windows CE PE format
        • Hitachi SH-4 Processor: ELF File Format
        • Hitachi SH-4 Processor: Windows CE PE File Format
        • Super Nintendo Entertainement System (SNES)
        • SPARC Solaris COFF
        • SPARC Solaris ELF
        • SPARC Sun ELF
        • SPARC Sun ELF SO
        • ST 20C4
        • ST 7
        • ST 9
        • Toshiba TLCS 900
        • TMS 320c2 COFF
        • TMS 320c5
        • TMS 320c54
        • TMS 320c6 COFF File Format
        • TRICORE
        • SunPlus unSP
        • NEC V850
        • Z180 COFF File Format
        • Z380 COFF File Format
        • Z8
        • Z80
      • Supported processors
      • Supported file formats
        • Windmp file loader
      • Bitfields
        • Bit Fields tutorial
      • Structures tutorial
      • Union tutorial
      • Variable length structures tutorial
      • Data types, operands and constructs
      • Packed executables
    • Decompiler
      • Prerequisites
      • Quick primer
      • Exception handler
      • Introduction to Decompilation vs. Disassembly
        • Comparisons of ARM disassembly and decompilation
        • Comparisons of PowerPC disassembly and decompilation
        • Comparisons of MIPS disassembly and decompilation
        • Hex-Rays v7.4 vs. v7.3 Decompiler Comparison Page
        • Hex-Rays v7.3 vs. v7.2 Decompiler Comparison Page
        • Hex-Rays v7.2 vs. v7.1 Decompiler Comparison Page
      • Interactive operation
        • Rename
        • Set type
        • Set number representation
        • Edit indented comment
        • Edit block comment
        • Hide/unhide C statements
        • Split/unsplit expression
        • Force call type
        • Set call type
        • Add/del variadic arguments
        • Del function argument
        • Add/delete function return type
        • Jump to cross reference
        • Jump to cross reference globally
        • Generate HTML file
        • Mark/unmark as decompiled
        • Copy to assembly
        • Show/hide casts
        • Reset pointer type
        • Convert to struct *
        • Create new struct type
        • Split variable
        • Select union field
        • Jump to paired paren
        • Collapse/uncollapse item
        • Map to another variable
      • Batch operation
      • Configuration
      • Third party plugins
      • Floating point support
      • Support for intrinsic functions
      • Overlapped variables
      • gooMBA
      • Failures and troubleshooting
      • FAQ
      • Limitations
      • Tips and tricks
    • Debugger
      • Instant debugger
      • Remote debugging
        • Remote iOS Debugger
        • Android debugger
        • Dalvik debugger
        • Remote GDB Debugger
          • Remote GDB Debugger options
          • Debugging with gdbserver
          • Debugging with VMWare
          • Debugging with OpenOCD
          • Debugging with QEMU
          • External programs and GDB Debugger
          • Debugging code snippets with QEMU
        • PIN debugger
          • Building the PIN tool
          • Connecting a remote PIN tool instance from IDA
          • PIN support for MacOSX
        • Replayer debugger
        • Bochs debugger
          • Bochs Disk Image operation mode
          • Bochs IDB operation mode
          • Bochs PE operation mode
          • Bochs debugger FAQ
      • Local debugging
        • WinDbg Debugger
        • Linux debugger
        • Intel/ARM macOS debugger
      • Debugger tutorials
        • Debugging Dalvik Programs
        • IDA Win32 Local Debugging
        • IDA Linux Local Debugging
        • IDA Linux to Win64 Debugging
        • IDA Win32 to Linux Debugging
        • Debugging Mac OSX Applications with IDA Pro
        • Debugging iOS Applications using CoreDevice (iOS 17 and up)
        • Debugging iOS Applications with IDA Pro
        • Debugging Linux Applications locally
        • Debugging Linux/Windows Applications with PIN Tracer module
        • Debugging Windows Applications with IDA Bochs Plugin
        • Debugging Windows Applications with IDA WinDbg Plugin
        • Using the Bochs debugger plugin in Linux
        • Debugging Windows Kernel with VMWare and IDA WinDbg Plugin
        • Debugging Linux Kernel under VMWare using IDA GDB debugger
        • Windows Debugger Hub
        • Linux Debugger
        • Debugging a Windows executable locally and remotely
        • Debugging the XNU Kernel with IDA Pro
        • Remote debugging with IDA Pro
        • IDA Scriptable Debugger: overview
          • IDA Scriptable Debugger: scriptability
        • Debugging code snippets with QEMU debugger (a la IDA Bochs debugger)
        • Trace Replayer and managing traces
        • Using IDA Pro's tracing features
        • Working with PIN
        • Appcall
    • Creating Signatures
      • FLIRT
        • IDA F.L.I.R.T. Technology: In-Depth
        • Generate FLIRT signature file
        • Supported Compilers
          • Turbo Pascal
          • Delphi
      • Makesig
    • Creating Type Libraries
      • IDAClang
      • TILIB
    • Configuration
      • Configuration files
      • Command line switches
      • Keyboard macros
      • UI/Fonts/Themes
      • Shortcuts
      • Customizing IDA
      • CSS-based styling
    • Teams
      • IDA Teams Licenses
      • Diffing and Merging Databases with IDA Teams
      • Teams lc command reference manual
      • hv command reference manual
      • Hex-Rays Vault’s visual client user manual
    • Lumina
      • lc command reference manual
    • Plugins
      • Open Plugin Architecture
      • Plugin options
      • Plugins Shipped with IDA
        • Swift plugin
        • Golang plugin
        • Rust plugin
        • picture_search
        • Objective-C Analysis Plugin
        • DYLD Shared Cache Utils
        • Borland RTTI descriptors plugin
        • DWARF plugin
        • Patfind plugin
        • IDA Feeds
          • FLIRT Signature Bundle
      • Plugin Contest
      • How to write your own plugin?
    • Helper Tools
    • idalib
  • Developer Guide
    • C++ SDK
      • Getting Started with C++ SDK
      • C++ SDK Reference
      • Using the Decompiler SDK: Decompiler plugin
      • C++ SDK examples
      • How to create a plugin in C++?
      • C++ SDK Porting Guide from IDA 8.x to 9.0
    • IDAPython
      • Getting started with IDAPython
      • IDAPython API Reference
      • IDAPython examples
      • How to create a plugin in IDAPython?
      • IDAPython Porting Guide from IDA 8.x to 9.0
    • IDC
      • Core concepts
        • Expressions
        • Statements
        • Functions
        • Variables
        • Constants
        • Exceptions
        • Classes
        • Predefined symbols
        • loader_input_t class
        • Slices
      • IDC API Reference
        • Index of debugger related IDC functions
        • Alphabetical list of IDC functions
          • is_member_id
          • load_type
          • get_member_by_idx
          • get_ordinal_limit
          • set_selector
          • enable_tracing
          • get_prev_fixup_ea
          • del_segm
          • get_bmask_cmt
          • end_type_updating
          • Find
          • toggle_bnot
          • patch_byte
          • get_module_info
          • set_member_name
          • create_float
          • del_struc_member
          • read_dbg_memory
          • get_enum_width
          • getn_thread_name
          • del_struc
          • filelength
          • set_manual_insn
          • is_value...() functions
          • get_ip_val
          • del_extra_cmt
          • create_insn
          • op_offset_high16
          • get_cmt
          • expand_struc
          • get_idb_path
          • set_frame_size
          • get_file_ext
          • has_value
          • readshort
          • sanitize_file_name
          • get_member_flag
          • create_struct
          • ARM specific
          • set_enum_member_cmt
          • rename
          • set_ida_state
          • get_member_size
          • msg
          • qbasename
          • get_enum_member_enum
          • auto_mark_range
          • plan_to_apply_idasgn
          • set_named_type
          • op_offset
          • rename_entry
          • strlen
          • get_extra_cmt
          • get_enum_flag
          • fgetc
          • op_stkvar
          • get_last_index
          • get_field_ea
          • get_struc_id
          • select_thread
          • create_array
          • get_struc_cmt
          • set_array_string
          • set_func_attr
          • set_storage_type
          • get_struc_size
          • demangle_name
          • get_next_fixup_ea
          • get_next_bmask
          • delattr
          • gen_simple_call_chart
          • patch_qword
          • get_enum_name
          • loader_input_t.getc
          • get_debugger_event_cond
          • read_dbg_qword
          • define_local_var
          • generate_disasm_line
          • add_idc_hotkey
          • tolower
          • del_selector
          • set_debugger_event_cond
          • get_imagebase
          • gen_file
          • get_entry
          • find_custom_data_format
          • get_debug_name_ea
          • add_default_til
          • set_func_end
          • exit_process
          • delete_array
          • xtol
          • get_exception_code
          • detach_process
          • set_enum_cmt
          • get_wide_word
          • put_bookmark
          • is_loaded
          • add_enum_member
          • parse_decls
          • readstr
          • get_entry_qty
          • ord
          • sprintf
          • get_root_filename
          • get_enum_member_cmt
          • create_word
          • set_func_flags
          • loader_input_t.tell
          • create_align
          • read_dbg_dword
          • next_addr
          • get_bytes
          • batch
          • start_process
          • process_config_line
          • del_user_info
          • qmakefile
          • set_struc_name
          • print_decls
          • create_custom_data
          • del_enum_member
          • format_cdata
          • get_fixup_target_sel
          • get_item_size
          • loader_input_t.gets
          • get_last_bmask
          • Step Tracing Options
          • selector_by_name
          • get_enum_cmt
          • next_not_tail
          • prev_head
          • set_color
          • set_numbered_type
          • get_member_name
          • auto_wait
          • get_enum_member_bmask
          • fseek
          • get_segm_start
          • attach_process
          • Trace file functions
          • get_enum_member_value
          • op_stroff
          • get_next_offset
          • set_processor_type
          • get_bookmark_desc
          • create_data
          • lastattr
          • get_operand_value
          • collect_stack_trace
          • toupper
          • get_fixup_target_dis
          • set_cmt
          • add_entry
          • set_segm_addressing
          • qmake_full_path
          • get_source_linnum
          • fputc
          • resume_thread
          • get_func_attr
          • get_first_enum_member
          • add_sourcefile
          • get_first_bmask
          • read_selection_start
          • hasattr
          • get_member_cmt
          • gen_flow_graph
          • get_array_element
          • get_tinfo
          • loader_input_t
          • tinfo_errstr
          • TRUNC
          • add_segm_ex
          • Local types information and manipulation helpers
          • set_source_linnum
          • get_next_enum_member
          • loader_input_t.readbytes
          • set_array_params
          • jumpto
          • get_bookmark
          • set_enum_bf
          • prev_not_tail
          • toggle_sign
          • loader_input_t.size
          • Trace events functions
          • get_func_flags
          • get_gotea
          • set_segm_attr
          • get_item_head
          • set_default_sreg_value
          • print_insn_mnem
          • set_member_cmt
          • get_ordinal_qty
          • set_target_assembler
          • add_user_stkpnt
          • set_local_type
          • Hidden ranges
          • del_items
          • compile_idc_text
          • Dalvik debugger extension functions
          • byte_value
          • create_dword
          • is_code
          • del_func
          • get_enum
          • make_array
          • rotate_left
          • recalc_spd
          • search_path
          • CommonBits
          • get_processor_name
          • set_func_cmt
          • get_prev_bmask
          • Hashes
          • split_sreg_range
          • process_ui_action
          • set_fixup
          • get_fixup_target_type
          • create_oword
          • get_flags
          • get_func_name
          • create_strlit
          • add_struc
          • atol
          • load_debugger
          • mkdir
          • sizeof
          • get_enum_member_by_name
          • save_database
          • guess_type
          • get_segm_name
          • print_operand
          • qisabspath
          • get_member_qty
          • set_struc_cmt
          • get_fixup_target_flags
          • idadir
          • object.retrieve
          • add_auto_stkpnt
          • get_numbered_type_name
          • get_enum_member_name
          • get_next_index
          • prev_addr
          • get_name_ea
          • get_sp_delta
          • set_bmask_cmt
          • readlong
          • set_segm_name
          • get_prev_offset
          • set_segm_alignment
          • get_strlit_contents
          • forget_exception
          • get_item_end
          • add_func
          • get_name
          • Asks
          • get_spd
          • Debugger: control
          • get_wide_byte
          • plan_and_wait
          • set_enum_flag
          • RunPythonStatement
          • del_sourcefile
          • find_selector
          • get_frame_regs_size
          • op_num
          • define_exception
          • create_double
          • create_byte
          • read_selection_end
          • OpTypes
          • op_plain_offset
          • move_segm
          • get_member_id
          • set_segm_combination
          • get_current_thread
          • trim
          • Debugger: options
          • getn_thread
          • get_frame_id
          • typeinfo.print
          • to_ea
          • rebase_program
          • add_struc_member
          • get_exception_qty
          • get_first_index
          • import_type
          • set_segm_type
          • find_custom_data_type
          • get_next_seg
          • find_func_end
          • get_last_enum_member
          • getattr
          • get_frame_size
          • get_screen_ea
          • loader_input_t.read
          • set_reg_value
          • Debugger: modules
          • create_pack_real
          • writestr
          • exec_idc
          • get_enum_size
          • set_enum_name
          • create_tbyte
          • sel2para
          • atoa
          • loader_input_t.close
          • add_enum
          • ltoa
          • substr
          • del_idc_hotkey
          • Breakpoint handling functions
          • loader_input_t.seek
          • cleanup_appcall
          • object.store
          • get_type
          • qexit
          • get_debug_name
          • get_array_id
          • Can't Open File
          • suspend_process
          • process_config_directive
          • get_entry_name
          • get_last_member
          • get_struc_name
          • clear_selection
          • fclose
          • firstattr
          • create_yword
          • dbg_appcall
          • get_qword
          • patch_dword
          • begin_type_updating
          • read_dbg_byte
          • get_fpnum
          • qsleep
          • get_first_member
          • get_nsec_stamp
          • del_stkpnt
          • eval
          • savefile
          • eval_python
          • Xrefs
          • strstr
          • writeshort
          • get_sreg
          • get_segm_end
          • get_func_off_str
          • set_func_start
          • del_array_element
          • get_full_flags
          • set_exception_flags
          • rename_array
          • get_frame_args_size
          • op_flt
          • get_min_spd_ea
          • apply_type
          • get_prev_index
          • loadfile
          • retrieve_input_file_md5
          • get_wide_dword
          • patch_dbg_byte
          • Functions provided by the WinDbg debugger
          • get_original_byte
          • get_member_strid
          • call_system
          • writelong
          • get_thread_qty
          • nextattr
          • send_dbg_command
          • get_first_seg
          • get_processes
          • patch_word
          • get_manual_insn
          • ftell
          • get_entry_ordinal
          • set_array_long
          • delete_all_segments
          • TO_LONG
          • Function chunk related functions
          • Debugger: events
          • get_prev_func
          • op_seg
          • validate_idb_names
          • fprintf
          • fopen
          • strfill
          • del_fixup
          • get_bmask_name
          • inf_attr
          • is_bf
          • read_dbg_word
          • qdirname
          • get_segm_attr
          • func_contains
          • del_source_linnum
          • get_sourcefile
          • clr_database_flag
          • set_name
          • Refresh Screen
          • op_enum
          • getn_enum
          • get_db_byte
          • setattr
          • get_forced_operand
          • op_bin
          • Functions provided by the replayer debugger
          • prevattr
          • update_extra_cmt
          • get_str_type
          • op_man
          • choose_func
          • set_bmask_name
          • get_curline
          • decode_insn
          • set_segment_bounds
          • set_segm_class
          • write_dbg_memory
          • get_exception_name
          • get_enum_member
          • is_mapped
          • del_enum
          • get_frame_lvar_size
          • get_operand_type
          • set_root_filename
          • compile_idc_file
          • typeinfo.size
          • get_local_tinfo
          • get_fixup_target_off
          • is_union
          • unlink
          • get_segm_by_sel
          • set_enum_width
          • take_memory_snapshot
          • exec_python
          • get_next_func
          • get_member_offset
          • get_func_cmt
          • parse_decl
          • create_qword
          • next_head
          • suspend_thread
          • loader_input_t.getz
          • get_color
          • get_reg_value
          • load_and_run_plugin
          • set_database_flag
          • set_enum_member_name
          • set_member_type
          • get_prev_enum_member
      • IDC examples
        • Analyzing encrypted code
  • Admin Guide
    • Lumina server
    • Teams server
    • License server
      • Hex-Rays License Server Migration Guide
  • Release Notes
    • IDA 9.0
    • IDA 8.4sp2
    • IDA 8.4sp1
    • IDA 8.4
    • IDA 8.3
    • IDA 8.2sp1
    • IDA 8.2
    • IDA 8.1
    • IDA 8.0sp1
    • IDA 8.0
    • IDA 7.7sp1
    • IDA 7.7
    • IDA 7.6sp1
    • IDA 7.6
    • IDA 7.5sp3
    • IDA 7.5sp2
    • IDA 7.5sp1
    • IDA 7.5
    • IDA 7.4sp1
    • IDA 7.4
    • IDA 7.3
      • IDA 7.3 Undo: IDA can do it
    • IDA 7.2
      • IDA 7.2 The Mac Rundown
    • IDA 7.1
      • IDA 7.1 Debugger API 7.1 Porting Guide
    • IDA 7.0sp1
    • IDA 7.0
      • Internationalization (i18n)
      • Automatic discovery of string literals
      • API 7.0 Porting Guide
      • IDAPython backward compatibility
    • IDA 6.95
    • IDA 6.9
    • IDA 6.8
    • IDA 6.7
    • IDA 6.6
    • IDA 6.5
    • IDA 6.4
    • IDA 6.3
    • IDA 6.2
    • IDA 6.1
    • IDA 6.0
    • IDA 5.7
    • IDA 5.6
    • IDA 5.5
      • 5.5 Gallery
      • 5.5 Comparison
    • IDA 5.4
    • IDA 5.3
    • IDA 5.2
    • IDA 5.1
    • IDA 5.0
    • IDA 4.9SP
    • IDA 4.9
    • IDA 4.8
    • IDA 4.7
    • IDA 4.6
    • IDA 4.x
    • IDA 3.x
    • Cumulative bugfix for IDA
  • Archive
    • IDA’s Windbg plugin
    • IDA’s Bochs debugger plugin
    • IDA’s Bochs debugger plugin 2
    • DosWin32
    • Hex-Rays v1.1 vs. v1.0 Decompiler Comparison Page
    • Hex-Rays v1.2 vs. v1.1 Decompiler Comparison Page
    • Hex-Rays v1.3 vs. v1.2 Decompiler Comparison Page
    • Hex-Rays v1.6 vs. v1.5 Decompiler Comparison Page
    • Hex-Rays v1.7 vs. v1.6 Decompiler Comparison Page
    • Costly Greetings – An Adventure In Hostile Code Analysis
    • An Adventure In Hostile Code Analysis: Description
    • An Adventure In Hostile Code Analysis: Disassembly
    • Improved code flow analysis
    • Program Navigation Bar
    • IDA Home Contest
    • Pimp My IDA: vote results
    • Turning off IDA 6.x compatibility in IDAPython
    • Porting guide for IDA 7.4 turning off IDA 6.x API backwards-compatibility by default
    • Porting guide for IDA 7.4 IDAPython and Python 3
    • IDAPython and Python 3
    • Porting guide for changes in IDAPython-on-Python-3 APIs
    • Debugging iOS Applications With IDA
    • IDA Win32 to Win32 Debugging
    • IDA Win32 to Win64 Debugging
    • Legacy license server: Floating Licenses
      • Installing on Linux
      • Installing on Windows
      • Installing on OS X
    • Decompiler Installation
    • Enumerated types tutorial
  • Bug Bounty
Powered by GitBook
LogoLogo

Need Help?

  • FAQs
  • Support

Community

  • Forum
  • Plugins

Resources

  • Blog
  • Download center

© 2025 Copyright Hex-Rays

On this page
  • Introduction
  • struct.hpp
  • Removed classes
  • Removed APIs
  • enum.hpp
  • Removed APIs
  • bytes.hpp
  • Added APIs
  • Modified APIs
  • Removed APIs
  • dirtree.hpp
  • Modified APIs
  • diskio.hpp
  • Modified APIs
  • Removed APIs
  • err.h
  • Removed APIs
  • expr.hpp
  • Modified APIs
  • frame.hpp
  • Added APIs
  • Modified PIs
  • Removed APIs
  • funcs.hpp
  • Added APIs
  • Removed APIs
  • gdl.hpp
  • Added classes/structures
  • hexrays.hpp
  • Added classes/structures
  • Added APIs
  • Modified APIs
  • Removed APIs:
  • graph.hpp
  • Removed classes/structures
  • Modified classes/structures
  • Modified APIs
  • idalib.hpp
  • Added APIs
  • idd.hpp
  • Added APIs
  • idp.hpp
  • Removed APIs:
  • Modified APIs:
  • Added APIs
  • kernwin.hpp
  • Removed APIs
  • Removed classes/structures
  • Added APIs
  • Modified APIs
  • lex.hpp
  • Modified APIs
  • lines.hpp
  • Removed APIs
  • Modified APIs
  • nalt.hpp
  • Modified APIs
  • parsejson.hpp
  • Added APIs
  • pro.h
  • Removed APIs
  • Added APIs
  • Added classes/structures
  • regex.hpp
  • Removed APIs
  • regfinder.hpp
  • Modified APIs
  • Removed APIs
  • Added APIs
  • registry.hpp
  • Removed APIs
  • search.hpp
  • Removed APIs
  • typeinf.hpp
  • Removed APIs
  • Modified APIs
  • Added classes/structures
  • Added APIs
  • IDB events

Was this helpful?

Export as PDF
  1. Developer Guide
  2. C++ SDK

C++ SDK Porting Guide from IDA 8.x to 9.0

Last updated 7 months ago

Was this helpful?

IDA 9.0 API Changes and porting guide

Introduction

The largest change is the removal of two headers:

  • struct.hpp

  • enum.hpp

The functionalities for working with user-defined types are now available in typeinf.hpp (tinfo_t class).

struct.hpp

Removed classes

  • class member_t;

  • class struc_t;

struc_t is replaced by the notion of "user-defined type" (udt_type_data_t class) and member_t by dt member (udm_t class).

Removed APIs

  • get_struc_qty() Rough equivalent is get_ordinal_limit() or get_ordinal_count() but note that it also includes enums and typedefs.

  • get_first_struc_idx()

  • get_last_struc_idx()

  • get_prev_struc_idx()

  • get_next_struc_idx()

Local type ordinals always start at 1 (0 is invalid ordinal) and go up to get_ordinal_limit().

  • get_struc_idx(tid_t id)

  • get_struc_by_idx(uval_t idx)

enum.hpp

Enumerations are now manipulated via:

  • tinfo_t class

  • enum_type_data_t class

  • edm_t class. in typeinf.hpp

Removed APIs

  • get_enum_qty(void)

  • getn_enum(size_t idx)

  • get_enum_idx(enum_t id)

  • get_enum(const char *name)

  • is_bf(enum_t id)

  • is_enum_hidden(enum_t id)

  • set_enum_hidden(enum_t id, bool hidden)

  • is_enum_fromtil(enum_t id)

  • set_enum_fromtil(enum_t id, bool fromtil)

  • is_ghost_enum(enum_t id)

  • set_enum_ghost(enum_t id, bool ghost)

  • get_enum_name(qstring *out, enum_t id)

  • get_enum_name2(qstring *out, enum_t id, int flags=0)

  • get_enum_name(tid_t id, int flags=0)

  • get_enum_width(enum_t id)

  • set_enum_width(enum_t id, int width)

  • get_enum_cmt(qstring *buf, enum_t id, bool repeatable)

  • get_enum_size(enum_t id)

  • get_enum_flag(enum_t id)

  • get_enum_member_by_name(const char *name)

  • get_enum_member_value(const_t id)

  • get_enum_member_enum(const_t id)

  • get_enum_member_bmask(const_t id)

  • get_enum_member(enum_t id, uval_t value, int serial, bmask_t mask)

  • get_first_bmask(enum_t enum_id)

  • get_last_bmask(enum_t enum_id)

  • get_next_bmask(enum_t enum_id, bmask_t bmask\)

  • get_prev_bmask(enum_t enum_id, bmask_t bmask)

  • get_first_enum_member(enum_t id, bmask_t bmask=DEFMASK)

  • get_last_enum_member(enum_t id, bmask_t bmask=DEFMASK)

  • get_next_enum_member(enum_t id, uval_t value, bmask_t bmask=DEFMASK)

  • get_prev_enum_member(enum_t id, uval_t value, bmask_t bmask=DEFMASK)

  • get_enum_member_name(qstring *out, const_t id)

  • get_enum_member_cmt(qstring *buf, const_t id, bool repeatable)

  • get_first_serial_enum_member(uchar *out_serial, enum_t id, uval_t value, bmask_t bmask)

  • get_last_serial_enum_member(uchar *out_serial, enum_t id, uval_t value, bmask_t bmask)

  • get_next_serial_enum_member(uchar *in_out_serial, const_t first_cid)

  • get_prev_serial_enum_member(uchar *in_out_serial, const_t first_cid)

  • for_all_enum_members(enum_t id, enum_member_visitor_t &cv)

  • ida_export get_enum_member_serial(const_t cid)

  • get_enum_type_ordinal(enum_t id)

  • set_enum_type_ordinal(enum_t id, int32 ord)

  • add_enum(size_t idx, const char *name, flags64_t flag)

  • del_enum(enum_t id)

  • set_enum_idx(enum_t id, size_t idx)

  • set_enum_bf(enum_t id, bool bf)

  • set_enum_name(enum_t id, const char *name)

  • set_enum_cmt(enum_t id, const char *cmt, bool repeatable)

  • set_enum_flag(enum_t id, flags64_t flag)

  • add_enum_member(enum_t id, const char *name, uval_t value, bmask_t bmask=DEFMASK)

  • del_enum_member(enum_t id, uval_t value, uchar serial, bmask_t bmask)

  • set_enum_member_name(const_t id, const char *name)

  • set_enum_member_cmt(const_t id, const char *cmt, bool repeatable)

  • is_one_bit_mask(bmask_t mask)

  • set_bmask_name(enum_t id, bmask_t bmask, const char *name)

  • get_bmask_name(qstring *out, enum_t id, bmask_t bmask)

  • set_bmask_cmt(enum_t id, bmask_t bmask, const char *cmt, bool repeatable)

  • get_bmask_cmt(qstring *buf, enum_t id, bmask_t bmask, bool repeatable)

bytes.hpp

Added APIs

  • idaman ea_t ida_export find_binary(ea_t startea, ea_t endea, const char *ubinstr, int radix, int sflag, int strlits_encoding=0)

Modified APIs

In 8.4
In 9.0

idaman bool ida_export get_octet2(uchar *out, octet_generator_t *ogen)

idaman bool ida_export get_octet(uchar *out, octet_generator_t *ogen)

idaman bool ida_export op_enum(ea_t ea, int n, enum_t id, uchar serial=0)

idaman bool ida_export op_enum(ea_t ea, int n, tid_t id, uchar serial=0)

idaman enum_t ida_export get_enum_id(uchar *serial, ea_t ea, int n)

idaman tid_t ida_export get_enum_id(uchar *serial, ea_t ea, int n)

idaman ea_t ida_export bin_search3(size_t *out_matched_idx, ea_t start_ea, ea_t end_ea, const compiled_binpat_vec_t &data, int flags)

idaman ea_t ida_export bin_search(ea_t start_ea, ea_t end_ea, const compiled_binpat_vec_t &data, int flags, size_t *out_matched_idx=nullptr)

Removed APIs

  • bin_search2(ea_t start_ea, ea_t end_ea, const compiled_binpat_vec_t &data, int flags)

  • bin_search(ea_t, ea_t, const uchar *, const uchar *, size_t, int, int)

  • get_8bit(ea_t *ea, uint32 *v, int *nbit)

  • get_octet(ea_t *ea, uint64 *v, int *nbit)

  • free_chunk(ea_t bottom, asize_t size, int32 step)

dirtree.hpp

Modified APIs

In 8.4
In 9.0

idaman bool ida_export dirtree_get_abspath_by_cursor2(qstring *out, const dirtree_impl_t *d, const dirtree_cursor_t &cursor, uint32 name_flags)

idaman bool ida_export dirtree_get_abspath_by_cursor(qstring *out, const dirtree_impl_t *d, const dirtree_cursor_t &cursor, uint32 name_flags)

diskio.hpp

Modified APIs

In 8.4
In 9.0

idaman THREAD_SAFE int ida_export enumerate_files2(char *answer, size_t answer_size, const char *path, const char *fname, file_enumerator_t &fv)

idaman THREAD_SAFE int ida_export enumerate_files(char *answer, size_t answer_size, const char *path, const char *fname, file_enumerator_t &fv)

Removed APIs

  • ecreate(const char *file)

  • eclose(FILE *fp)

  • eread(FILE *fp, void *buf, size_t size)

  • ewrite(FILE *fp, const void *buf, size_t size)

  • eseek(FILE *fp, qoff64_t pos)

  • enumerate_files(char *answer, size_t answer_size, const char *path, const char *fname, int (idaapi*func)(const char *file,void *ud), void *ud=nullptr)

err.h

Removed APIs

  • qerrcode(int new_code=-1)

expr.hpp

Modified APIs

In 8.4
In 9.0

bool extlang_t::(idaapi *compile_file)(const char *file, qstring *errbuf)

bool extlang_t::(idaapi *compile_file)(const char *file, const char *requested_namespace, qstring *errbuf)

frame.hpp

Added APIs

  • idaman bool ida_export add_frame_member(const func_t *pfn, const char *name, uval_t offset, const tinfo_t &tif, const struct value_repr_t *repr=nullptr, uint etf_flags=0)

  • THREAD_SAFE bool is_anonymous_member_name(const char *name)

  • THREAD_SAFE bool is_dummy_member_name(const char *name)

  • idaman bool ida_export is_special_frame_member(tid_t tid)

  • idaman bool ida_export set_frame_member_type(const func_t *pfn, uval_t offset, const tinfo_t &tif, const struct value_repr_t *repr=nullptr, uint etf_flags=0)

  • idaman bool ida_export delete_frame_members(const func_t *pfn, uval_t start_offset, uval_t end_offset)

  • idaman sval_t ida_export calc_frame_offset(func_t *pfn, sval_t off, const insn_t *insn = nullptr, const op_t *op = nullptr)

Modified PIs

In 8.4
In 9.0

idaman struc_t *ida_export get_frame(const func_t *pfn)

idaman bool ida_export get_func_frame(tinfo_t *out, const func_t *pfn)

idaman bool ida_export define_stkvar(func_t *pfn, const char *name, sval_t off, flags64_t flags, const opinfo_t *ti, asize_t nbytes)

idaman bool ida_export define_stkvar(func_t *pfn, const char *name, sval_t off, const tinfo_t &tif, const struct value_repr_t *repr=nullptr)

idaman void ida_export build_stkvar_xrefs(xreflist_t *out, func_t *pfn, const member_t *mptr)

idaman void ida_export build_stkvar_xrefs(xreflist_t *out, func_t *pfn, uval_t start_offset, uval_t end_offset)

Removed APIs

  • get_frame_member_by_id(qstring *out_mname, struc_t **out_fptr, tid_t mid)

  • get_stkvar(sval_t *actval, const insn_t &insn, const op_t &x, sval_t v) See get_stkvar in ida_typeinf.tinfo_t

  • get_min_spd_ea(func_t *pfn)

  • delete_unreferenced_stkvars(func_t *pfn)

  • delete_wrong_stkvar_ops(func_t *pfn)

funcs.hpp

Added APIs

  • bool func_item_iterator_t::set_ea(ea_t _ea)

Removed APIs

  • save_signatures(void)

  • invalidate_sp_analysis(func_t *pfn)

  • invalidate_sp_analysis(ea_t ea)

gdl.hpp

Added classes/structures

  • struct edge_t

  • class node_ordering_t

hexrays.hpp

Added classes/structures

  • class control_graph_t

  • class edge_mapper_t

  • class node_bitset_t

  • class array_of_node_bitset_t

  • struct ctry_t

  • struct cthrow_t

  • struct catchexpr_t

  • struct ccatch_t

  • struct cblock_pos_t

Added APIs

  • uvlr_t max_vlr_value(int size)

  • uvlr_t min_vlr_svalue(int size)

  • uvlr_t max_vlr_svalue(int size)

  • bool is_unsigned_cmpop(cmpop_t cmpop)

  • bool is_signed_cmpop(cmpop_t cmpop)

  • bool is_cmpop_with_eq(cmpop_t cmpop)

  • bool is_cmpop_without_eq(cmpop_t cmpop)

lvar_t

  • bool was_scattered_arg() const

  • void set_scattered_arg()

  • void clr_scattered_arg()

lvars_t

  • int find_input_reg(int reg, int _size=1)

simple_graph_t

  • virtual bool ignore_edge(int /*src*/, int /*dst*/ ) const

  • void hexapi compute_dominators(array_of_node_bitset_t &domin, bool post=false) const

  • void hexapi compute_immediate_dominators(const array_of_node_bitset_t &domin, intvec_t &idomin, bool post=false) const

  • int hexapi depth_first_preorder(node_ordering_t *pre) const

  • int hexapi depth_first_postorder(node_ordering_t *post) const

  • void depth_first_postorder(node_ordering_t *post, edge_mapper_t *et) const

  • void depth_first_postorder_for_all_entries(node_ordering_t *post) const

  • intvec_t find_dead_nodes() const

  • void find_reaching_nodes(int n, node_bitset_t &reaching) const

  • bool path_exists(int m, int n) const

  • bool path_back(const array_of_node_bitset_t &domin, int m, int n) const

  • bool path_back(const edge_mapper_t &et, int m, int n) const

  • iterator begin() const

  • iterator end()

  • int front()

  • void inc(iterator &p, int n=1) const

  • virtual int hexapi goup(int node) const

fnumber_t

  • int calc_max_exp() const

  • bool is_nan() const

minsn_t

  • bool was_unpaired() const

mba_t

  • mblock_t *hexapi split_block(mblock_t *blk, minsn_t *start_insn)

  • merror_t hexapi inline_func(codegen_t &cdg, int blknum, mba_ranges_t &ranges, int decomp_flags=0, int inline_flags=0)

  • const stkpnt_t *hexapi locate_stkpnt(ea_t ea) const

codegen_t

  • void hexapi clear()

vd_failure_t

  • virtual const char *what() const noexcept override

Modified APIs

In 8.4
In 9.0

void hexapi save_user_labels2(ea_t func_ea, const user_labels_t *user_labels, const cfunc_t *func=nullptr)

void hexapi save_user_labels(ea_t func_ea, const user_labels_t *user_labels, const cfunc_t *func=nullptr)

user_labels_t *hexapi restore_user_labels2(ea_t func_ea, const cfunc_t *func=nullptr)

user_labels_t *hexapi restore_user_labels(ea_t func_ea, const cfunc_t *func=nullptr)

stkvar_ref_t

In 8.4
In 9.0

member_t *hexapi get_stkvar(uval_t *p_off=nullptr) const

ssize_t hexapi get_stkvar(udm_t *udm=nullptr, uval_t *p_off=nullptr) const

mop_t

In 8.4
In 9.0

member_t *get_stkvar(uval_t *p_off) const

ssize_t get_stkvar(udm_t *udm=nullptr, uval_t *p_off=nullptr) const

mba_t

In 8.4
In 9.0

member_t *get_stkvar(sval_t vd_stkoff, uval_t *poff) const

ssize_t get_stkvar(udm_t *udm, sval_t vd_stkoff, uval_t *poff=nullptr) const

const mblock_t *get_mblock(int n) const

const mblock_t *get_mblock(uint n) const

mblock_t *get_mblock(int n)

mblock_t *get_mblock(uint n)

bool hexapi combine_blocks()

bool hexapi merge_blocks()

valrng_t

In 8.4
In 9.0

bool cvt_to_cmp(cmpop_t *cmp, uvlr_t *val, bool strict) const

bool valrng_t::cvt_to_cmp(cmpop_t *cmp, uvlr_t *val) const

Removed APIs:

  • bool hexapi get_member_type(const member_t *mptr, tinfo_t *type)

  • bool hexapi checkout_hexrays_license(bool silent)

  • bool get_member_type(const member_t *mptr, tinfo_t *type)

valrng_t

  • static uvlr_t max_value(int size_)

  • static uvlr_t min_svalue(int size_)

  • static uvlr_t max_svalue(int size_)

ctree_item_t

  • member_t *hexapi get_memptr(struc_t **p_sptr=nullptr) const

ctree_parentee_t

  • cblock_t *get_block()

vdui_t

  • bool hexapi set_strmem_type(struc_t *sptr, member_t *mptr)

  • bool hexapi rename_strmem(struc_t *sptr, member_t *mptr)

graph.hpp

Removed classes/structures

Modified classes/structures

In 8.4
In 9.0

class abstract_graph_t

class drawable_graph_t

class mutable_graph_t

class interactive_graph_t

Modified APIs

In 8.4
In 9.0

mutable_graph_t *idaapi create_mutable_graph(uval_t id)

interactive_graph_t *idaapi create_interactive_graph(uval_t id)

mutable_graph_t *idaapi create_disasm_graph(ea_t ea)

interactive_graph_t *idaapi create_disasm_graph(ea_t ea)

mutable_graph_t *idaapi create_disasm_graph(const rangevec_t &ranges)

interactive_graph_t *idaapi create_disasm_graph(const rangevec_t &ranges)

mutable_graph_t *idaapi get_viewer_graph(graph_viewer_t *gv)

interactive_graph_t *idaapi get_viewer_graph(graph_viewer_t *gv)

void idaapi set_viewer_graph(graph_viewer_t *gv, mutable_graph_t *g)

void idaapi set_viewer_graph(graph_viewer_t *gv, interactive_graph_t *g)

void idaapi delete_mutable_graph(mutable_graph_t *g)

void idaapi delete_interactive_graph(interactive_graph_t *g)

void idaapi mutable_graph_t::del_custom_layout(void)

void idaapi interactive_graph_t::del_custom_layout(void)

void idaapi mutable_graph_t::set_custom_layout(void) const

void idaapi interactive_graph_t::set_custom_layout(void) const

void idaapi mutable_graph_t::set_graph_groups(void) const

void idaapi interactive_graph_t::set_graph_groups(void) const

void idaapi mutable_graph_t::clear(void)

void idaapi interactive_graph_t::clear(void)

bool idaapi mutable_graph_t::create_digraph_layout(void)

bool idaapi interactive_graph_t::create_digraph_layout(void)

bool idaapi abstract_graph_t::create_tree_layout(void)

bool idaapi drawable_graph_t::create_tree_layout(void)

bool idaapi abstract_graph_t::create_circle_layout(point_t c, int radius)

bool idaapi drawable_graph_t::create_circle_layout(point_t c, int radius)

int idaapi mutable_graph_t::get_node_representative(int node)

int idaapi interactive_graph_t::get_node_representative(int node)

int idaapi mutable_graph_t::_find_subgraph_node(int gr, int n) const

int idaapi interactive_graph_t::_find_subgraph_node(int gr, int n) const

int idaapi mutable_graph_t::create_group(const intvec_t &_nodes)

int idaapi interactive_graph_t::create_group(const intvec_t &_nodes)

bool idaapi mutable_graph_t::get_custom_layout(void)

bool idaapi interactive_graph_t::get_custom_layout(void)

bool idaapi mutable_graph_t::get_graph_groups(void)

bool idaapi interactive_graph_t::get_graph_groups(void)

bool idaapi mutable_graph_t::empty(void) const

bool idaapi interactive_graph_t::empty(void) const

bool idaapi mutable_graph_t::is_visible_node(int node) const

bool idaapi interactive_graph_t::is_visible_node(int node) const

bool idaapi mutable_graph_t::delete_group(int group)

bool idaapi interactive_graph_t::delete_group(int group)

bool idaapi mutable_graph_t::change_group_visibility(int gr, bool exp)

bool idaapi interactive_graph_t::change_group_visibility(int gr, bool exp)

bool idaapi mutable_graph_t::set_edge(edge_t e, const edge_info_t *ei)

bool idaapi interactive_graph_t::set_edge(edge_t e, const edge_info_t *ei)

int idaapi mutable_graph_t::node_qty(void) const

int idaapi interactive_graph_t::node_qty(void) const

rect_t &idaapi mutable_graph_t::nrect(int n)

rect_t &idaapi interactive_graph_t::nrect(int n)

idalib.hpp

The new header for the IDA library

Added APIs

  • idaman int ida_export init_library(int argc = 0, char *argv[] = nullptr)

  • idaman int ida_export open_database(const char *file_path, bool run_auto)

  • idaman void ida_export close_database(bool save)

idd.hpp

Added APIs

  • idaman int ida_export cpu2ieee(fpvalue_t *ieee_out, const void *cpu_fpval, int size)

  • idaman int ida_export ieee2cpu(void *cpu_fpval, const fpvalue_t &ieee_out, int size)

idp.hpp

Removed APIs:

  • processor_t::has_realcvt(void) const

Modified APIs:

In 8.4
In 9.0

static ssize_t processor_t::gen_stkvar_def(outctx_t &ctx, const class member_t *mptr, sval_t v)

static ssize_t processor_t::gen_stkvar_def(outctx_t &ctx, const struct udm_t *mptr, sval_t v, tid_t tid)

Added APIs

procmod_t

  • const op_t *procmod_t::make_op_reg(op_t *op, int reg, int8 dtype = -1) const

  • const op_t *procmod_t::make_op_imm(op_t *op, uval_t val, int8 dtype = -1) const

  • const op_t *procmod_t::make_op_displ(op_t *op, int base_reg, uval_t displ, int8 dtype = -1) const

  • const op_t *procmod_t::make_op_phrase(op_t *op, int base_reg, int index_reg, int8 dtype = -1) const

kernwin.hpp

Removed APIs

  • open_enums_window(tid_t const_id=BADADDR)

  • open_structs_window(tid_t id=BADADDR, uval_t offset=0)

  • choose_struc(const char *title)

  • choose_enum_by_value(const char *title, enum_t default_id, uint64 value, int nbytes, uchar *serial)

Removed classes/structures

  • class enumplace_t

  • class structplace_t

Added APIs

  • bool is_ida_library(char *path, size_t pathsize, void** handle)

tagged_line_section_t

  • const tagged_line_section_t::tagged_line_section_t *nearest_before(const tagged_line_section_t &range, cpidx_t start, color_t tag=0) const

  • const tagged_line_section_t::tagged_line_section_t *nearest_after(const tagged_line_section_t &range, cpidx_t start, color_t tag=0) const

chooser_base_t

  • bool chooser_base_t::has_widget_lifecycle() const

Modified APIs

In 8.4
In 9.0

ea_t choose_stkvar_xref(func_t *pfn, member_t *mptr)

ea_t choose_stkvar_xref(func_t *pfn, tid_t srkvar_tid)

bool tagged_line_section_t::substr(qstring *out, const qstring &in) const

bool tagged_line_section_t::substr(qstring *out,,const qstring &in, const tagged_line_section_t *end = nullptr) const

lex.hpp

Modified APIs

In 8.4
In 9.0

idaman lexer_t *ida_export create_lexer(const char *const *keys, size_t size, void *ud=nullptr)

idaman lexer_t *ida_export create_lexer(const char *const *keys, size_t size, void *ud=nullptr, uint32 macro_flags=0)

lines.hpp

Removed APIs

  • set_user_defined_prefix(size_t width, void (idaapi *get_user_defined_prefix)(qstring *buf, ea_t ea, int lnnum, int indent, const char *line))

Modified APIs

In 8.4
In 9.0

idaman void ida_export update_extra_cmt(ea_t ea, int what, const char *str)

idaman bool ida_export update_extra_cmt(ea_t ea, int what, const char *str)

idaman void ida_export del_extra_cmt(ea_t ea, int what)

idaman bool ida_export del_extra_cmt(ea_t ea, int what)

nalt.hpp

Modified APIs

In 8.4
In 9.0

idaman int ida_export validate_idb_names2(bool do_repair)

idaman int ida_export validate_idb_names(bool do_repair)

parsejson.hpp

Added APIs

jvalue_t

  • void jvalue_t::set_str(const char *s)

jobj_t

  • void jobj_t::put(const char *key, const jobj_t &value)

pro.h

Removed APIs

  • unpack_memory(void *buf, size_t size, const uchar **pptr, const uchar *end)

Added APIs

  • idaman THREAD_SAFE bool ida_export get_login_name(qstring *out)

  • idaman void *ida_export pipe_process(qhandle_t *read_handle, qhandle_t *write_handle, launch_process_params_t *lpp, qstring *errbuf=nullptr)

bytevec_t

  • qstring bytevec_t::tohex(bool upper_case=true) const

qlist

  • void qlist::splice(iterator pos, qlist &other, iterator first, iterator last)

Added classes/structures

  • struct memory_serializer_t

regex.hpp

Removed APIs

  • regcomp(struct regex_t *preg, const char *pattern, int cflags)

  • regerror(int errcode, const struct regex_t *preg, char *errbuf, size_t errbuf_size)

  • regexec(const struct regex_t *preg, const char *str, size_t nmatch, struct regmatch_t pmatch[], int eflags)

  • regfree(struct regex_t *preg)

regfinder.hpp

Modified APIs

In 8.4
In 9.0

void ida_export reg_finder_invalidate_cache(reg_finder_t *_this, ea_t ea)

void ida_export reg_finder_invalidate_cache(reg_finder_t *_this, ea_t to, ea_t from)

bool ida_export reg_finder_calc_op_addr(reg_finder_t *_this, reg_value_info_t *addr, const op_t *memop, const insn_t *insn, ea_t ea, ea_t ds)

bool ida_export reg_finder_calc_op_addr(reg_finder_t *_this, reg_value_info_t *addr, const op_t *memop, const insn_t *insn, ea_t ea, ea_t ds, int max_depth)

bool ida_export reg_finder_may_modify_stkvars(const reg_finder_t *_this, reg_finder_op_t op, const insn_t *insn)

bool ida_export reg_finder_may_modify_stkvar(const reg_finder_t *_this, reg_finder_op_t op, const insn_t *insn)

void idaapi invalidate_regfinder_cache(ea_t ea = BADADDR)

void idaapi invalidate_regfinder_cache(ea_t to = BADADDR, ea_t from = BADADDR)

Removed APIs

  • reg_finder_op_make_rfop(func_t *pfn, const insn_t &insn, const op_t &op)

Added APIs

  • void reg_value_info_t::movt(const reg_value_info_t &r, const insn_t &insn)

  • static int reg_finder_op_t::get_op_width(const op_t &op)

  • static reg_finder_op_t reg_finder_op_t::make_stkoff(sval_t stkoff, int width)

registry.hpp

Removed APIs

  • reg_load(void)

  • reg_flush(void)

search.hpp

Removed APIs

  • user2bin(uchar *, uchar *, ea_t, const char *, int, bool)

  • find_binary(ea_t, ea_t, const char *, int, int)

typeinf.hpp

Removed APIs

  • set_numbered_type(til_t *ti, uint32 ordinal, int ntf_flags, const char *name, const type_t *type, const p_list *fields=nullptr, const char *cmt=nullptr, const p_list *fldcmts=nullptr, const sclass_t *sclass=nullptr)

  • get_ordinal_from_idb_type(const char *name, const type_t *type)

  • is_autosync(const char *name, const type_t *type)

  • is_autosync(const char *name, const tinfo_t &tif)

  • import_type(const til_t *til, int idx, const char *name, int flags=0)

  • get_udm_tid(const udm_t *udm, const char *udt_name)

Modified APIs

In 8.4
In 9.0

bool ida_export create_tinfo2(tinfo_t *_this, type_t bt, type_t bt2, void *ptr)

bool ida_export create_tinfo(tinfo_t *_this, type_t bt, type_t bt2, void *ptr)

int ida_export verify_tinfo(uint32 typid)

int ida_export verify_tinfo(typid_t typid)

bool ida_export get_tinfo_details2(uint32 typid, type_t bt2, void *buf)

bool ida_export get_tinfo_details(typid_t typid, type_t bt2, void *buf)

size_t ida_export get_tinfo_size(uint32 *p_effalign, uint32 typid, int gts_code)

size_t ida_export get_tinfo_size(uint32 *p_effalign, typid_t typid, int gts_code)

size_t ida_export get_tinfo_pdata(void *outptr, uint32 typid, int what)

size_t ida_export get_tinfo_pdata(void *outptr, typid_t typid, int what)

size_t ida_export get_tinfo_property(uint32 typid, int gta_prop)

size_t ida_export get_tinfo_property(typid_t typid, int gta_prop)

size_t ida_export get_tinfo_property4(uint32 typid, int gta_prop, size_t p1, size_t p2, size_t p3, size_t p4)

size_t ida_export get_tinfo_property4(typid_t typid, int gta_prop, size_t p1, size_t p2, size_t p3, size_t p4)

bool ida_export deserialize_tinfo2(tinfo_t *tif, const til_t *til, const type_t **ptype, const p_list **pfields, const p_list **pfldcmts, const char *cmt)

bool ida_export deserialize_tinfo(tinfo_t *tif, const til_t *til, const type_t **ptype, const p_list **pfields, const p_list **pfldcmts, const char *cmt)

int ida_export find_tinfo_udt_member(udm_t *udm, uint32 typid, int strmem_flags)

int ida_export find_tinfo_udt_member(udm_t *udm, typid_t typid, int strmem_flags)

bool ida_export compare_tinfo(uint32 t1, uint32 t2, int tcflags)

bool ida_export compare_tinfo(typid_t t1, typid_t t2, int tcflags)

int ida_export lexcompare_tinfo(uint32 t1, uint32 t2, int)

int ida_export lexcompare_tinfo(typid_t t1, typid_t t2, int)

uint64 ida_export read_tinfo_bitfield_value(uint32 typid, uint64 v, int bitoff)

uint64 ida_export read_tinfo_bitfield_value(typid_t typid, uint64 v, int bitoff)

uint64 ida_export write_tinfo_bitfield_value(uint32 typid, uint64 dst, uint64 v, int bitoff)

uint64 ida_export write_tinfo_bitfield_value(typid_t typid, uint64 dst, uint64 v, int bitoff)

bool ida_export get_tinfo_attr(uint32 typid, const qstring &key, bytevec_t *bv, bool all_attrs)

bool ida_export get_tinfo_attr(typid_t typid, const qstring &key, bytevec_t *bv, bool all_attrs)

bool ida_export get_tinfo_attrs(uint32 typid, type_attrs_t *tav, bool include_ref_attrs)

bool ida_export get_tinfo_attrs(typid_t typid, type_attrs_t *tav, bool include_ref_attrs)

bool ida_export append_tinfo_covered(rangeset_t *out, uint32 typid, uint64 offset)

bool ida_export append_tinfo_covered(rangeset_t *out, typid_t typid, uint64 offset)

bool ida_export calc_tinfo_gaps(rangeset_t *out, uint32 typid)

bool ida_export calc_tinfo_gaps(rangeset_t *out, typid_t typid)

bool ida_export name_requires_qualifier(qstring *out, uint32 typid, const char *name, uint64 offset)

bool ida_export name_requires_qualifier(qstring *out, typid_t typid, const char *name, uint64 offset)

void ida_export tinfo_get_innermost_udm(tinfo_t *itif, const tinfo_t *tif, uint64 offset, size_t *udm_idx, uint64 *bit_offset)

void ida_export tinfo_get_innermost_udm(tinfo_t *itif, const tinfo_t *tif, uint64 offset, size_t *udm_idx, uint64 *bit_offset, bool return_member_type)

tinfo_code_t tinfo_t::find_edm(edm_t *edm, uint64 value, bmask64_t bmask=DEFMASK64, uchar serial=0) const

ssize_t tinfo_t::find_edm(edm_t *edm, uint64 value, bmask64_t bmask=DEFMASK64, uchar serial=0) const

tinfo_code_t tinfo_t::find_edm(edm_t *edm, const char *name) const

ssize_t tinfo_t::find_edm(edm_t *edm, const char *name) const

bool tinfo_t::get_type_by_edm_name(const char *mname, til_t *til=nullptr)

ssize_t tinfo_t::get_edm_by_name(const char *mname, const til_t *til=nullptr)

void ida_export gen_use_arg_tinfos2(struct argtinfo_helper_t *_this, ea_t caller, func_type_data_t *fti, funcargvec_t *rargs)

void ida_export gen_use_arg_tinfos(struct argtinfo_helper_t *_this, ea_t caller, func_type_data_t *fti, funcargvec_t *rargs)

Added classes/structures

  • struct udm_visitor_t

Added APIs

  • bool ida_export detach_tinfo_t(tinfo_t *_this)

  • bool stroff_as_size(int plen, const tinfo_t &tif, asize_t value)

  • int ida_export visit_stroff_udms(udm_visitor_t &sfv, const tid_t *path, int plen, adiff_t *disp, bool appzero)

  • bool is_one_bit_mask(uval_t mask)

til_t

  • til_t *til_t::find_base(const char *n)

callregs_t

  • void callregs_t::set_registers(reg_kind_t kind, int first_reg, int last_reg)

tinfo_t

  • bool tinfo_t::get_named_type(const char *name, type_t decl_type=BTF_TYPEDEF, bool resolve=true, bool try_ordinal=true)

  • bool tinfo_t::get_numbered_type(uint32 ordinal, type_t decl_type=BTF_TYPEDEF, bool resolve=true)

  • bool tinfo_t::detach()

  • bool tinfo_t::is_punknown()

  • int tinfo_t::find_udm(uint64 offset, int strmem_flags=0) const

  • int tinfo_t::find_udm(const char *name, int strmem_flags=0) const

  • size_t tinfo_t::get_enum_nmembers() const

  • bool tinfo_t::is_empty_enum() const

  • tinfo_code_t tinfo_t::get_enum_repr(value_repr_t *repr) const

  • int tinfo_t::get_enum_width() const

  • uint64 tinfo_t::calc_enum_mask() const

  • tid_t tnfo_t::get_edm_tid(size_t idx) const

  • tinfo_t tinfo_t::get_innermost_member_type(uint64 bitoffset, uint64 *out_bitoffset=nullptr) const

  • bool tinfo_t::is_udm_by_til(size_t idx) const

  • tinfo_code_t tinfo_t::set_udm_by_til(size_t idx, bool on=true, uint etf_flags=0)

  • tinfo_code_t tinfo_t::set_fixed_struct(bool on=true)

  • tinfo_code_t tinfo_t::set_struct_size(size_t new_size)

  • bool tinfo_t::is_fixed_struct() const

  • bool tinfo_t::get_func_frame(const func_t *pfn)

  • bool tinfo_t::is_frame() const

  • ea_t tinfo_t::get_frame_func() const

  • ssize_t tinfo_t::get_stkvar(sval_t *actval, const insn_t &insn, const op_t *x, sval_t v)

  • tinfo_code_t tinfo_t::set_enum_radix(int radix, bool sign, uint etf_flags=0)

  • tinfo_code_t tinfo_t::set_funcarg_type(size_t index, const tinfo_t &tif, uint etf_flags=0)

  • tinfo_code_t tinfo_t::set_func_rettype(const tinfo_t &tif, uint etf_flags=0)

  • tinfo_code_t tinfo_t::del_funcargs(size_t idx1, size_t idx2, uint etf_flags=0)

  • tinfo_code_t tinfo_t::del_funcarg(size_t idx, uint etf_flags=0)

  • tinfo_code_t tinfo_t::add_funcarg(const funcarg_t &farg, uint etf_flags=0, ssize_t idx=-1)

  • tinfo_code_t tinfo_t::set_func_cc(cm_t cc, uint etf_flags=0)

  • tinfo_code_t tinfo_t::set_funcarg_loc(size_t index, const argloc_t &argloc, uint etf_flags=0)

  • tinfo_code_t tinfo_t::et_func_retloc(const argloc_t &argloc, uint etf_flags=0)

func_type_data_t

  • ssize_t func_type_data_t::find_argument(const char *name, size_t from=0, size_t to=size_t(-1)) const

enum_type_data_t

  • tinfo_code_t enum_type_data_t::get_value_repr(value_repr_t *repr) const

  • uchar enum_type_data_t::get_serial(size_t index) const

  • uchar enum_type_data_t::get_max_serial(uint64 value) const

udm_t

  • bool udm_t::is_retaddr() const

  • bool udm_t::is_savregs() const

  • bool udm_t::is_special_member() const

  • bool udm_t::is_by_til() const

  • void udm_t::set_retaddr(bool on=true)

  • void udm_t::set_savregs(bool on=true)

  • void udm_t::set_by_til(bool on=true)

udt_type_data_t

  • bool udt_type_data_t::is_fixed() const

  • void udt_type_data_t::set_fixed(bool on=true)

IDB events

The following table provide a list of IDB events that have been replaced or, in some cases, removed.

Since 7
In 9.0

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

class node_ordering_t See

struct edge_t See

See also for a table providing a list a event replacement and removal.

Introduction
struct.hpp
Removed classes
Removed APIs
enum.hpp
Removed APIs
bytes.hpp
Added APIs
Modified APIs
Removed APIs
dirtree.hpp
Modified APIs
diskio.hpp
Modified APIs
Removed APIs
err.h
Removed APIs
expr.hpp
Modified APIs
frame.hpp
Added APIs
Modified PIs
Removed APIs
funcs.hpp
Added APIs
Removed APIs
gdl.hpp
Added classes/structures
hexrays.hpp
Added classes/structures
Added APIs
lvar_t
lvars_t
simple_graph_t
fnumber_t
minsn_t
mba_t
codegen_t
vd_failure_t
Modified APIs
stkvar_ref_t
mop_t
mba_t
valrng_t
Removed APIs:
valrng_t
ctree_item_t
ctree_parentee_t
vdui_t
graph.hpp
Removed classes/structures
Modified classes/structures
Modified APIs
idalib.hpp
Added APIs
idd.hpp
Added APIs
idp.hpp
Removed APIs:
Modified APIs:
Added APIs
procmod_t
kernwin.hpp
Removed APIs
Removed classes/structures
Added APIs
tagged_line_section_t
chooser_base_t
Modified APIs
lex.hpp
Modified APIs
lines.hpp
Removed APIs
Modified APIs
nalt.hpp
Modified APIs
parsejson.hpp
Added APIs
jvalue_t
jobj_t
pro.h
Removed APIs
Added APIs
bytevec_t
qlist
Added classes/structures
regex.hpp
Removed APIs
regfinder.hpp
Modified APIs
Removed APIs
Added APIs
registry.hpp
Removed APIs
search.hpp
Removed APIs
typeinf.hpp
Removed APIs
Modified APIs
Added classes/structures
Added APIs
til_t
callregs_t
tinfo_t
func_type_data_t
enum_type_data_t
udm_t
udt_type_data_t
IDB events
code
code
IDB events