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

Was this helpful?

Export as PDF
  1. Release Notes

IDA 7.4

Last updated 7 months ago

Was this helpful?

IDA 7.4.191011 October 11, 2019

Highlights

Welcome to IDA 7.4! We are happy to announce that the new version of IDA is available!

  • Python 3 support

    As , IDA 7.4 comes with Python 3 support out of the box. Since the vast majority of existing scripts and plugins were written for Python 2, it is still supported and remains the default. However, you don't have to be stuck with one version: it is possible to switch between Python 2 and Python 3 and even between different versions of Python 3 without reinstalling IDA.

    We have prepared for anyone who elects to go with Python 3, and might have to do some adjustments to their scripts.

  • Python 2: 6.95 compatibility APIs OFF by default

    IDA 7.4 also . We have written a for helping with this as well.

  • New processor modules:

    S390(z/Architecture)

    Renesas M16C/80, M32C and R32C.

    IDA's processor list keeps expanding. Are we missing something that you often deal with? Let us know!

  • New structure editor

    This editor is available in the Local Types window and lets you easily see offsets and sizes of structure members.

  • Simplified C++ names

    C++ symbols can be notoriously long, especially with all the default template parameters expanded. We have added some simple rules to collapse such names back to their simplified form (currently covering most STL containers). You can also add your own rules by editing goodname.cfg.

  • expanded GDB support

    Tricore, 68K, RH850 are now supported via the GDB protocol. This can be useful for debugging code in a simulator like QEMU or TRACE32.

  • Decompiler improvements

    In addition to the constant improvements to the decompiler engine (see ) we also keep tweaking the UI based on the customers' feedback. Just a few examples from this release:

    • matching parentheses/brackets are now highlighted in the pseudocode and you can quickly jump between them (default hotkey: '%')

    • local variable declarations can be collapsed by default

    • can be easily created in the "Convert to struct *" dialog

    • "Global cross-references" list is available in the pseudocode view for structure members and enums (of course, the results will vary depending on how well your database is populated with types). Results are shown as decompiled code lines unlike standard xrefs which show disassembly. The default hotkey is Shift-X.

