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
  • Major Features
  • MAC OS X DEBUGGER
  • “USERCALL” FUNCTION CALLING CONVENTION
  • NORET-ANALYSIS
  • STACK POINTER TRACING BASED ON THE SIMPLEX METHOD
  • EPOC v9
  • VISTA
  • INFINEON Tricore
  • PROCESSOR MODULES
  • USER INTERFACE
  • DEBUGGER
  • BUGFIXES

Was this helpful?

Export as PDF
  1. Release Notes

IDA 5.1

Major Features

MAC OS X DEBUGGER

We have improved Mac OS X support.. IDA now supports fat binaries. Intel Mac OS X applications can be disassembled and debugged. The PowerPC can be disassembled but not debugged. The analysis is enhanced by a new Intel Mac OS X type library (macosx.til). Typical code sequences are often recognized however, because GCC generates highly optimized code, some of them are still missed. The Intel Mac OS X debugger has the following peculiarities and limitations:

  • Mac OS X requires debuggers to have setgid 'procmod' permissions. Please execute the following commands as administrator before using the debugger:

        chgrp procmod mac_server
        chmod g+s mac_server
  • Hardware breakpoints are not supported. Apparently the operating system does not support them.

  • Breakpoints in read-only shared areas are not allowed because they cause system crashes. Therefore, the commands step over, run until return and similar will fail in those areas.

  • Mac OS X emulates UNIX signals on top of the Mach microkernel. The debugger hooks microkernel events to obtain information from the application, effectively hiding the signals from installed signal handlers. This issue might be addressed in a future version.

  • In multithreaded applications running on multicore processors, several events may happen simultaneously. For example, if several breakpoints are activated at the same time, IDA will present them sequentially and the application will not resume until the user has dealt with all pending breakpoints.

“USERCALL” FUNCTION CALLING CONVENTION

IDA supports user defined calling conventions. The user may explicitly specify the locations of arguments and return value such as in this example:

 int __usercall func<ebx>(int x, int y<esi>);

which denotes a function with 2 arguments: the first argument is passed on the stack, the second argument is passed in the ESI register and the return value is stored in the EBX register. General rules for the user defined prototypes are:

  • the return value must be in a register

  • if the return type is 'void', the return location must not be specified

  • if the argument location is not specified, it is assumed to be on the stack; the stack locations are allocated consecutively.

  • IDA does not check the register sizes but we recommend that you specify correct register sizes (for example, use AL for char type)

  • nested declarations are allowed, for example:

    int **__usercall func16<eax>(int *(__usercall *x)<ebx>
    (int, long<ecx>, int)<esi>);

Here the pointer to "x" is passed in the ESI register; the pointed function is a usercall function that expects its second argument in the ECX register, its return value is in the EBX register. The rule of thumb to apply in such complex cases is to specify the registers just before the opening brace for the parameter list.

  • registers used for the location names must be valid for the current processor; some registers are unsupported (if the register name is generated on the fly, it is unsupported)

NORET-ANALYSIS

IDA performs the “no-return” analysis for all functions. It finds out if a particular function returns to the caller or not. This analysis greatly improves the listing quality because many wrong execution paths are detected and truncated at early stages. The user can use the Edit Function dialog box to assist IDA in difficult cases. This analysis option can be turned on or off in the IDA.CFG file using the AF2_ANORET bit. By default it is active for the x86 processor.

STACK POINTER TRACING BASED ON THE SIMPLEX METHOD

EPOC v9

IDA v5.1 adds support for Symbian EPOC v9 files. Both compressed and uncompressed files can be loaded and analyzed.

VISTA

We have added new types from the latest MS Windows SDK. This includes, among other additions, Vista types.

INFINEON Tricore

New processor: Infineon Tricore 32-bit (advanced version)

