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 5.3

Last updated 7 months ago

Was this helpful?

Highlights

  • New and improved debugger

    The previous version of IDA did not add anything to the debugger and we felt it is time for changes. We reimplemented the debugger core and improved the debugger modules.

    The new debugger is more efficient and has better support for multithreaded applications. Breakpoint handling is faster, more logical and less deadlocking. Exception handling is more user friendly.

    The debugger servers are multithreaded: they can handle multiple debug sessions, no need to kill a hung server or run multiple copies.

  • Debugger modules

    We added two new debugger targets:

    • iPhone debugger. Click for the details.

    • Symbian OS debugger.

    We publish the source code of all debugger modules.

    The Linux debugger module has been improved to support multithreaded applications. We support NPTL based kernels.

  • Better analysis for PC and ARM

    The most important improvements include support for PIC addressing modes, more jump tables and many other useful patterns. In practice this means that the output for iPhone/iMac/Linux/Symbian applications greatly improves. Please refer to the page for more details.

  • New PDB plugin

    The new plugin extracts all name and type information from a PDB file and imports it into the database. The difference is .

  • New TILIB utility

    This allows you to create your own type libraries. The command in IDA could be used to load them in the past. The TILIB utility is easier to use and . It also can import preprocessor symbol information.

  • Support for third party languages

    Interested parties may register their own language interpreter (perl/python/ruby - you name it) to be used as the expression evaluator in IDA. This will allow you to use your favorite language everywhere in IDA.

  • Signatures

    As usual, the new release comes with updated signatures, type libraries, ids files, etc. Namely, we updated them for the latest Visual Studio, Intel, and Borland compilers.

Changelist

Processor Modules

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

  • ARM: 'mov' macro can consists of multiple (more than 2) instructions (igor)

  • ARM: "stmfd/sub sp,sp" is considered as a typical code sequence; this improved the listing

  • ARM: added support for signed byte element jump tables

  • ARM: better automatic arm/thumb mode switch

  • ARM: better detection of BL as sub or jump

  • ARM: DCQ means quadro word

  • ARM: ida knows that R7 is used as frame pointer in thumb mode

  • ARM: ida was leaving wrong targets of glue code intact, now it always fixes them; this may eventually modify a user-defined offset but we are certain that this is a good thing to do

  • ARM: more jump table variants are recognized

  • ARM: more glue code and thunk functions are detected

  • ARM: MOVL macro has been renamed as MOV to avoid confusion with MOVLS (thumb mode MOV has always the S bit set); this renaming makes it impossible to tell apart the basic MOV instruction and the MOV macro just looking at the text. Please use the instruction sizes to tell them apart.

  • ARM: much better stack pointer tracing

  • ARM: one more .got addressing method is supported

  • ARM: one more pc-relative addressing method is supported

  • ARM: recognize table switches generated by Apple's compiler

  • ARM: reference into the middle of a macro instruction destroys it (analysis improvement)

  • ARM: strip the low bit of thumb code references during offset analysis

  • ARM: thumb mode thunk targets are converted to functions

  • ARM: when the processor module is 100% certain that an offset must be created, it may destroy old database information

  • AVR: added description of AT89C2051 (contribution of an ida user)

  • CLI: if the list of switch targets is too long, it is split into multiple lines

  • CLI: better handling of obfuscated code

  • PC: added detection of check_security_cookie() function for object files

  • PC: added recognition of call+5/pop idiom for PIC code

  • PC: added support for the ud2 instruction

  • PC: added undocumented 3-byte nop instructions (0F 19..0F 1E)

  • PC: automatically recognize .got relative addressing for pic mode elf files

  • PC: better analysis of device drivers

  • PC: better handling of indirect calls by register

  • PC: ida knows that the "alloc_stack" function allocates stack

  • PC: inc/dec sp are taken into account for stack tracing (16-bit segments)

  • PC: indirect calls to noret functions stop the control flow

  • PC: more condition codes and the 'elf' register can be directly used in idc while the debugger is active

  • PC: more gcc generated jump tables are recognized

  • PC: third operand of imul instruction is never displayed as offset, stkvar or stroff

  • PC: user-specified callee address is used for all addressing modes (before is was used only for indirect register calls)

  • M32R: added support for undocumented form of the STH instruction (@R+ addressing mode)