Complete changelist

  • Processor Modules

    • + 68K: allow using special labels A5BASE and A4BASE for a5- and a4-relative addressing in any file format, not just Palm PRC

    • + ARM: add PLDW A32/T32 instruction

    • + ARM: add support for A32 and T32 instructions from ARMv8 Cryptographic Extension

    • + ARM: implemented ARMv8 FPU instructions for AArch32 state (floating-point conditional select etc.)

    • + ARM: implement ARMv8 SIMD instructions for AArch32

    • + ARM: ARMv8.1 AArch32 rdma extension support (VQRDMLAH/VQRDMLSH)

    • + ARM: assume that BRK stops execution on iOS

    • + ARM: support for new A64 switch variation from iOS 13

    • + ARM: support AArch64 ILP32 files (A64 code in ELF32 container)

    • + PC: added option that controls recognition of thunk functions

    • + PPC: added support for Power ISA Version 3.0 B

    • + PPC: support switches that use e_slwi instruction

    • + PPC: support switches that use 'lr' register instead of 'ctr' for branching

    • + S390: new processor module for the IBM S/390 and z/Architecture processors (only ELF format is supported for now)

    • + M16C/80: new processor family from the Renesas M16C series

    • + R32C: new processor family from the Renesas M16C series

  • File Formats

    • + ELF: added basic support for MSP430 files (no handling of e_flags, no relocations)

    • + PDB: automatically fallback to MSDIA for old MSF 2.0 PDB files (Windows only)

    • + Amiga: load hunk files to 0x10000 by default since area around 0 is used by the OS

    • + MACHO: mark sections of the __DATA_CONST segment as read-only

  • Debugger

    • + DEBUGGER: added support for Motorola 68K processors

    • + DEBUGGER: added support for Renesas RH850 processors

    • + DEBUGGER: added support for Tricore processors

    • + DEBUGGER: GDB: added support for Lauterbach's TRACE32 simulator

    • + DEBUGGER: iOS: added support for iPadOS 13

  • Kernel/Misc

    • + kernel: improved data coagulation

    • + kernel: improved function recognition

    • + kernel: producing HTML will now put the colors in CSS classes rather than hardcoding them for each element

    • + kernel: the function with a tail cannot be a thunk function

    • + kernel: use NaN, +Inf or -Inf for floating-point numbers

    • + kernel: use regular expressions to beautify the IDA names (e.g. STL template names). See cfg/goodname.cfg for details

    • + kernel: added new ABI bit ABI_HUGEARG_ALIGN: use natural type alignment for an argument even if its alignment exceeds double native word size

    • + FLAIR: PCF: support more TMS320C55 COFF relocations

    • + FLAIR: removed support for parsing omf166 files

    • + FLIRT: Added signatures for vc1422, vc1423 (Visual Studio 2019.2, 2019.3)

    • + FLIRT: Added MFC signatures for vc1422,vc1423 (Visual Studio 2019.2, 2019.3)

  • User Interface

    • + ui/qt: added "Clone" command to the "Execute script" widget

    • + ui/qt: added get_custom_viewer_location() to retrieve locations that are suitable to be used with custom_viewer_jump()

    • + ui/qt: added user-contributed 'darcula' theme

    • + ui/qt: mouse Ctrl+clicking in the navigation band will cause IDA to add an entry to the navigation history

    • + ui/qt: mouse Shift+clicking in the navigation band will cause IDA to select text in the disassembly listing

    • + ui/qt: pressing <Alt+Enter> in choosers with addresses will jump to that address in a new disassembly view

    • + ui/qt: refactored both the "Edit", and the context menu for setting custom data types and formats

    • + ui/qt: the 'Colors' dialog now provides an "Apply" button, making it easier to see the real impact of changes on the application's widgets

    • + ui/qt: Local Types editor now shows sizes and offsets of structure and its fields during editing

    • + ui: by default do not ask for a confirmation of actions which can be easily reverted by Undo, e.g. ('detach function tail', 'Undefine' and 'Set function end').

    • + ui: log "Don't display this message again" messages into the Output Window

  • Scripts & SDK

    • + IDAPython: added support for Python 3.x (default is still 2.7)

    • + IDAPython: Python script and plugin samples are now shipped with IDA in "python/examples" subdirectory

    • + IDAPython: added an example how to use show_wait_box()/hide_wait_box()

    • + IDAPython: exposed place_t::serialize() & place_t::deserialize()

    • SDK: added HIF_NOCASE to set_highlight() for programmatically setting a case-insensitive highlight.

  • Decompilers

    • + hexrays: added 'show global xrefs'; it works for struct and enum members

    • + hexrays: added support for highlighting matching parentheses pairs

    • + hexrays: added shortcut "%" to jump to the matching parenthesis or (curly/square) bracket in the pseudocode window

    • + hexrays: added config var COLLAPSE_LVARS to collapse local variables declarations by default

    • + hexrays: added support for the "format" attribute when parsing ellipsis args for called functions

    • + hexrays: added support for _m_prefetch, _m_prefetchw intrinsics

    • + hexrays: added support for the _InterlockedCompareExchange64 intrinsic

    • + hexrays: added support for more software floating-point helpers (floatdidf etc.)

    • + hexrays: try to automatically convert numbers to symbolic constants in expressions involving enum types

    • + hexrays: better removal of the references to __security cookie

    • + hexrays: create arrays more agressively using heuristic rules

    • + hexrays: now we try to rename the variables that receive the return value of GetProcAddress

    • + hexrays: decompiler may automatically create variable mapping in simple cases (e.g. for copies of input arguments)

    • + hexrays: sdk: added DECOMP_ALL_BLKS to include unreachable blocks in the microcode

    • + hexrays: sdk: added modify_user_lvar_info()

    • + hexrays: stop hiding read accesses to fs:0

    • + hexrays: user may enter pointer shift delta in "Convert to struct *..." action to prepare the shifted pointer

    • + hexrays: x86: int 3/__debugbreak() now only stops execution flow in case it happens in disassembly (controlled by the "Analyze int 3 instructions" processor-specific options)

  • BUGFIXES

    • BUGFIX: 6816: IDA could crash when opening saved IDBs for the 6816 processor (and potentially some others)

    • BUGFIX: ARC: function arguments initialized in delay slots were not commented properly

    • BUGFIX: ARM64: in some cases invalid instructions could be erroneously decoded as SMOV/UMOV

    • BUGFIX: ARM: analysis could loop endlessly if a location could be interpreted as both an offset and an OWORD. This was common in iOS 13.1 kernelcaches.

    • BUGFIX: ARM: registers S0-S31 could not be used in __usercall function prototypes

    • BUGFIX: EBC: IDA could fail to disassemble some EBC instructions

    • BUGFIX: M16C: PUSHC instruction was not changing the stack pointer value as it should

    • BUGFIX: MIPS: ABI selection could be set incorrectly on reopening a saved database

    • BUGFIX: MIPS: mftr/mttr instructions could be decoded incorrectly

    • BUGFIX: MSP430: function flow graphs were wrong because call instructions were not marked as such

    • BUGFIX: MSP430: instructions with .rpt prefix could not be decoded

    • BUGFIX: MSP430: suba and incda instructions were not handled properly when tracking SP changes

    • BUGFIX: PIC16: relative jump/call destination address was being truncated to 16 bits

    • BUGFIX: PPC: fixed incorrect value of LR after the VLE call in the regtracker

    • BUGFIX: PPC: ida was creating 16-bit stack variables instead of 8-bit stack variables in some cases; the difference in the listings is very minor

    • BUGFIX: DWARF: IDA could fail to determine the proper type for some prototypes arguments

    • BUGFIX: DWARF: IDA could INTERR with code 30304 with certain types of constructs in the debug information

    • BUGFIX: PDB: IDA could crash when parsing a debug entry with size 0

    • BUGFIX: PE: IDA could complain about "invalid unwind data" in valid files (such as Windows kernel)

    • BUGFIX: SWIFT: IDA would fail to demangle names with "j_" prefixes and "_N" suffixes

    • BUGFIX: DBG: gdb: check for network error when setting the resume mode

    • BUGFIX: DBG: ios,xnu debuggers used incorrect flag names for arm64 CPSR register

    • BUGFIX: DBG: linux_server could crash (nullptr dereference) because of a malicious client

    • BUGFIX: DBG: linux_server would crash if a malicious copy of ida would send 'close_file' request on an unopened channel

    • BUGFIX: DBG: malicious copy of ida could crash the debugger server

    • BUGFIX: DBG: password protected debug server could crash if a malicious copy of IDA was sending a packet without a password

    • BUGFIX: kernel: IDA (32-bit) could hang when analyzing data close to the maximum address (0xFFFFFFFF)

    • BUGFIX: kernel: IDA could generate too many empty lines for an unnamed entry in a special segment

    • BUGFIX: kernel: IDA could truncate Delphi strings representation

    • BUGFIX: kernel: now we delete info about patched bytes when segment bounds were changed and addresses disabled

    • BUGFIX: kernel: on an updgrade from a pre-7.0 database, Unicode strings in structures would be converted incorrectly

    • BUGFIX: kernel: saving more than 65535 segment selectors was impossible

    • BUGFIX: idat: cursor was positioned wrongly on a chooser line when using fast search

    • BUGFIX: idat: disassembly listing was not refreshed after changing the listing options

    • BUGFIX: idat: ida was truncating the beginning of all too long names in choosers, but this logic should be applied only to file paths

    • BUFGIX: UI: "Switch debugger" dialog would not show up if only one debugger was available for current database (in fact it can be also used to set "No debugger" as the default)

    • BUGFIX: UI: the Functions window could reload unnecessarily when dealing with collapsed functions

    • BUGFIX: ui/qt: "hints" background color, and "highlight" color were not converted from IDA 7.2's registry to IDA 7.3 CSS

    • BUGFIX: ui/qt: chooser actions would not be updated when context menu was invoked

    • BUGFIX: ui/qt: depending on where the cursor was placed on a line, switching to the graph view could cause an animation to be triggered, even when not justified

    • BUGFIX: ui/qt: double-clicking on an entry in "Local types" to synchronize it with the IDB, was not undo-able

    • BUGFIX: ui/qt: dragging around a widget that was previously in a splitter could crash IDA

    • BUGFIX: ui/qt: file dialogs were broken for ida64.app on macOS 10.15

    • BUGFIX: ui/qt: IDA could crash when "IDA View-A" and "Pseudocode-A" were synchronized

    • BUGFIX: ui/qt: IDA could crash when switching desktops

    • BUGFIX: ui/qt: IDA could sometimes hang upon "Desktop reset"

    • BUGFIX: ui/qt: in the "Output window" Ctrl+Left/Right was not navigating through words as it should have

    • BUGFIX: ui/qt: initial autoanalysis could take significantly longer than in previous versions of IDA, for the same file

    • BUGFIX: ui/qt: on OSX IDA could crash if very fast drag & drop operations were performed on tabbed widgets

    • BUGFIX: ui/qt: snippets view: we have to save the current script before running it, otherwise undo will destroy it

    • BUGFIX: ui/qt: The color buttons could be missing a 'reset' companion button once a color was set

    • BUGFIX: ui/qt: The "Load file" dialog could be misplaced, especially when opening a new file in an existing IDA instance.

    • BUGFIX: ui/qt: the "Output window" could jump to the wrong place when navigating to the end, or when selecting (and with long lines, the problem was even more visible)

    • BUGFIX: ui/qt: the "Output window" could jump when selection was going beyond bounds

    • BUGFIX: ui/qt: the "Output window" would always come up visible after restoring a desktop where it was not visible

    • BUGFIX: ui/qt: the dark theme would cause regular tabular views to hide their vertical header (on the left)

    • BUGFIX: ui/qt: undoing an action would erroneously reset the navbar zoom level

    • BUGFIX: ui/qt: when creating choosers, IDA could ignore some columns properties in case the chooser was modified earlier and the database was saved

    • BUGFIX: ui/qt: when creating modal choosers, IDA could miscompute the best size, and make a horizontal scrollbar visible even when not needed

    • BUGFIX: ui/qt: when docking widgets around, it could happen that some widget end up unexpectedly scrolled to the right

    • BUGFIX: ui/qt: when selecting with the mouse in the "Output window", the cursor wouldn't scroll the view if the selection was going out of the viewport

    • BUGFIX: ui/qt: IDA would unnecessarily ask for Accessibility permissions on OSX 10.14 Mojave

    • BUGFIX: ui: after returning a borrowed license, IDA would complain about a failure to connect to the license server; change behavior so that IDA exits immediately after returning the license (since it doesn't have a license anymore)

    • BUGFIX: ui: clicking "OK" instead of using Enter when trying to detach a function chunk with multiple parents would not work

    • BUGFIX: ui: signed enums members were printed as unsigned numbers in the Enums window

    • BUGFIX: IDAPython: in custom graphs, it was impossible to reset the selection

    • BUGFIX: IDAPython: do not trigger the "Running Python script" wait dialog when the script itself has already called show_wait_box()

    • BUGFIX: IDAPython: GraphViewer.SetNodeInfos could trigger errors if the 'node_info_t.ea' field was not set

    • BUGFIX: IDAPython: keeping references of the type field of udt_member_t could crash IDA

    • BUGFIX: IDAPython: mbl_array_t.deserialize() was unusable

    • BUGFIX: IDAPython: some return types in the SWiG-generated docstrings were wrong

    • BUGFIX: IDAPython: using argloc_t::consume_scattered() could crash IDA

    • BUGFIX: IDAPython: when some attributes were missing from a ida_kernwin.Choose instance, the Show() method could return -1 without indicating what the error was

    • BUGFIX: IDC: idc.idc had wrong definitions of dt_ldbl, dt_byte32, dt_byte64

    • BUGFIX: hexrays: an explicitly unsynchronized "Pseudocode" view, could re-synchronize itself with a "IDA View-A" the next time <Tab> was pressed (if PSEUDOCODE_SYNCED was set to YES)

    • BUGFIX: hexrays: arm: fixed incorrect decompilation of CDP, CDP2 instructions (CRd was erroneously represented as Rd in the intrinsic function call)

    • BUGFIX: hexrays: arm64: fixed incorrect translation of instruction CSINV

    • BUGFIX: hexrays: decompiler could crash when browsing the pseudocode

    • BUGFIX: hexrays: decompiler could erroneously convert into _cdecl functions with scattered register arguments

    • BUGFIX: hexrays: fixed a division by zero

    • BUGFIX: hexrays: fixed interr 50194 (happened when a shifted pointer is a member of a structure)

    • BUGFIX: hexrays: fixed mbl_array_t serialization bugs

    • BUGFIX: hexrays: fixed the value of the 'ea' field of some cexpr_t objects

    • BUGFIX: hexrays: hxe_curpos was generated too early, and 'vdui_t::cpos' could hold outdated information

    • BUGFIX: hexrays: in some cases inlined 'strcpy' could be incorrectly combined on Big Endian platforms

    • BUGFIX: hexrays: in some cases the switch value was miscalculated

    • BUGFIX: hexrays: leave 64-bit negated constant as is, output it as unsigned

    • BUGFIX: hexrays: some undefined variables were not marked as such

    • BUGFIX: hexrays: when using Hexrays_Hooks, returning code 2 from 'create_hint' (to instruct the decompiler to append its own hints) would fail to display any hint at all in case the decompiler didn't add its own

    • BUGFIX: hexrays: some push/pop sequences could be wrongly optimized away

+ IDAPython: the IDA < 7.0 compatibility layer is now turned off by default; please see for more information

here
previously announced
a porting guide for switching to Python 3
turns off 6.95 API compatibility by default
porting guide
comparison
shifted pointers