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

Need Help?

  • FAQs
  • Support

Community

  • Forum
  • Plugins

Resources

  • Blog
  • Download center

© 2025 Copyright Hex-Rays

On this page

Was this helpful?

Export as PDF
  1. Release Notes

IDA 4.7

Last updated 5 months ago

Was this helpful?

Highlights

  • Support for non contiguous, fragmented, multiple chunks functions has been added. The analysis of theses functions has been greatly improved.

  • a LINUX console version of IDA is now available. The source code of the TVision library used for the interface will be freely !

  • REMOTE DEBUGGING between Linux and Windows systems. (only singlethreaded linux applications are supported by the debugger). Source code will also be .

Changelist

Processor Modules

  • DSP561XX: new processor (in the Professional version)

  • TMS320C3: new processor (in the Professional version)

  • Angstrem KR1878: new processor

  • Motorola HCS12: new processor

  • 6502: immediate instruction operands are unsigned by default (were signed)

  • 6812 debugger: beta test version is ready and included in the distribution

  • 6812: better configuration file; CASM assembler is added

  • 6812: pc relative references are resolved and displayed as comments; cross references for them are created

  • ARM: ADD PC, ... stops execution flow

  • ARM: ADD Rn, SP, #offset is automatically converted to a stack variable

  • ARM: ARM processor module has been improved in many aspects thanks to Willem Hengeveld <itsme@xs4all.nl>

  • ARM: IDA knows that LDM Rx, {reg} spoils the register

  • ARM: IDA knows that some BL instructions should be treated as B instructions

  • ARM: MOV PC,... and LDR PC,... instructions are handled better

  • ARM: RVA32 relocation type is supported

  • ARM: arm <-> thumb thunks are recognized

  • ARM: better reaction to the execution flow going to an unexisting address: before there was an error message that it is impossible to assign the segment register T, now the offending address is stored in the problem list.

  • ARM: better register tracing to detect the target of the BX instructions

  • ARM: better support for the thumb mode relocations

  • ARM: glue code is recognized as a jump function

  • ARM: improved the analysis of the jump tables and the glue code

  • ARM: modifying the T register reanalyzes the current instruction

  • ARM: the following sequence does not stop execution: MOV LR, PC; MOV PC, ... or BX Rx

  • ARM: thumb instruction can be converted to macros too

  • HPPA: basic blocks are detected properly; added type system; better analysis in general

  • HPPA: option to use mnemonic register names is added. off by default.

  • HPPA: stw/ldw instructions have ",ma/b" completers; unused %sr0 registers are not displayed

  • IA64: better detection of operand sizes

  • IA64: multibyte character constants are allowed for GNU as (desipte the fact that it does not support them)

  • IBM PC: type information for functions called indirectly with complex offset expressions is propagated properly

  • IBM PC: push ##/pop eax is recognized as a sequence equal to "mov eax, ##"

  • PPC: addi instruction is taken into account when tracing the stack pointer

  • PPC: operands are converted to offsets only if the target is present in the program

  • PPC: support for GNU assembler is added

  • PPC: support for R_PPC_ADDR16_HI relocation type is added

  • PPC: type system support is added

Kernel

  • Mulitple chunk functions are supported. IDA will automatically create function tails if this option is turned on. The option is turned on by default for the new databases, for the old database, it is turned off.

  • the idc engine does not use disk files anymore and is now faster.

  • created subdirectories for input file loaders, processor modules, configuration files.

  • Added an option to allow the recognition several copies of the same function

  • Added an option to comment anonymous library functions with the description of the FLIRT signature

  • Argument type information is propagated more actively

  • flair application collisions are marked with comments

  • improved handling of spoiled structure and function frame definitions

  • renaming a function as "exit" stops the execution flow

  • type information is saved for the structure members coming from the type libraries

  • better handling of trivial jump functions

  • slight improvement of jump table handling: .got entries are never considered to be big jump tables

  • the function boundary determination algorithm has been improved