File Formats

  • AR: added support for Apple/BSD ar libraries (Igor Skochnisky)

  • ELF: added more SPARC relocations

  • EPOC: added support for Symbian S60 3d edition SIS files

  • EPOC: ids files have been updated for Symbian SDK for S60 3d edition

  • MACH-O: the entry point of packed executables is visible even if it is in the HEADER segment

  • PDB: new pdb plugin: uses new DIA API and handled type information

  • PE: added support for data imports in GCC compiled binaries

  • PE: added support for long segment names (this and many other improvements thanks to Igor Skochinsky)

  • PE: added support for tiny PE files (thanks to Igor Skochinsky)

  • PIC: allow the user to choose the target device at the loading time; added pic18f2620 port definitions

  • environment variable IDA_LOADALL makes ida to load all segments of input file (pe,elf,coff)

Kernel

  • added logic to avoid creation of too big multichunk functions

  • added an heuristic rule: switch targets cannot be separate functions

  • added FPNUM_LENGTH and FPNUM_DIGITS ida.cfg parameters to set the desired floating point representation

  • added more noreturning functions to noret.cfg

  • added notion of enum element width: now enum types can be synchronized with the local type library without information loss; idc functions to handle the enum element width have been added

  • added signatures for the latest VC8, VC9 and UnixInWindows

  • added support for Visual Studio style enum size specification (e.g. enum name:int {...})

  • better handling of zero length bitfields

  • changed behaviour of the IDALOG_SILENT environment variable: it unconditionally suppresses all output to the message window

  • incorrect structure field types are ignored when building type string for the structure

  • new ida.cfg parameter: WORKDIR specifies the directory to create temprary database files; can be used to improve the speed of opening and closing huge databases

  • new idb event: area_cmt_changed; it is generated when a function or segment comment is changed

  • the plugin options specified by -O are accessible to PLUGIN_FIX plugins

  • preprocessor directives can be used in type declarations (e.g. #pragma pack)

  • stricter check of stkvars while guessing function types; this allows us to ignore corrupted stack frames

  • the "generate idc" command knows about patched bytes

  • the meaning of the -P command line switch has been changed: -P+: compress, -P: pack, -P-: unpack the database

  • updated Intel compiler signatures (added support for v10.1)

  • updated Borland BDS signatures and added Delphi 2007 signatures (thanks to Peter Sawatzki)

  • gui: 'rename' command renames the structure field under the cursor if applied to an expression refering to global variable of a structure type; before is was renaming the global variable regardless of the cursor position

  • gui: added support for extra keyboard back/forward buttons

  • 'bool' is accepted in type declarations

Scripts & SDK

  • IDC: added ChangeConfig() to modify ida.cfg settings on the fly

  • IDC: added CompileEx() to compile arbitrary IDC scripts from a string

  • IDC: added debugger option to specify how exceptions are handled. possible values: always, only for unknown exceptions, never display a dialog box upon continuation. The default is set to display the dialog box for all exceptions.

  • IDC: added exception defintion functions

  • IDC: added extended forms of AddStrucMember and SetMemberType

  • IDC: added GetEntryName() to get the name of an export outside of the address space of the program

  • IDC: added GetInputMD5()

  • IDC: added ResumeProcess() and WFNE_NOWAIT for GetDebuggerEvent()

  • IDC: added SetInputFilePath()

  • IDC: added Sleep()

  • IDC: SuspendThread/ResumeThread have been added

  • IDC: added Qword() function (64bit version of IDA)

  • SDK: added a plugin to specify switch idiom details (uiswitch)

  • SDK: added coagulate_dref event (occurs when the kernel analyzes a dref or coagulates data)

  • SDK: added more qstring member functions and more types based on qvector/qstring

  • SDK: added qsleep()

  • SDK: added qwstring class for unicode strings

  • SDK: added register_extlang() to register third party expression evaluators

  • SDK: added resolve_typedef2(), it returns the name of the resolved type

  • SDK: added SaveBase() function to save the current idb

  • SDK: added ui_preprocess and ui_postprocess events to intercept ui commands

  • SDK: added xref creation/deletion events

  • SDK: choose_local_type() to choose types from the local type library

  • SDK: choosers can be created without main menu and status bar

  • SDK: exported determine_rtl() and apply_startup_sig() functions

  • SDK: got rid of time_t in the header files because its size is compiler-dependent; we use qtime32_t instead

  • SDK: renamed processor_t::get_jump_target as next_exec_insn; this callback must return the address of the next executed instruction in all cases, not only for jump instructions

  • SDK: set_segm_start/end functions accept SEGMOD_... flags as the last parameter

  • SDK: added get_process_options()

  • SDK: added CH_NOBTNS to suppress all chooser buttons for modal windows

Debugger

  • debugger: added commands to suspend/resume threads

  • debugger: added support for multiple debug names per address; ida will display only the first one in the listing though but other names can be used to refer to the location

  • debugger: CPU window is sleeker, occupies less space on the screen

  • debugger: debugger server kills the application if the server dies for some reason (SIGINT, SIGTERM, etc)

  • debugger: IDA does not steal the window focus when the debugger is controlled from a script or a plugin

  • debugger: if the remote debugger server becomes irresponsive, close the debug session gracefully

  • debugger: more detailed error message about debugger privileges

  • debugger: reimplemented the debugger core. the new core can handle multithreaded apps and is more intelligent with singlestep/breakpoints. it suspends some threads only if it really unavoidable (the previous core was suspending all threads for singlestepping)

  • debugger: the thread window has no main menu and occupies less screen space

  • debugger: we store debugger desktops for different processors separately

  • debugger: 32-bit and 64-bit versions store the default values in different registry keys

Bugfixes

  • BUGFIX: 'open selectors window' command was always complaining about failure

  • BUGFIX: 'text search' would not find anything in user-defined graphs

  • BUGFIX: "bad declaration" error message could appear while loading some pdb files

  • BUGFIX: .net cli was incorrectly decoding conv.r4, conv.r8, and conv.r.un instructions

  • BUGFIX: 64-bit portion of Macho-O files could be proposed to be disassembled by default by 32-bit version of ida

  • BUGFIX: 64-bit: rebasing the program would leave the relocations in the incorrect sate because of a wrong loader file name

  • BUGFIX: abstract function prototype with the __spoils keyword could contain some garbage after the keyword

  • BUGFIX: anonymous structure types could crash ida

  • BUGFIX: arm: xrefs from byte operands with a displacement could be incorrect

  • BUGFIX: arrays of partial types (like _BYTE[5]) could not be declared

  • BUGFIX: binary search for too long string (>1024 bytes) would crash IDA

  • BUGFIX: calling get_colored_[demangled_]name with too small buffer would lead to fatal error

  • BUGFIX: closing a chooser window with a middle click on its tab would prevent ida from reopening it in the future

  • BUGFIX: could crash trying to demangle extremely long names

  • BUGFIX: could crash trying to refresh a graph view

  • BUGFIX: could crash when the debugger was launched

  • BUGFIX: could fail with "not enough memory" trying to open a huge database

  • BUGFIX: could hang trying to calculate the number of purged bytes

  • BUGFIX: could not display empty graphs

  • BUGFIX: could undefine some instructions upon the debugger start

  • BUGFIX: definition of iphdr structure was wrong in gnuunx.til

  • BUGFIX: duplicate field names in struct/union declarations were not reported

  • BUGFIX: envp in main() prototype was declared incorrectly

  • BUGFIX: epoc: exports of epoc files with versioning support were incorrectly parsed

  • BUGFIX: esp based stack variables were displayed incorrectly if the frame pointer delta was non-zero

  • BUGFIX: fatal error could occur at the end of the debugging session (interr:manage_debugger_segments)

  • BUGFIX: fixed a memory leak in idc interpreter

  • BUGFIX: functions with EH_prolog could have wrong stack trace

  • BUGFIX: get_process_qty() would fail if the debugger was not connected to a remote computer; now it automatically establishes connection if necessary

  • BUGFIX: graph overview window might lose its "topmost" attribute for some reason

  • BUGFIX: green arrow was displayed incorrectly in wince debugger

  • BUGFIX: gui: problems with window focus in mdi: right clicking on an inactive graph view would switch the focus to it but right clicking on the window which was active initially would not return focus to it

  • BUGFIX: gui: there could be garbage at the end of very long disassembly lines

  • BUGFIX: HEX loader would load garbage if user in the 'word addressing' mode for PIC processor

  • BUGFIX: huge basic blocks could generate endless "insuffucient resources" dialogboxes in the graph mode

  • BUGFIX: idc: exception codes and exit codes were signed extended in 64-bit ida

  • BUGFIX: if a plugin modified a standard struct or enum, the corresponding local type would stay unmodified and out of sync

  • BUGFIX: if a plugin would create a graph view and would not specify the zoom level, IDA would crash

  • BUGFIX: if the analysis indicator was disabled, ida would display garbage

  • BUGFIX: if the user specified java target for non-java input file, ida would quit without cleaning temporary files

  • BUGFIX: in amd64 elf files R_X86_64_PC32 relocation record could resolve incorrectly in some cases

  • BUGFIX: in some very rare cases ida could quit with an error message (trying to analyze a function with an unreachable loop that passes control to other basic blocks reachable from the function entry)

  • BUGFIX: it was impossible to use 'text search' in user-defined graphs

  • BUGFIX: linux: IDA could not display unicode strings if the LC/LC_CTYPE environment variables were missing; now it falls back to LANG

  • BUGFIX: list windows: pressing Ctrl-Enter staying at the last element would cause an access violation

  • BUGFIX: loading a corrupted til file could crash ida

  • BUGFIX: m32r: clrpsw/setpsw instructions would generate interr

  • BUGFIX: mac debugger: the error message about the "setgit procmod" requirement was always about mac_server. for local debugger, idal must be setgid procmod, not mac_server.

  • BUGFIX: macho files had empty 'imports' window

  • BUGFIX: mc68x16 lbra instruction stops the execution flow but ida was not aware of it

  • BUGFIX: mentioning debugger plugins as regular plugins in plugin.cfg could lead to a crash

  • BUGFIX: mips jalx instruction was toggling the mips16 bit at a wrong address

  • BUGFIX: mips: negative operands could not be converted to offsets

  • BUGFIX: MIPS16 jalx instruction was decoded incorrectly

  • BUGFIX: multiple copies of ida could run slowly on multicore cpus

  • BUGFIX: non-resursive implementation of gdl_graph_t::path because the recursive implementation was running out of stack in some special cases

  • BUGFIX: old segment name was unusable after a segment renaming

  • BUGFIX: pc elf files could have vc6win.til file loaded instead of gnuunx.til

  • BUGFIX: pc: feature bits of bswap instruction were wrong

  • BUGFIX: pc: some illegal instructions could be disassembled as 'mov' (opcodes C6 and C7)

  • BUGFIX: PIC: immediate operand of movlw and similar instructions was treated as a signed number

  • BUGFIX: PPC could not disassemble m[tf]ocrf instructions

  • BUGFIX: rebasing the database would not update some information (function prologs, etc) for x86 targets

  • BUGFIX: rebasing the program would not modify its imagebase in the database (no visible consequences, though)

  • BUGFIX: restarting the debugger could cause a crash if the stack trace window was opened by default

  • BUGFIX: SDK: intel.hpp, is_segreg() had a bug

  • BUGFIX: SDK: set_da() had a bug

  • BUGFIX: some EPOC6 SIS files could not be loaded

  • BUGFIX: some pic devices were placed in wrong cfg files

  • BUGFIX: some TMS470 ARM COFF files could not be loaded (the text segment would be skipped)

  • BUGFIX: some very old databases could not be upgraded

  • BUGFIX: sorted lists were not refreshed properly

  • BUGFIX: structure fields of the "structure offset" type were exported incorrectly to IDC file

  • BUGFIX: structures and enums that were created by importing local types had 'til type' flag which would prevent further synchronization from idb to local til

  • BUGFIX: switching between target processors in mc68xx was buggy and would lead disassembly problems (6805/6808)

  • BUGFIX: Symbian9 epoc import parsing was incorrect

  • BUGFIX: the check of address space limit was incorrect

  • BUGFIX: the current file offset was displayed incorrectly for processors with unusual byte size

  • BUGFIX: the cursor position was changing after a debug session

  • BUGFIX: the debugger was displaying a dialog box on exceptions with "don't stop" flag

  • BUGFIX: the default alignment was incorrectly set to 4 for 64bit programs (must be 8)

  • BUGFIX: the graph overview window would not be immediately displayed for user-defined graph views

  • BUGFIX: the second parameter of the create_struc_member event was wrong

  • BUGFIX: the stack analysis could fail with a fatal error for huge function with too many stack change points

  • BUGFIX: there could be some access violations if the Jump() function was repeatedly used from an IDC script

  • BUGFIX: there were discrepancies between 32-bit and 64-bit versions of IDA

  • BUGFIX: too long function names could crash ida (while displaying xref information)

  • BUGFIX: trace results in the file were too wide

  • BUGFIX: tree layout could crash on some cyclic graphs

  • BUGFIX: tricore module was not creating xrefs for offset expressions

  • BUGFIX: user-defined xrefs could be replaced by regular xrefs and then deleted by the kernel

  • BUGFIX: vmread/vmwrite instructions were decoded incorrectly in 64-bit mode

  • BUGFIX: when attaching to a process IDA would not properly switch to the debugger desktop

  • BUGFIX: if the graph layout algorithm failed, the graph would be left in an incorrect state (with temporary nodes)

  • BUGFIX: 64bit: it was impossible to edit a breakpoint at address > 0xFFFFFFFF

  • BUGFIX: IDA window title might display garbage after closing a mini database

here
comparison
spectacular
small and nifty utility
Load C header
gives you more control