LogoLogo
IDA 9.0sp1
IDA 9.0sp1
  • 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
      • 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
    • Types
      • 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
    • 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
    • Floating licenses
  • Developer Guide
    • C++ SDK
      • Getting Started
      • Reference
      • Using the Decompiler SDK: Decompiler plugin
      • Examples
      • How to create a plugin?
      • Porting Guide from IDA 8.x to 9.0
    • IDAPython
      • Getting Started
      • Reference
      • Examples
      • How to create a plugin?
      • 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
      • 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
      • Examples
        • Analyzing encrypted code
  • Admin Guide
    • Lumina server
    • Teams server
    • License server
      • Hex-Rays License Server Migration Guide
  • Release Notes
    • IDA 9.1rc
    • IDA 9.0sp1
    • 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

Was this helpful?

Export as PDF
  1. Release Notes

IDA 5.6

  • Debuggers for MIPS and PowerPC Since the Bochs debugger was warmly received, we added two more debuggers: for MIPS and PowerPC. They use the GDBServer protocol to communicate with the target computer.

    For the users who do not have a real MIPS or PowerPC machine handy, we added support for emulating debuggers based on the QEMU processor emulator. As usual, any code snippet can be executed from any arbitrary address: if you wonder what an obscure function does, just position at its beginning and press F4.

    By the way, ARM code can be emulated too!

  • 64-bit debuggers for Linux and Mac OS X 64-bit systems become more and more widespread. We too add more 64-bit support to IDA. This release includes full 64-bit support for Linux and Mac OS X. While we are at it, let us mention the ARM Linux debugger server, for easy debugging of ARM Linux executables.

  • Appcall: facility to call any function from the debugged application While debugging, sometimes there is a need to divert the normal execution flow and to execute a function of your choice in the target application. It could be a debug print function, or a repeated function call with modified arguments... With the new Appcall feature, it is a piece of cake: just enter the function call with arguments in the command line, and it will be called. For example: _printf("Hello world!\n") will print the greeting in the application console window. The possibilities opened by this facility are endless but intelligent fuzzing of selected functions is the one that comes into mind immediately.

  • Significantly improved the speed of the crash dump loader The crash dump loader introduced in IDA v5.5 was quite good but had one major drawback: it was slow. The new release addresses this problem and makes it almost as fast as WinDbg. If a local symbol cache is present, the loading takes just a few seconds. Our user who work a lot with crash dumps will appreciate this feature. We like it ourselves :)

  • Improved Python The Python plugin was greatly improved. Firstly, Python support is now available on all platforms, including Linux and Mac OS X. Secondly, Python scripts can do a lot more now. The graphing API, choosers, appcall are only some of the new features to mention. We will blog about it soon.

  • Improved IDC While we were improving the scripting support, we decided to give another chance to IDC. The new IDC is a object oriented language with references, exceptions and so on. See the help file for more info.

  • Scriptable loaders Before IDA v5.6, file loader modules could be implemented only as C++ DLL modules. This meant that in order to create a file loader, one had to install a C++ compiler, learn how to set up an IDA module project (quite a feat, there are even specialized programs to help programmers with this task), then learn the IDA API, and finally implement a loader.

    Now things are much easier: open your favorite editor and write down a script, either in Python or IDC. If you put your script in the loaders subdirectory, IDA will automatically find and use it, as simple as that. Our SDK has a few scripted loader samples, they are very simple to learn. Who knows, if we implement something similar for processor modules, programming for IDA will finally become manageable.

Other, probably less visible, improvements include a new processor module (NEC V850), more SDK functions, better debugger, etc. The full list is below:

Changelist

Processor Modules

  • 6812: added support for HCS12X XGATE coprocessor instructions (thanks to Alex Bratovic)

  • 6812: support for page registers PPAGE, RPAGE, EPAGE, GPAGE (thanks to Alex Bratovic)

  • ARM: added support for more switches

  • ARM: sequence ADR LR, retaddr ... MOV PC, Rx is recognized as a call

  • AVR: accept -DAVR_MCPU option to set preferred device

  • CLI (.NET): added CLI 2.0 instructions

  • M32R: added support for floating-point constants

  • M7700: better tracking of m and x processor bits

  • PC: added recognition of gcc64 variadic function prologs

  • PPC: conditional branch instructions with hints were not simplified. now we show + or - if the hint overrides default behavior

  • TMS320C55: added several more undocumented dual instructions

  • V850: new processor (with source code). Includes V850E1 variant.

File Formats

  • file loaders can be written in any scripting language (Python, IDC, etc)

  • ELF,AVR: Can load ELF-32 for AVR CPU.

  • ELF: better handling of relocations and symbols in SuperH files

  • ELF: some imports were not renamed in Solaris 10 SPARC files (dlopen etc)

  • ELF: support for ARM TLS relocations

  • MACHO: information about dylibs (when available) is added to the imports list

  • MS DOS: added support for rebasing databases (thanks to Jeremy Cooper)