PROCESSOR MODULES

  • PC: 64-bit Visual Studio exception related structures are recognized.

  • PC: 64-bit RBP frames with unusual RBPs are recognized.

  • PC: added PC_PROLOG_COLOR/EPILOG_COLOR/SWITCH_COLOR parameters to IDA.CFG

  • PC: improved recognition of Borland RTTI data

  • PC: improved recognition of jump tables

  • PC: Borland frame setup loop for ESP based functions is recognized

  • PC: Borland template recognition has been improved

  • PC: code cross-references to imported functions are created for imported function pointers

  • PC: do not automatically convert the third operand of an instruction into an offset

  • PC: when tracing function parameters IDA uses the information that esi, edi, ebp and other registers are preserved by function calls

  • PC: keep the stack pointer aligned according to the current segment mode

  • PC: multiple byte nop's are supported

  • PC: sparse visual studio jump tables are recognized

  • PC: SSE4 (SSSE3) instructions are supported

  • PC: stdcall names like name@8 are used to determine the number of purged bytes

  • PC: the type system converts an immediate instruction operand to an offset if it corresponds to a pointer type argument of a function call

  • PC: turned on the final pass of the analysis for MS-DOS EXE files

  • PC: VxD function calls are recognized in LX/LE files

  • PC: support for Intel VMX instructions have been added; the undocumented svdc/rsdc instructions are not decoded anymore because they clash with the vmread/vmwrite instructions.

  • pc: a reference to seh handler in the form of "push offset handler" can not point to data; if we detect it, we destroy data and create code

  • 68K: improved function prolog recognition

  • 68K: more jump tables are recognized

  • 8051: the opcode FF is considered as insane instruction (to avoid long sequences of FF to be disassembled as code)

  • PPC: IDA does not create subi pseudo instructions by default (use PPC_CREATE_SUBI config parameter for that)

  • PPC: spoiled register analysis has been improved

  • ARM: EPOC thumb glue code is recognized

  • ARM: zero value terminates jump tables which follows the LDR PC instruction

  • ARM: IDA knows that ldr pc, sp... can not be a table jump insn

  • ARM: recognize disguised function calls like "mov lr, pc; add pc,..."

  • Palm: many changes for better analysis of Palm programs; added support for ARM Palm applets (thanks to Igor Skochinsky) FILE FORMATS

  • COFF: added support for new big COFF files from Microsoft

  • COFF: COMDAT segments are marked in the disassembly

  • COFF: files with the huge number of segments can be loaded

  • COFF: TMS740 machine type has been added (thanks to Job de Haas)

  • AOF: ignore aux names because they hinder creation of data items in the disassembly

  • AOUT: dynamic symbol table is parsed and used in the disassembly

  • ELF: several new ARM relocations are supported

  • NLM: IDA knows about prelude and termination functions and automatically loads NLM.TIL

  • OMF: Digital Mars OMF extensions are supported

  • OMF: Digital Mars SECREL TLS relocation type is supported

  • PDB: consider names starting with IID as GUIDs

  • PDB: PDB plugin can be turned off from the command line: -Opdb:off

  • PE: information from the demangler is used to detect data names in the code segments

  • PE: files with zero entry point lead to the automatic loading of the file header

  • PE,XBE: added vcseh.sig file to detect SEH_prolog/epilog functions even if the input file has no imports

  • TDS: added a workaround for invalid sstNames sections

  • TDS: added support for esp based variables. unfortunately ilink32 does not always set the corresponding bit

  • TDS: IDA understands TDS information embedded into the executable file

  • Mach-O: non-trivial segments without sections are automatically loaded (this reveals hidden code)

  • Mach-O: x86 relocation support has been added; some relocation types are not handled yet

  • Mach-O: fat (multiple architecture) files are supported KERNEL

  • much better stack pointer tracing for IBM PC

  • 2 new offset attributes have been added: RVA offsets and 'past object'

  • abstract (nameless) declarations are accepted in the 'set type' command

  • added -C# command line option to specify the compiler used to compile the input file

  • added an option to turn off data coagulation in code segments

  • added ids files for 64bit MFC

  • added MFC8 IDS files

  • BDS signature files have been updated (Thanks to Peter Sawatski!)

  • BDS4 signature file, contribution of an IDA user

  • Borland RTTI recognition has been improved

  • “create dref32” rule has been improved: now it verifies that the conversion result is representable in the listing

  • demangler information is now used to set up the current compiler

  • Digital Mars compiler signatures have been added

  • final autoanalysis pass is more careful with the alignment instructions

  • FLAIR: it is possible to specify the compiler in the startup signatures using the c=# sequence

  • FLAIR: TLS related x86 relocations are supported in the PELF utility

  • IDA can guess the type of functions which use floating point arguments

  • IDA does not automatically create unicode strings in ms dos programs

  • IDA does not delete the user defined names when creating other items

  • IDA performs additional analysis to determine if functions return to their callers

  • IDA uses demangler information to guess function types

  • IDS files can be applied to the database of the DLL itself

  • IDS: many MS Windows IDS files have been updated

  • if the instructions at the end of a function are deleted, IDA automatically truncates the function

  • in order to load COFF/OMF/NE files with huge number of segments, IDA fills the gaps between the segments with .align directives

  • jump table targets are never converted to functions

  • Mac OS X type library has been added

  • name demangling autodetects compilers (IDA_NOAUTOCOMP environment variable can be used to revert to the old behaviour)

  • new Borland VCL signature

  • new keyword in IDT files: Exit. It is used to denote functions which do not return

  • OpenWatcom v1.5 signatures have been added

  • repeatable comments from the base address of a complex offset expression are skipped to give place for the comments coming from the offset target (requires reanalysis)

  • replaced block characters by -+| characters in the function borders and listing header

  • segment type directly depends on the segment class. for example, if the segment class is specified as "DATA", the segment type will be SEG_DATA

  • type of unicode constant strings is guessed correctly (as wchar_t)

  • user specified zero stack modification are not overwritten by IDA

  • uunp, chartbox: removed the hotkeys for these plugins because they could hinder their use for windows switching

  • Visual Studio signature files have been updated

  • zero length bitfields in c declarations are allowed and ignored

  • the analysis is faster in many cases IDC & SDK

  • IDC: Added GUI and TXT predefined macros. One of them will be defined depending on the current user interface

  • IDC: added functions to handle breakpoints

  • IDC: added functions to query and manipulate function chunks (tails)

  • IDC: defined the SEARCH_UP symbol to denote search backward

  • IDC: new function ApplySig() to load flirt signatures

  • SDK: added the qflow_chart_t class for more control on flow charts

  • SDK: added a callback for the graphs: grcode_destroyed. It is generated when the displayed graph is destroyed.

  • SDK: added a callback to preprocess flow charts before displaying them in the graph view (processor_t::preprocess_chart)

  • SDK: added a hotkey parameter to viewer_add_menu_item()

  • SDK: added add_qword() to facilitate 64-bit relocation application

  • SDK: added AFL_FIXED_SPD flag to denote instruction with fixed stack pointer delta. This flag is set at the instruction which has a fixed effect on SP (CORRECTION: it is applied to the address past the instruction)

  • SDK: added callbacks to generate custom hints

  • SDK: added decode_preceding_insn() to decode instruction which precedes the specified address in the execution flow

  • SDK: added eavec_t and intvec_t convenience typedefs

  • SDK: added events for function creation, deletion, and boundary modification

  • SDK: added FUNC_SP_READY flag to denote functions with SP analysis performed; removed ua_emu() and made automatic reanalysis of new instructions; added verify_sp notification to perform sp-analysis

  • SDK: added function_item_iterator::decode_preceding_insn() to decode instruction in the reverse execution order

  • SDK: added get_current_thread() function

  • SDK: added get_funcarg_size() to calculate the size of a function argument

  • SDK: added helper alignment template functions align_up and align_down

  • SDK: added non-standard functions like add_unique() and del() to the qvector template

  • SDK: added possibility to specify custom navigation band colorizer

  • SDK: added PR_ALIGN_INSN for some processors; this flag allows IDA to create 'alignment' instructions (e.g. nop) arbitrarily. In general it is a bad idea because such an instruction may spoil the listing by triggering the creation of other wrong instructions

  • SDK: argloc_t definition has been modified to hold more information and be easier to work with; the old definition is still available if the NO_OBSOLETE_FUNCS is not defined

  • SDK: build_funcarg_arrays() converts array arguments into pointers

  • SDK: do_unknown() and do_unknown_range() accept flags as the last parameter instead of a simple bool. This allows us to specify more options. One new option: DOUNK_DELNAMES will delete the names in the specified range

  • SDK: FUNC_PURGED_OK flag has been introduced to mark functions which certainly do not modify the stack; sp-analysis is improved to use this flag

  • SDK: gdl_graph_t has 2 more virtual functions: get_node_color and get_edge_color

  • SDK: get_data_type_size_by_flags() is optimized not to access the database if not really necessary

  • SDK: get_data_type_size_by_flags() is renamed as get_data_elsize()

  • SDK: get_off_expr and get_name_expr functions accept one more flag: GETN_NODUMMY. This flag can be used to verify that the expression can be built without really creating dummy names in the database

  • SDK: get_prev_func_addr() and get_next_func_addr() functions have been added. they return the previous/next address in the function strictly linearly

  • SDK: graph interface has been changed to use the qvector template. It is with accessible from other compilers (was only from BCB6)

  • SDK: if expand_struc() does not change anything in the structure definition because the offset is bigger than the structure size, it is not considered as an error

  • SDK: introduced a bit for user defined type information attached to program items (AFL_USERTI). Types derived by IDA will not have this bit.

  • SDK: introduced a flag for 'alignment' instructions: is_align_flow(). It is used to denote control flow created only because of an alignment instruction

  • SDK: introduced the qtype file to keep type information in the dynamic memory

  • SDK: is_type_void() now checks if the type is really 'void'; before it was reporting 'true' on partial types based on the BT_VOID symbol; the old version of this function is still available if the NO_OBSOLETE_FUNCS symbol is not defined at the compilation time

  • SDK: made graph interface compatible with compilers other than BCB6; for that, removed the bn memory of the flow_chart_t class

  • SDK: new event 'determined_main' is generated when the main() function of the application is determined

  • SDK: new event: loader_elf_machine to handle elf files of unknown machine types

  • SDK: new event: treat_hindering_item. This event allows plugins to handle the situation when an old item hinder the creation of a new item (e.g. a wrong data item prevents the creation of an instruction)

  • SDK: new function add_auto_stkpnt2() which replaces add_auto_stkpnt(). The old function should not be used anymore since it does not take into account the function boundaries

  • SDK: new function add_til2() with more flags

  • SDK: new function calc_switch_cases() to calculate switch case values and targets; jptcmn.cpp file has been modified a lot: if you used it, then take the old version from sdk5.0 or update your module

  • SDK: new function get_func_nargs(). It returns the number of arguments if the given function type

  • SDK: new function make_array_type() to create array types

  • SDK: new function qlgetz() to read zero terminated ascii strings from the input stream

  • SDK: new function set_compiler() to set the current compiler

  • SDK: new function set_purged() to specify a new value for the "purged bytes" attribute and reanalyze the relevant functions

  • SDK: new notification event: processor_t::renamed. It is generated when a new name is given to a byte

  • SDK: print_type_to_one_line() can be called with buf==NULL and bufsize==0 to find out the required buffer size

  • SDK: QASSERT() and interr() debugging helpers are added

  • SDK: QPRM() macros are useable for plugins

  • SDK: qstring template class has more member functions

  • SDK: removed HT_GRAPH and added 2 parameters to create_graph_viewer() This breaks the existing graph view plugins (sorry) but this part of IDA API has not been settled yet.

  • SDK: set_ti() and set_op_ti() always update the field list in the database

  • SDK: switch_info_t structure has been improved to handle more cases

  • SDK: tform interface was unusable because the window handles were not valid at the form creation time; added events tform_visible/tform_invisible to solve this problem

  • SDK: the kernel handles CM_CC_SPECIAL calling convention; the ph.calc_arglocs callback does not need to handle it anymore

  • SDK: the node titlebar height can be specified in create_graph_viewer()

  • SDK: ua_dodata2() replaces ua_dodata(). The new function handles correctly references to external symbols. ua_dodata() could not handle them because it had no operand offset information and could not calculate the base address of the name

  • SDK: ua_outop2() allows to specify GETN_NODUMMY ans obtain text representation of an operand without modifying the database;

  • SDK: ua_stkvar2() function accepts 'flags' parameter. Currently there is only one constant: STKVAR_VALID_SIZE. It means that the x.dtyp field contains the stack variable data type. For instructions like "lea" this flag should be cleared.

  • SDK: added get_bg_color callback: plugins can dynamically change background colors

  • SDK: pc: added save/restore pushinfo callbacks for function prolog information

  • SDK: new function dummy_name_ea() to detect dummy names

  • SDK: parse_types2() allows to explicitly specify the pa