File Formats

  • ELF: added an option to force PHT instead of SHT (useful for viruses and malicious programs)

  • ELF: ARM relocations are supported properly

  • ELF: HPPA relocation information is processed. Since there is enormous number of relocation records, we process only a limited number of them

  • ELF: IDA knows about some internal symbols generated by the ARM compiler

  • ELF: a bad section declaration is not considered as a fatal error during loading; PHT manual load is supported

  • ELF: pressing cancel in the manual mode aborts the whole loading process

  • ELF: introduced environment variable IDA_ELF_PATCH_MODE which can be used to override the patching made by IDA to the database when a new elf file is loaded

  • EPOC: condition and option lines in SIS files are properly recognized and skipped

  • HPSOM: $DLT$ entries are ignored during loading imports

  • AR libraries with '\n' embedded in the file names are processed correctly

  • MS DOS COM files use the metapc processor by default

  • MACH-O: MAC OSX support for the type system is added

User Interface

  • support for multiple selections in various lists has been added

  • debugger: '0', '+' and '-' keys can now be used to quickly zero, increment or decrement register values

  • debugger: 'Toggle value' command added to registers window (useful to quickly toggle flags)

  • debugger: added 'Add breakpoints', 'Enable breakpoints', 'Disable breakpoints' and 'Delete breakpoints' commands in popup menu of various lists (functions, names, ...) - these commands also accept multiple selection

  • debugger: during debugging, addresses in import section are now displayed as data: allows to easily view and jump to the target

  • debugger: Cancel is now the default button in the debugger warning message (appearing the first time the debugger is started)

  • tracing: added an option in the 'Tracing options' window to suspend tracing over library functions (enabled by default)

  • tracing: can now browse in Trace window even if process is not suspended

  • tracing: green arrow (target arrow) is refreshed during backtracing

  • tracing: in the trace window, a trace event selection is conserved (while it is in the trace buffer) - if the last trace event is selected, the selection will continuously remain on the last inserted trace event

  • added option to turn off the autoappend feature

  • can open more than one hex view - these hex views aren't anymore synchronized with IDA Views by default (to synchronize a hex view with an existing IDA View, use the 'Synchronize with' command in the hex view's popup menu)

  • command line status is now saved in the desktops

  • improved the 'offsets en masse' command: now ida verifies if the offset can be applied

  • it is possible to hide the question about a debug file from MSDN

  • most Jump and Search commands now work in hex views

  • positions of dialog boxes related to database are now saved to desktops

  • jumping to a problem does not delete the problem from the list anymore

  • it was not possible to choose an xref to a structure, so this command has been disabled

  • wrong values for the -z switch are catched and reported properly

  • 'dump to idc' can dump a selected part of the database

  • the offset in the 'Structure offsets' dialog box can be specified as a decimal or hexadecimal value

Scripts & SDK

  • IDC: loadsym.idc is improved to support VisualAge (thanks to Dietrich Teickner)

  • IDC: #import directive can be used instead of #include

  • + IDC: SegByName() returns the segment selector instead of its base address. The base address can be calculated from the selector by using the AskSelector(x)<<4 expression.

  • IDC: Set/GetFunctionAttr(), SetSegmentAttr() functions are added; existing functions are converted to macros using these new functions

  • IDC: added a comment about the color coding

  • IDC: added a flag to generate HTML files for GenerateFile()

  • IDC: loaddef.idc is donated by Dietrich Teickner; loadsym.idc has also been improved.

  • IDC: long running IDC scripts can be cancelled

  • IDC: optimization: idc.idc is parsed only once at the database loading time (used for inline expressions and the calculator; idc scripts including idc.idc will parse it at each compilation)

  • IDC: ord() function to get code of a character is added

  • IDC: removed the 64K limit for the compiled function length

  • IDC: rotate_left() function to rotate bit field is added

  • IDC: the built-in parser looks for the include files in the directory of the current file as well as in the directory of the main input file for '"' includes

  • IDC: SegAlign() and SegComb() functions are converted to macros; fixed a bug with SEGATTR_DEF_.. constants

  • SDK: HIGH22 and LOW10 offset types are generalised to be VHIGH and VLOW. The processor module can specify the widths of these fixups in the ph.high_fixup_bits field. Currently they are used in the SPARC and HPPA processors.

  • SDK: NULL value may be passed as the tester function to the nexthat, prevthat functions. It means that any address satisfies the criterium.

  • SDK: PR_FULL_HIFXP is introduced. It means: VHIGH fixup type expects the operand value to be equal to the full address of the target, not only the high bits. Used for HPPA HIGH21 fixup types.

  • SDK: UI list functions (choose(), choose2(), ...) now support multiple selection => the delete callback prototype was changed accordingly (older plugins can simply return 'true' to remain compatible)

  • SDK: added possibility to pass command line options to plugins (get_plugin_options)

  • SDK: added set/get_idc_func_body() to avoid frequent recompilation of IDC functions

  • SDK: debugger: enable_XXX_trace() functions can now disable tracing but conserve trace-over breakpoints

  • SDK: gen_use_arg_types() is added

  • SDK: lread() function is added; this function should be used in the loaders instead of eread(). The lread() function verifies if the read is ok, if not, it informs the user about it and asks if he wants to continue. If the user does not want to continue, the loader_failure() function is called

  • SDK: regex_match() to match regular expressions is added

  • SDK: removed support for the watcom compiler

  • SDK: set_idc_func() to add/remove IDC functions written in C++

  • SDK: the kernel knows about macroinstructions (cmd.flags |= INSN_MACRO); fixup information for macroinstructions is handled in a special way: partial fixups are combined into one full fixup

  • SDK: AS2_BYTE1CHAR is added: for wide byte processors, one character per byte

  • SDK: added the FILE option to the AUTOHIDE keyword for message boxes, to save hidden message box results to IDAMSG.CFG

  • SDK: get_next/prev_member_idx() functions are added; guess_func_type() understands stacks growing up (not tested yet)