Kernel

  • a local type can be mapped (redirected) to another local type. this feature can be used if a type was created twice

  • added FLIRT signatures for ICL v11.1

  • updated Mac OS X type libraries (and added macosx64.til)

  • updated many Windows .ids files to the latest SDK and DDK

  • IDAPython is now available in 64-bit version of IDA

Scripts & SDK

  • IDC: added comma operator

  • IDC: added hasattr(), setattr(), getattr(), delattr() function to work with IDC objects

  • IDC: added SetTargetAssembler()

  • IDC: added DecodeInstruction()

  • IDC: added support for 64-bit numbers (64-bit constants are declared with i64 suffix: 1234i64)

  • IDC: embedded zeroes are allowed in strings; simple Unicode strings can be created using L"string"; added strset() to create strings filled with the specified character

  • IDC: functions are first class citizens in IDC: they can be passed as arguments, pointers to functions are possible, etc.

  • IDC: renamed form() to sprintf() and removed the result length limit

  • SDK: added "const" keywords to many public arguments and structure fields (to suppress frequent compiler warnings)

  • SDK: added a new idc_value_t type: VT_STR2. It is similar to VT_STR but keeps its value in a qstring. This allows us to store strings with embedded zeroes

  • SDK: added appcall() to call functions from the debugged application

  • SDK: added debugger_t.update_call_stack() for debugger module specific stack tracing mechanisms

  • SDK: added functions to manipulate IDC classes and class methods

  • SDK: added get_strmem_by_name()

  • SDK: added PR_DEFSEG64 (if set, segments are 64-bit by default)

  • SDK: added set_chooser_attribute_cb(). It can be used to specify colors and font attributes for each chooser line (GUI).

  • SDK: added set_dock_pos() to control the docking position of forms

  • SDK: added support for custom fixup types

  • SDK: added til_symbol_t structure and choose_named_type2() function

  • SDK: added user2qstr() and qstr2user() functions

  • SDK: choose_ioport_device() can filter device names and display a shorter list

  • SDK: If choose_ioport_device() with a filter callback generates a list of only one entry, that entry is returned without showing the dialog

  • SDK: It is possible to create persistent forms (which are not closed when switching to and from debug mode) with the FORM_PERSIST flag and open_tform()

  • SDK: multiple external languages can be installed; IDC is installed as an external language too

  • SDK: redefined new/delete operators in pro.h so that all plugins use common memory allocation functions

  • SDK: the dbg_suspend_process event is generated after synchronizing IDA state with the process state

User Interface

  • GUI: Added search facility to Notepad

  • GUI: Show function name in the stack trace window

  • GUI: Tab style can be configured in idagui.cfg

  • UI: "Add standard structure/enum" dialogs now show in which type library each symbol is defined

  • UI: fixups (relocations) are ignored while debugging since they are already applied by the system loader; this gives better disassembly

  • UI: hex dump and stack view scroll one line on mouse wheel turn

  • UI: show structure sizes in "Choose structure for offset" window

Debugger

  • added ARM Linux debugger backend

  • added Linux x64 debugger backend

  • added Mac OS X 64-bit debugger backend

  • OSX: mac_server debug server support for OSX 10.6 (Snow Leopard)

  • BOCHS: Bochs debugger plugin SDK now allows users to execute their initialization code from ring0

  • BOCHS: Bochs PE loader now supports DllMain() to run DLLs without a DLL loader program

  • debugger: debugger can now step through and over macro instructions. When stepping over, the whole macro is skipped; when single stepping, we still step one instruction at a time.

  • debugger: OSX: added support for hardware breakpoints

  • WINDBG: It is now possible to select which type of messages from the debugger engine to show in IDA log window