USER INTERFACE

  • gui: the middle mouse button closes tabs

  • gui: the maximal number of graph nodes can be changed by the user

  • graph overview displays nodes in color

  • gui: reuse the existing stack view on Ctrl-K

  • -T command line switch to specify the file type of the input and to hide the 'load file' dialog box

  • new environment variable IDALOG_SILENT to turn off the messages in the message window; if set, the messages will only be logged to the file specified by IDALOG

  • txt: slightly increased the keyboard cursor size (15%, was 10% of the cell)

  • ui: ida proposes the last used alignment as the default one for the "make alignment" directive

  • ui: the patch submenu is visible under the debugger regardless of the config file settings

  • ui: try to create c style strings too if the current string type is pascal and we could not create it when the user requested a string creation

DEBUGGER

  • debugger: Mac OS X debugger has been added

  • debugger: names exported from a dll can be displayed by double clicking in the module list

  • debugger: it is possible to jump to a location like "fs:0"

  • debugger: optimized breakpoint insertion/deletion (huge breakpoint list would slow ida down tremendously)

BUGFIXES

  • 64-bit and 32-bit user interface data defaults are incompatible with each other and should not be stored in the same registry key uiConfig

  • 64-bit version could erroneously check files with IDB extension before displaying questions like "old database will be overwritten" and similar

  • a wrong function could be marked as a 'thunk' function

  • added support for SSE3 instructions (x86)

  • Alt-K is removed from the hotkey list in some more dialog boxes

  • AMD64 COFF relocations were not taking into account the displacements

  • an unpacked corrupted (or old) database could be deleted by ida if the user told ida that he wants to use the unpacked version but does not want to repair (or upgrade) it

  • apparently the Windows kernel does not use the FileAlign field of the PE header if the object alignment is equal to the page size; IDA was always using it which was wrong

  • ARM: some forms of the MSR instruction were not disassembled

  • calc_stkvar_struc_offset() could return a value with inverted sign

  • char array[sizeof(void*)] could not be parsed

  • command line plugin options were not available for PLUGIN_PROC plugins

  • const and volatile modifiers of structure member declarations were not always processed correctly (nested const declaration of a structure would fail)

  • corrupted graph group information could cause IDA to issue a fatal error message and exit

  • create_flow_chart() could create a wrong edge if the last node of the flowchart was passing execution control to the next instruction; also external nodes with several references to them would be duplicated

  • DEL_CODE_COMMENTS ida.cfg parameter was broken

  • del_frame() was clearing number of purged bytes

  • delayed import table was incorrect for 64 bit programs

  • deleting all stack change points could lead to wrong result of get_spd()

  • dump to idc: if there were several enum members with the same value, all comments were attached to the first enum member

  • ELF loader would use symbols from skipped (not loaded) sections

  • expand a structure type could overflow its size and corrupt the type definition

  • functions returning pointers to arrays could not be specified

  • get_name_value() could erroneosly return NT_BYTE if a spurious netnode with the specified name was existing

  • get_prev_member_idx() was incorrect

  • get_true_name() with the buffer size <= 1 would delete the name

  • graph view hotkeys were not working without a right-click

  • guessed function types without any arguments would explicitly have nargs=0 while it was not necessary

  • hex views were not refreshed during debugging

  • IDA could crash if a group node had too long text

  • ida could crash trying to determine a data item type if it was a self-referencing offset

  • IDA could crash while working with the watches in the debugger

  • IDA could create wrong offet operand for lea instruction, causing incorrect xrefs

  • IDA could cycle endless in the batch mode if the idb file could not be created for some reason

  • IDA could delete a wrong function in some circumstances (user-interface "Delete function" is invoked, Function deletion confirmation is on, Background analysis is running, The database has many functions, User does not respond to the confirmation request immediately)

  • IDA could delete some imported names at the loading time

  • IDA could hang on PE files with corrupted import table

  • IDA could hang trying to guess the function type if the stack frame was bigger than 0x80000000

  • ida could not demangle some borland names (extremely rare cases)

  • IDA was proposing Zilog8 COFF file format as the second choice for some Window PE files

  • IDA would continuously load/unload debugger plugins if the current file was not using them

  • IDA would not always reanalyze function tails after modifying the stack pointer

  • IDA would not recognize some labels in the 'jump to' dialog box

  • ida would silently fail to open too small databases (zero size, for example)

  • IDC command line was not working

  • IDC: INF_AF bit was erroneously named INF_START_AF

  • if an instruction overlapping a function tail begining is created, the tail header would not be visible; now we delete the tail in this situation

  • if the user asked to invert the sign of a zero displacement, the minus sign would be missing from the output

  • in some cases the term() function of a plugin would not be called

  • in the graph handling calc_fitting_params() had a bug - i'm not sure of its consequences and if it was visible for the end user

  • instructions added by processor extensions would always have coprocessor number

  • invoking small help window from dialog boxes would display the help page but would also display 'help not found' error message

  • is some rare cases IDA could crash trying to create instructions at the addresses with existing data items

  • is_castable() was rejecting some type pairs as incompatible

  • it was impossible to prohibit kernel actions from a notification callback in a plugin

  • it was not possible to create many individual elements using the array command in special segments

  • it was not possible to quit IDA after detaching from a process using a mini-database if the idagui.cfg ASK_EXIT and ASK_EXIT_UNPACKED were set to NO

  • java module could not handle a double-slot local variable overlapped with a single-slot variable

  • mach-o loader could hang on some input files trying to parse __cat_inst_meth and similar sections (thanks to Jeremy Cooper for this bugfix!)

  • MIPS processor module was not using delayed branch information to form basic blocks

  • moving a segment could make inaccessible the file offset information which is displayed on the status bar

  • nextthat/prevthat with f_isUnknown were not working under the debugger

  • on dual monitor mode, the graph overview window would be displayed on the monitor with the main ida window; the same behaviour could be observed with some other windows

  • pc: data type specifiers of some simd/sse instructions were wrong

  • pc: IDA was taking into account the 'purged bytes' parameter even for non-returning functions

  • pc: IDA was using "qword ptr" instead of "fword ptr"

  • pc: scas and cmps feature bits were wrong; these instructions do not modify their operands

  • Philips 51XA module was missing some code references

  • Philips 51XA: stack tracing was incorrectly setting the modification points too early

  • PowerPC module was too aggressive with the offset creation

  • pressing K would not automatically create a stack variable for the current operand in some cases

  • printable plugin hotkeys could not be used in the notepad

  • punctuation colors in ascii directives were incorrect

  • REFINFO_NOBASE was not available in IDC

  • removed some screen flicker when jumping to a non-graph location while in the graph preference mode

  • right clicking on an operand does not create spurious dummy names anymore

  • SH3 delay slots were not displayed correctly in the graph view

  • SH3: the mova instruction does not create a 'read' reference but an 'offset' reference

  • some thunk functions were not marked as thnk (if the jump target had no name and the thunk itself had a name)

  • special segments (extern, imem) were displayed incorrectly in the address lists (like xref list)

  • spurious xrefs from special segments (extern, imem) could be created

  • text version was behaving differently from the gui version regarding operation cancellation using Ctrl-Break (the flag was not cleared when it sould have been)

  • text version was not saving the text representation options in the database correctly

  • the calculation of the number of recognized function in flirt was not always correct

  • the comment how to use dumped IDC files was wrong

  • the current location indicator was not refreshed after left/right arrows in the hex view

  • the debugger could miss some segments on some linuxes

  • the debugger server was crashing if the connection could not be established for some reason

  • the default button name was always displayed as 'cancel' in the batch mode log

  • the length of ascii strings was calculated without taking into account the color code bytes

  • the maximal number of marked location was 1023, not 1024 as declared in the header file

  • the notepad contents were not saved by the 'save' command

  • the presence of duplicate symbols in an elf file would lead to a complaint about unusual relocation items

  • the screen was not refreshed after running an idc script by clicking on the script toolbar

  • the structure type footer was not displayed correctly for structures with sizeof() == 0xFFFFFFFF

  • thiscall calling convention clears stack; ida was not taking this into account

  • TIL files for Borland BCB are compatible with Delphi and accepted silently even if the current compiler is Delphi

  • til files were not freed at the 'close' command

  • tms320c3: the emulator could erroneously display a warning about absi and bsf instructions

  • tms320c54 stack variables were wrong

  • tms320c54: function frame size was not determined correctly

  • txt: in the 'text representation' dialog the alt-k hotkey for the stack value display was not avaiable

  • unknown element types in .Net files could cause an error message followed by a crash

  • unknown type signatures were causing garbage bytes in the output for .net files

  • when editing 64bit user-defined offsets, the default offset type was wrong

  • when ida window was resized to an odd size, it could takes very long time to refresh the screen

  • when specifying 64-bit user-defined offsets IDA was asking for the target address which was not necessary

  • WinCE debugger could miss some segments because they were not physically present in the memory at the inquiry time; now it pretends that the program segments are always present (even if they are not)

  • ARM: IDA was confusing some plain branches with tail calls

  • ascii string style could not be set from the general options dialog box

  • x86 smsw instruction had wrong data types

  • ascii string style could not be set from the general options dialog box

  • IDA could crash if a function was appended as a tail to another function idb structure definitions with 'pointer to function' members could not be converted into type strings

  • it was impossible to change navigation band colors from the colors dialog box

  • qisabspath() was wrong

  • sam8 processor module was setting black segment color making the listing difficult to read some MS DOS MS overlays could not be loaded

  • typedef enum {...}; would be rejected as wrong type (in fact it is wrong but compilers allow it)

  • z80 assemblers use parenthesis to indicate memory access; ida was using them for any complex expression

  • "disassembly memory organization" dialog box could automatically resize the RAM or ROM segments thus confusing the user

  • 64bit: the 'search all' results window had the high 32-bits of all addresses truncated

  • basic block boundaries were not always correctly calculated

  • fatal registry related errors could cause a crash

  • launching ~20 copies of IDA simultaneously could lead to registry related errors

  • OMF files with dummy names could not be correctly loaded

  • PC module could crash in some very rare cases

  • pe: the size of the delayed import address table size was too big

  • when commenting VxD calls we could spoil the listing

Last updated 4 months ago

Was this helpful?

register pairs can be specified with a colon like

When the number of bytes purged from the stack by many of the called functions is unknown, tracing the stack pointer becomes very difficult. Previous versions of IDA could handle a single unknown call in a function. IDA Pro 5.1 applies linear algebra methods to handle an unlimited number of unknown calls. While this approach is not 100% reliable, it yields correct results in most cases. More about the method can be found . This analysis option can be turned off in IDA.CFG. The parameter name is AF2_VERSP. At this point, this method of analysis is only available for the x86 family.

edx:eax
here