Bugfixes

  • BUGFIX: 'Attach to process...' and 'Detach from process' commands were sometimes not visible

  • BUGFIX: 'Change stack pointer...' command in context menu was sometimes displayed 2 times + we now always display it if Stack pointer is visible

  • BUGFIX: 'Reset desktop' command was not resetting settings from default hidden windows

  • BUGFIX: -b command line switch was broken

  • BUGFIX: AMD64 RIP addressing was decoded incorrectly if the second operand of the instruction was an immediate value

  • BUGFIX: ARM thumb BLX direct-addr could not be disassembled

  • BUGFIX: AS_STRINV flag could revert the value of 'inf.wide_high_byte_first' if the input string for the get_ascii_contents() function was too long to be stored in the buffer.

  • BUGFIX: C166 exts instruction was not emulated properly

  • BUGFIX: EIP was sometimes not properly invalidated on the screen when the debugger was running

  • BUGFIX: HPPA stack frame is created correctly

  • BUGFIX: IDA could enter an endless loop if a data item with an offset was visible on the screen along this the referenced instruction which was leading to the reanalysis of the data item (in other words, the data item causes the reanalysis of the instruction; the instruction leads to the reanalysis of the data). Scrolling aways from such a place would break the loop.

  • BUGFIX: IDA was loading some elf sections even if the user asked not to load them in the manual mode

  • BUGFIX: IDA would report not enough disk space on Windows98 if started in a directory with a double extension (like c:\dir\4.3.2\)

  • BUGFIX: IDC conditions (for breakpoints and tracing) referencing memory bytes were sometimes not properly evaluated

  • BUGFIX: IDC: ltoa() function was broken

  • BUGFIX: IP view was not properly refreshed if IP was not visible and the user switched between threads with same IP (for example 2 sleeping threads)

  • BUGFIX: Intel 8051: IDA crashes if at the loading time the user clears the "create segments" checkbox.

  • BUGFIX: MC6816 module: offset xrefs were not properly created for some operands

  • BUGFIX: PE loader would crash if only the PE header was loaded into the database and all other segments were skipped; made many PE loader messages hideable

  • BUGFIX: PrevHead() IDC function was returning wrong results

  • BUGFIX: R_PPC_ADDR16_LO relocation type was processed incorrectly for object files

  • BUGFIX: TXT: a segfault could occur after closing the Structures or Enums window

  • BUGFIX: TXT: on Windows 9X, it was not possible to enter some characters (like the @ character by pressing AltGr+Q on a German keyboard) => define the TV_IGNORE_RIGHT_ALT_PRESSED environment variable to let IDA ignore such key combinations on Windows 9X

  • BUGFIX: TXT: segfault when you grab the lower right corner of the disassembly window with the mouse and drag it to the left, shrinking the window (qsnprintf() should never return -1)

  • BUGFIX: an xref window would become empty if a modal window with xrefs to the same ea is opened and closed

  • BUGFIX: better handling of thread suspends/resumes for multi-threaded debugging

  • BUGFIX: closing Enums window by pressing ALT-F3 was causing a segfault

  • BUGFIX: colors of hidden areas were restored incorrectly

  • BUGFIX: column widths for the function list were wrong for 64-bit version

  • BUGFIX: epoc: the export table was located incorrectly

  • BUGFIX: debugger: DLL rebasing was not working properly in some cases

  • BUGFIX: debugger: FPU registers were sometimes not properly printed and detected as modified

  • BUGFIX: debugger: IDA was displaying non-readable memory as 0xFF bytes (for example in PAGE_GUARD and PAGE_NOACCESS pages on Windows)

  • BUGFIX: debugger: a breakpoint at address 0 was added if pressing Enter from the Insert command in the Breakpoints window

  • BUGFIX: debugger: addresses in the Breakpoints list were not properly resolved because lists refresh was initialized before the process was properly suspended

  • BUGFIX: debugger: after a suspend, breakpoint conditions containing registers couldn't be evaluated properly

  • BUGFIX: debugger: breakpoints were not properly handled during library loading (if 'Stop on library load' option was enabled)

  • BUGFIX: debugger: database desktop was sometimes overwritten by debugger desktop when process was not properly stopped

  • BUGFIX: debugger: debugger status in the main window titlebar was sometimes not accurate

  • BUGFIX: debugger: exported names (from loaded DLLs) were sometimes not properly displayed during debugging

  • BUGFIX: debugger: fixed minor disassembly view refresh issues when adding or editing breakpoints

  • BUGFIX: debugger: if a user forced a process termination and a pause request was already pending, the 'Pause process' command wasn't working anymore in new debugger sessions

  • BUGFIX: debugger: in some particular cases, segment reorganisation was not working properly after a debugger event

  • BUGFIX: debugger: it was not possible to add a hardware breakpoint at once from the breakpoints window

  • BUGFIX: debugger: it was sometimes impossible to disable hardware breakpoints at runtime

  • BUGFIX: debugger: the 'Clear trace' command was not properly refreshing some information like register views, arrows, ...

  • BUGFIX: debugger: the 'Detach from process' command was sometimes not properly resuming threads

  • BUGFIX: debugger: thread related segments (stack & PAGE_GUARD) were sometimes not properly named - Segments view was not properly updated in some cases

  • BUGFIX: deleting a record from a non-leave leads to a move of another record from a leave page to the freed place, an underflow occurs in the leave page, some records from the sibling of the underflowed page are moved to it, doing so leads to the modification of another record in the parent page, which leads to the overflow of the parent and the parent gets split. At this moment because of the bug we work with a freed page and the database gets corrupted. A bug with a similar situation had been corrected ten years ago.

  • BUGFIX: disassembly paint function was leaking GDI resources

  • BUGFIX: dsp56k ports are attached to the X space, not P space. dsp561xx: better version

  • BUGFIX: entering a long comment with tabulations could crash ida

  • BUGFIX: fixed a typo in sparc autocomments

  • BUGFIX: get_original_long() was wrong

  • BUGFIX: hardware breakpoint (with a size bigger than 1) background color was not red for additionnal lines (like a multi-line comment)

  • BUGFIX: in navigation bar, it was impossible to 'Zoom in' if 'Zoom out' was disabled (because maximum range was reached)

  • BUGFIX: in some really rare cases get_next_fcref() could never return BADADDR

  • BUGFIX: increased the width of the segment register window columns to fit narrow register values

  • BUGFIX: it was impossible to rename or double-click on a structure stack variable

  • BUGFIX: it was impossible to use function local vars/args in breakpoint conditions

  • BUGFIX: it was not possible to rename bitfield members from the interface

  • BUGFIX: jump tables were not analyzed correctly after Changelist 979

  • BUGFIX: jump to near addresses (which were not visible on the screen but already cached) was not working anymore, probably since Changelist 2655

  • BUGFIX: maximized windows in a saved desktop were sometimes restored as non-maximized

  • BUGFIX: mc6812 module did not know about the "wavr" pseudo-instruction

  • BUGFIX: mc6812 module was not disassembling "etbl", "tbl" instructions

  • BUGFIX: multiline instructions were not displayed correctly in the graphs

  • BUGFIX: nextaddr(BADADDR) was returning the first address of the program

  • BUGFIX: number of applied functions of a flirt signature takes into account all functions (before some function types were ignored)

  • BUGFIX: patching bytes during debugging would make IDA memorizes the database was patched

  • BUGFIX: register views creation was sometimes leaking GDI resources

  • BUGFIX: repetitive rebasing of the database might lead to a crash

  • BUGFIX: scroll buttons in IDA view scrollbars were not working properly

  • BUGFIX: scrolling the disassembly view using the mouse whlle with the hex view open could lead to an access violation at the beginning and end of the file

  • BUGFIX: segfault when typing an address into the search toolbar if no disassembly view was open

  • BUGFIX: set_debug_name() might cause an access violation

  • BUGFIX: some PE files with bad relocation table could not be loaded

  • BUGFIX: some Visual Age and GNU C++ names were not demangled correctly

  • BUGFIX: some strings couldn't be typed in the search toolbar due to auto-completion

  • BUGFIX: text version was not displaying error messages about the configuration file

  • BUGFIX: text version: the disassembly window was not refreshed immediately after renaming a stack variable and similar

  • BUGFIX: the Batch() IDC function does not disable the auto-analysis in TXT version anymore

  • BUGFIX: the elf loader was complaining about unusual usage of relocations for some incorrectly stripped executables

  • BUGFIX: the kernel was not saving the current instruction data before calling ph.create_func_frame(); this might lead to worse analysis (mostly for the arm processor)

  • BUGFIX: tracing: addresses not available in database were not displayed during backtracing

  • BUGFIX: tracing: if 'Trace over debugger segments' was enabled, tracing in KiUserCallbackDispatcher() function (used for kernel -> userland callbacks) was sometimes stopping with a "Breakpoint instruction reached (not inserted by the debugger)" message

  • BUGFIX: tracing: if the process is running, tracing is started while EIP is in a debugger segment, and 'Trace over debug segment' option is enabled, IDA will not add anymore trace events for these debugger segment instructions

  • BUGFIX: tracing: properly log modified register values over debug segments (when 'Trace over' option is active)

  • BUGFIX: unloading some corrupted databases to idc would lead to a crash, now ida should complain and continue

  • BUGFIX: unwanted hint of the address zero was displayed in the stack variables window for the processors with ':' after the data labels

  • BUGFIX: when closing a database, last address in IDA view was sometimes continuously saved on the previous addresses stack

  • BUGFIX: Z80 was not allowing to modify the out, in, and similar instruction operands

  • BUGFIX: creating an item crossing a hidden area boundaries would pose display problems in the future

  • BUGFIX: deleting a structure element at the end of the structure might lead to a wrong display (one superfluous data definition line beyond the end of the structure)

  • BUGFIX: if the 'Print flow chart labels' option was enabled, labels without valid names were preceded by a '7' character + IDA now uses the prefix line color for these labels

  • BUGFIX: sometimes the application title was not reflecting the database name correctly

  • BUGFIX: using the navigation band with all IDAViews closed could lead to crashes

  • BUGFIX: when creating a flow graph, local labels were redefined as globals

  • BUGFIX: H8: the '@' character was erroneously highlighted as a valid identifier character

  • BUGFIX: debugger: the destination arrow (green arrow) was not properly updated for JLE/JNG instructions

  • BUGFIX: if the database was created in the directory other than the input file directory, the input file name would be replaced by the database name

  • BUGFIX: it was not possible to search with Ctrl-T after pressing Esc in the Alt-T dialog even if the old search string was existing

  • BUGFIX: the stack tracing could be spoiled if the function end was moved back and forth

  • BUGFIX: when creating a new structure, the proposed structure name was incremented if the Cancel button was pressed

  • BUGFIX: when opcode bytes were displayed with a '+', IDA was not extracting the following name properly (if any) => it was then impossible to change this name

Discontinued

  • OS/2 and DOS4GW versions are discontinued. Please make a backup copy if you plan to use them in the future.

downloadable
available