Bugfixes

  • BUGFIX: "edit, string, dos string" was creating a zero terminated string, not a dos string

  • BUGFIX: 8051: IDA could crash if "8051 Cross-Assembler by MetaLink Corporation" was selected

  • BUGFIX: address expression in the hint title could be incorrect for 16-bit programs

  • BUGFIX: array index was always displayed in decimal in case of array of structures

  • BUGFIX: big-endian SuperH ELF files could not be loaded

  • BUGFIX: Breakpoints added inside bochs_startup() were not being triggered unless the debugger is suspended at least once.

  • BUGFIX: build_funcarg_info(): retloc for EDX:EAX was incorrect for x86

  • BUGFIX: chooser was computing wrong width / heights in some cases (when themes are enabled), resulting is unnecessary scrollbars in e.g. cross references list

  • BUGFIX: cli: defined but not disassembled bytes were not displayed in the listing

  • BUGFIX: cli: some instructions could display garbage if token operand was not defined in the metadata

  • BUGFIX: clp.dll could raise exceptions

  • BUGFIX: debugger: DLL breakpoints didn't work if the DLL was unloaded and then loaded again

  • BUGFIX: debugger: the run to command (F4) could fail if the application was rebased; the queued debugger commands were using wrong (non-rebased) addresses

  • BUGFIX: division by zero when zooming in/out an empty graph view

  • BUGFIX: Dump typeinfo to IDC was not restoring struct members comment properly

  • BUGFIX: ELF/ARM: Thumb functions were not detected properly in some newer EABI files

  • BUGFIX: ELF: handle the case when DYNAMIC segment is longer than the actual .dynamic section and no section table is present

  • BUGFIX: ELF: some files with segments near the top of address space could not be loaded; if there is no space for externs after the highest segment, we try to find a hole somewhere else

  • BUGFIX: even if the AF2_NORET flag was clear, IDA was still marking functions from noret.cfg as not returning

  • BUGFIX: get_max_ascii_length() could fail because of a missing segment while the debugger is running because of stale segment information

  • BUGFIX: get_nsec_stamp() was returning wrong values on long-running Windows systems

  • BUGFIX: get_struc_id() could return bogus value if the name existed in database (e.g. as an enumeration)

  • BUGFIX: GUI could crash in some cases

  • BUGFIX: GUI: toolbars were not restored as part of the default desktop layout

  • BUGFIX: IDA could crash if processor module returned bogus itype values

  • BUGFIX: IDA could crash trying to display some insane ARM instructions

  • BUGFIX: IDA could endlessly loop analyzing functions with erroneously detected >gt;2GB stack frame

  • BUGFIX: IDA could interr because of failed attempt to switch to graph mode on a too complex function

  • BUGFIX: idag would not change the current directory to the input file directory if the file was selected using the File,Open menu item

  • BUGFIX: idaw could crash if a fixed plugin tried to add a menu item

  • BUGFIX: if the input file was not readable, idag would exit silently

  • BUGFIX: if the instant debugger failed to set a temporary breakpoint at the entry point, it would still resume the process

  • BUGFIX: if the program got rebased because of a debugger event, the active breakpoints would not be moved to the new addresses

  • BUGFIX: if was impossible to enter expressions in the IDC command line after installing an extlang, they would be interpreted by the extlang, not by IDC

  • BUGFIX: in some cases, a form could have wrong menu items if activated from a closing form

  • BUGFIX: in some cases, IDA could crash while switching desktops

  • BUGFIX: it was impossible to add/edit hardware breakpoints without an active debugger if a remote host was specified

  • BUGFIX: it was impossible to change the memory model from the user interface (Options, Compiler)

  • BUGFIX: it was impossible to specify string parameters with the -D/-d command line options

  • BUGFIX: it was impossible to use user-defined breakpoints in ntdll_LdrInit... functions on Windows 7

  • BUGFIX: it was not possible to create a 64-bit segment using the GUI in idag64

  • BUGFIX: Linux debugger was not using names from loaded modules

  • BUGFIX: Linux debugger: sometimes debug server could exit with message "td_ta_set_event: generic error"

  • BUGFIX: M32R: FPU instructions were decoded incorrectly

  • BUGFIX: M7700: immediate operands were improperly converted into I/O register names

  • BUGFIX: Notepad window cursor was being reset each time the notepad is docked or undocked

  • BUGFIX: PDB: enum values -1, -2 etc were not converted properly when importing PDB types

  • BUGFIX: PDB: IDA could crash when parsing PDBs using msdia71.dll (from VS2003)

  • BUGFIX: PE: IDA could hang on some PE files with corrupted export table

  • BUGFIX: PE: TLS directory was not handled if it had size of 0 (Windows loader ignores the size field).

  • BUGFIX: rebasing the database could lead to the loss of the information about the first function of each segment, except the first segment provided that there are no gaps between segments

  • BUGFIX: refreshing stack trace window could crash in some cases

  • BUGFIX: resolving ordinal types would not return their names and this would lead to superfluous casts in the decompiler

  • BUGFIX: SDK: get_next_module() was buggy

  • BUGFIX: SDK: the width field of edge_info_t struct was ignored for custom graphs

  • BUGFIX: single stepping would break even if an event unrelated to stepping occurred

  • BUGFIX: some information about address 00000000 could be lost when upgrading database to 5.4+ format.

  • BUGFIX: some tms320c64+ instructions were not recognized

  • BUGFIX: the navigation bar was not using the full width of the window without having to undock, enlarge and redock it every time

  • BUGFIX: The register window was not being restored properly all the time

  • BUGFIX: the user could not edit the exception list before starting the instant debugger

  • BUGFIX: TMS320C55: some instructions were disassembled incorrectly

  • BUGFIX: UI: IDA sometimes displayed "Failed to set data for ''" message under Vista

  • BUGFIX: UI: the current item indicator in choosers could disappear on resizing the window

  • BUGFIX: under Linux/OSX, the ~/.idapro/ida.cfd file could get corrupted if multiple copies of IDA were run simultaneously

  • BUGFIX: viewer_set_titlebar_height() was not refreshing the graph with the new titlebar height. now it happens automatically

  • BUGFIX: Windbg and Bochs/diskimg loader were returning stale memory layout information in some cases

  • BUGFIX: Windbg debugger module would report wrong number of loaded modules when attaching to kernel target

  • BUGFIX: windbg/bochs CLI handlers could fail a legit command if the previous command failed.

  • BUGFIX: Windbg: the ".hh" command was not working

Last updated 5 months ago

Was this helpful?