For the complete documentation index, see llms.txt. This page is also available as Markdown.

IDA 9.4

IDA 9.4.260714

Welcome to the IDA 9.4 release highlights, and thank you to all our beta testers for joining us during the beta phase! You can get your 9.4 installers in the Download Center of My Hex-Rays portal. Prefer a quick overview? Watch the IDA 9.4 Highlights video.

What's in this release

The marquee features: new Dyld Shared Cache infrastructure, Swift ABI recognition, SVE2, Hexagon & MCore processors, the Pathfinder widget, deep links, and Git-based Teams.

Better Rust and Go analysis, plus Objective-C ARC handling.

Swift ABI recognition, runtime-function typing, and recovery of throwing calls and swiftcall arguments on stripped binaries.

New actions and many pseudocode/microcode output-quality improvements.

New and improved processor support: ARM SVE2/SME, TriCore, RISC-V, and MCore.

ELF/COFF/OMF/PSX improvements, compilation-unit grouping, and Linux kernel modules.

A broadly modernized GDB remote backend, Win32/WinDbg fixes, and RISC-V debugging.

A new IDA Domain API release, IDAPython enhancements, and a large set of new (EA-based) SDK APIs.

Pathfinder, the redesigned Xrefs Graph, the unified Scripts window, and Jump Anywhere as the default jump action.

Faster loading and lower memory use for DWARF and large databases.

Features and components removed or slated for removal in this release.

Comprehensive fixes across every subsystem.

Highlights

New Apple Dyld Shared Cache Infrastructure

Read more about the new DSC workflows in the IDA 9.4: Apple Dyld Shared Cache workflow improvements blog post.

IDA 9.4 completely overhauls the approach to analyzing Dyld Shared Caches:

  • dedicated widgets

  • specialized workflows & actions

  • seamless navigation between shared cache components

  • improved (& correct) analysis

Apple ecosystem reversers should have a much easier time with the new system. See the documentation on the general concepts & workflows!

The initial DSC open dialog

Swift ABI Recognition

Read more about the Swift work in the IDA 9.4: Improved analysis of compiled Swift binaries blog post.

The decompiler and type system now understand the Swift calling convention. Add __swiftself to a function argument to declare it being passed in x20 (arm64) / r13 (x86-64). The function-level attributes __swiftasync and __swiftthrows cause the decompiler to rewrite accesses to/from the designated registers as intrinsics.

Example 1 — Throwing method: BankAccount.withdraw(_:)

Showcases __swiftself, __swiftthrows, the swift error-register (x19) plumbing, and more runtime types (Swift::BoxPair). (Also notice how the undefined variable warnings disappear.)

Before

After


Example 2 — Async function

Showcases __swiftasync and the typed async_context (x22).

Before

After

SVE2 Support

ARM SVE2 and SME extensions are now fully disassembled.

ARM SVE disassembly
ARM MTE decompilation

Decompiler Strings

Strings recovered during decompilation now automatically show up in the list of strings. Note that the list is filled lazily and only contains strings of functions that were previously decompiled.

Decompiler Strings

Qualcomm Hexagon Disassembler & Loader

A brand-new Hexagon (QDSP6) processor module brings Qualcomm DSP firmware into reach, paired with a Qualcomm MBN boot-image loader (SBL/XBL containers, multi-ELF, hash validation).

Qualcomm Hexagon Disassembler & Loader
Qualcomm Hexagon Disassembler & Loader
Qualcomm Hexagon Disassembler & Loader
Qualcomm Hexagon Disassembler & Loader

See the Hexagon disassembler reference for details on packet-based execution, ISA coverage, processor-specific display options, and loading Hexagon binaries.

MCore/CSkyV1 Disassembler

A new processor module for the MCore aka CSky V1 architecture.

CSkyV1 Disassembler
MCore Disassembler

New Pathfinder Widget

Read more about Pathfinder, Jump Anywhere, and other navigation improvements in the IDA 9.4: Smarter Navigation and Quality-of-Life Improvements blog post.

How does execution get from here to there? IDA 9.4 can now answer that directly: the new Pathfinder widget (View > Open subviews > Pathfinder, Shift-F9) finds call paths between functions:

  • pick two or more waypoints - paths are found segment by segment, visiting them in order

  • add the function under the cursor as a waypoint with Ctrl-Shift-F9, straight from a disassembly or pseudocode view

  • exclude functions to keep known noise (logging helpers, generic wrappers) out of the results

  • tune the search: include data xrefs, shortest path only, maximum depth

  • view the results as a pre-expanded cross-references tree, or as an Xrefs Graph with the path highlighted

Pathfinder graphs are regular Xrefs Graphs: they are saved with your database and organized in the new graph manager (see the Xrefs Graph section). Find out what it can answer about your binary!

Share work without shipping files around. Deep links navigate to a specific location in a database and can be opened in an already-running IDA through a new local IPC channel (also usable by external tooling such as HCLI).

"Copy link" context menu
"Jump to link" dialog

Git-Based Teams Server

The “Teams” add-on for IDA Pro can now run with Git servers too… Share IDB files with your team using the Git provider you already use e.g. GitHub, GitLab, Bitbucket, or self-hosted. No server to deploy. No new credentials to issue. Just clone, analyze, commit, push.

Teams Git menu

Further Teams improvements in this release:

  • git ida works in terminals, via an automatically managed global Git configuration

  • the Teams status-bar info can be enabled or disabled from settings (on by default)

  • the Git account settings dialog offers credential fields

A few guides to help you get started or migrate:

Jump Anywhere Becomes the Default Jump Action

Jump Anywhere is now bound to the default g shortcut, replacing the legacy jump-to-address dialog with a unified, type-ahead navigator:

  • index and jump to function comments

  • accept IDC/Python expressions like cpu.EIP

  • live previews as disassembly, pseudocode, or hex

  • jump history with previews

Jump anywhere dialog

IDA Domain API: new release

A new version of the IDA Domain API is available. The latest release (v0.5.0) adds microcode and pseudocode access along with object store/retrieve APIs. See What's new in the IDA Domain API for details.

ARM64 Windows Build of IDA

IDA is now available as a native ARM64 build for Windows-on-ARM.

Compilation Units Folders

Functions can now be grouped in the Functions list by the compilation unit they came from. The compilation-unit structure is reconstructed from COFF, PSX, OMF, TDS, DWARF, PDB and GO, mirroring the original source-file layout of the binary. It's also reconstructed from any user loader that calls add_sourcefile().

Compilation Units Folders
Compilation Units Folders

Unified "Scripts" Window

Replaces the old "Execute script" / "Snippets" dialog with a single dockable "Scripts" window. The window hosts four vertical tabs, each backed by an independent tree widget:

  • "Execute script"/"Snippets" - IDB-resident snippets, now exposed as a tree

  • "Recent scripts" - externally-loaded scripts (filesystem paths), with single-child folder chains coalesced and per-row extlang icons.

  • "Examples" (NEW) - IDAPython-shipped examples.

  • "Search" (NEW) - allows searches across the three sources above

Xrefs Graph: UI Improvement

Xrefs Graph can now display call paths found by the new Pathfinder (see above): the path spine and waypoints are highlighted with dedicated colors, and a path-aware aligned layout keeps the route readable.

The xrefs graph interface has been significantly redesigned in IDA 9.4:

  • A new graph manager for managing graphs, following the same paradigm as the other views

  • Headers have been added to nodes, containing quickly readable information about comments, bookmarks, breakpoints, and missing references

  • Redesigned widgets: some of them have been moved out of the overlay for improved usability

  • The settings have been redesigned so that they are now less cluttered and organized more logically

See the Xref Graph reference for the full picture.

Xrefs Graph is now more consistent with the rest of IDA and easier to use - try it!


Watch what's new in IDA 9.4

Watch the feature overview of the 9.4 release on the All Things IDA channel.

Courtesy of Elias Bachaalany (@allthingsida)

Higher Level Language Support

  • rust: display the detected rust version and used crates in the header

  • rust: type panic locations, detect rustc version and crate list

  • rust: add CM_CC_RUST calling convention

  • golang: add configuration var GOLANG_MAX_ANON_NAME_SIZE

  • golang: parse buildinfo module dependencies for Go 1.18+

  • golang: improve pclntab discovery for PIE ELF binaries

  • golang: remove zero-sized fields from Go struct types

  • golang: derive return type for runtime.newobject from RTYPE arg

  • golang: dwarf: inject hidden dictionary parameter for Go generic functions

  • golang: improve detection of stack arguments (vs spill space)

  • golang: improve detection of standard go arguments and return types

  • improve transforming of duffcopy/duffzero calls

  • objc: add possibility to show / hide objective-C ARC functions and recognize iOS16+ ARC helpers

  • objc: type _objc_{retain,release}_x<N> ARC stubs as __usercall

  • swift: auto-type swift_ runtime-functions and thunks

  • swift: recover throwing calls and functions on stripped binaries

  • swift: recover stack-spilled arguments at swiftcall sites

  • swift: recover __swiftcall on stripped functions

  • swift: report Swift as the compiler in the output header

  • swift: implement __swiftasync function annotation

  • swift: implement __swiftthrows function annotation

  • swift: implement __swiftself argument annotation

Rust version and crates showing up in the heading comment

Decompiler

  • vd: introduce Edit type... action (hotkey e) to edit a type from the decompiler

  • ui: render argument names at the callsite (Edit -> Plugins -> Hex-Rays Decompiler Options -> Options 3 -> Argument name hints to configure/disable)

  • ui: add possibility to collapse code blocks in the interactive ui (chevrons on the left)

  • ui: add possibility to invert then-else for if statement

  • stkvars: more aggressive array detection

  • x64: dereference references to read-only memory

  • vd: add Add cast action for decompiler expressions

  • vd: convert 0/1 to true/false in bool contexts and 0 to nullptr when HO_CPP_CONSTANTS is enabled

  • vd: collapse trailing v = x; return v; inside try/catch bodies

  • vd: recognize fabs/negation from IEEE 754 sign-bit manipulation

  • vd: fold constant rol/ror/bswap operations

  • vd: prefer explicit comparison against zero for non-bool conditions

  • vd: structure phi-arm diamond merges as if-then-else instead of gotos

  • mbui: support for microcode xrefs to registers, stack/local variables, and blocks

  • mbui: hints describe the subinsn under the cursor

  • cbui: add a (very basic) c-tree viewer

  • vd: invert short if (cond) goto L; ...; L: forward jumps

  • vd: transform memcpy() calls to simple assignments when possible

  • vd: more aggressive application of scattered variables

  • vd: better recognition of big function arguments (UDTs, arrays in golang/rust)

Disassembler

Read more about the new and improved processor modules in the IDA 9.4: Wider Processor and Platform Support blog post.

  • arm: SVE2/SME support

  • arm: add SVE/SME architecture detection and UI support for options

  • arm: recognize more switch case constructs observed in modern console SDKs

  • tricore: integrate new regfinder

  • tricore: better switch table recognition

  • tricore: full type system support

  • tricore: support byte- and word-sized registers in tricore.cfg

  • tricore: add relocations support

  • tricore: respect memory mapping during switch handling

  • tricore: add tc45x, tc48x, tc49xN and tc4Dx register maps

  • tricore: improve register def/use analysis for register pairs and 16-bit sub-registers

  • riscv: support Hazard3 (RP2350) extensions

  • riscv: support compressed instructions Zcmp/Zcmt/Zclsd

  • riscv: support Soteria extensions

  • riscv: support shXadd for jump table detection

  • riscv: print c. prefix for compressed instructions

  • v850: recognize more switch patterns

  • mcore: add stack pointer tracking and automatic stack variable creation

  • mcore: improve disassembly output quality and fix the decoding of various instructions

Loaders

  • elf: compact relative-relocation support (DT_RELR)

  • coff: omf: psx: group functions in dirtree according to compilation units

  • elf: recognize and improve loading of Linux kernel modules, add modinfo to listing header

  • elf: arm: infer hardfloat ABI from ELF .ARM.attributes Tag_ABI_VFP_args

Debuggers

  • gdb: general modernization of gdb remote protocol implementation

  • gdb: retrieve loaded libraries from remote on startup

  • riscv: add riscv debugging support for GDB backend

Plugins, SDK & API

  • ida-domain: new release (v0.5.0) adds microcode and pseudocode access plus object store/retrieve APIs

  • idapython: detect/support pythons managed by uv/anaconda/homebrew

  • idapython: warn on libpython/venv version mismatch

  • idapython: expose ida_loader.import_module()

  • idapython: expose ida_lines.add_sourcefiles batch API

  • idapython: expose ida_indexer API (backend of "Jump Anywhere")

  • idalib: automatically activate idalib during installation

  • idalib: add support for async event processing and execute_sync()

  • installer: package idalib with IDA Home

  • installer: bundle analysis.idc with IDA Home (enables the -B switch)

  • sdk: new header dscu.h (and corresponding module ida_dscu) for programmatic access to the new dyld shared cache infrastructure

  • sdk: add color codes used in tiplace_t

  • sdk: add support for extlang custom icons

  • sdk: expose user-defined microinstruction in the api (user_minsn_t, user_minsn_action_t, minsn_locator_t)

  • sdk: add new events ev_query_unmapped_address, ev_load_unmapped_address, ev_sanitize_name, ev_should_handle_switch

  • sdk: new codegen_t::should_handle_switch() hook for processor modules

  • sdk: new methods mba_t::get_numform/set_numform/clr_numform

  • sdk: add new struct field string_info_t::decompiler_string

  • sdk: add EA-based method tinfo_t::get_func_frame()

  • sdk: new ea-based APIs avoiding ida-allocated pointers -- see the porting guide (segments, funcs/frames, decompiler decompile_function/decomp_ranges_t, hidden_range_info_t, get_sourcefile_by_ea(), qflow_chart_ea_t)

  • sdk: new event ev_get_stkarg_parts for multi-slot stkarg stores

  • sdk: add set_func_flag() to set/clear individual function flags

  • sdk: add is_name_defined_locally_ea() ea-based API

  • sdk: add get_prev_function_addr()/get_next_function_addr() ea-based API

  • sdk: add set_function_name_if_jumpfunc() ea-based API

  • sdk: add read-only accessors for func_t internal array fields

  • sdk: add outctx_t::gen_function_header/gen_function_footer

  • sdk: add ev_out_function_header/ev_out_function_footer events

  • sdk: add new API function add_regarg_ea()

  • sdk: add new API class function_item_iterator_t

  • sdk: add new API class function_parent_iterator_t

  • sdk: add new API class function_tail_iterator_t

  • sdk: add get_segment_ea_by_num() to look up a segment's start address by number

  • sdk: set_segment_info() accepts ADDSEG_* flags

  • sdk: allow processor modules to mark outlined functions (FUNC_OUTLINE)

UI & UX

  • pathfinder: new widget to find call paths between functions (Shift-F9)

  • pathfinder: multi-waypoint paths, function exclusions, data-xref/shortest-path/depth options

  • pathfinder: view results as a cross-references tree or a path-highlighted Xrefs Graph

  • pathfinder: allow non-function addresses as waypoints and exclusions

  • xref-graph: Sugiyama-style layered graph

  • xref-graph: visual cues on nodes (xrefs, bookmarks, breakpoints, comments)

  • xref-graph: new graph management widget

  • xref-graph: display and highlight call paths found by Pathfinder

  • xref-graph: improve UI

  • jump anywhere: make the expression-evaluation language selectable

  • jump anywhere: highlight matched text in name/data/string results

  • jump anywhere: highlight all query matches, also on selected rows

  • jump anywhere: replace the hex preview with the real hex view

  • jump anywhere: add an option to restore the last query results on reopen

  • ui: show release notes on first launch

  • scripts: new "export headless" action for exporting script snippet as idalib standalone script

  • ldr: modernize image base/segment ux in initial load dialog

  • ldr: render referenced shared object for imported symbol names

  • licensing: improve workflows when using borrowed floating licenses

Performance

  • dwarf: speed up loading (including line-number import) and reduce memory usage on large DWARF files

  • kernel: speed up loading of files which added a large amount of names (e.g. Dyld shared caches)

  • btree: reduce cache and free-page cleanup overhead

  • pc: speed up frame analysis

  • pc: add write xref cache

  • kdata: faster get_db_byte analysis hotpath

  • performance: skip the upper-32 flag fetch on hot paths

  • swift: mark swiftcall callers incrementally instead of rescanning per analysis wave

  • eh: speed up loading MSVC PE binaries with heavy use of C++ exception handling

  • eh_parse: optimize xref traversal in get_xref_info_for_ea()

Deprecations

  • idaclang: migrated to tilib with the new clang parser

Bugfixes

Higher Level Languages

  • vd: wrong argument optimization in golang functions

  • golang: some Go types were not recognized in certain databases

  • golang: fix itablinks processing for Go 1.18+

  • golang: dwarf: fix wrong prototypes for Go functions returning a function or tuple

  • vd: fix a hang in duffcopy/duffzero handling

Decompiler

  • mbui: structural analysis action did not show intermediate reduction steps in non-debug builds

  • mbui: xref-to chooser could jump to block header instead of instruction line

  • mbui: double-click in graph mode failed to follow the entity under the cursor

  • mbui: failed decompilation when opening mbui would result in the viewer being leaked

  • mbui: graph rendering mode was lost across desktop save/restore

  • mbui: cached microcode could remain stale after edits to other functions

  • mbui: comments could be duplicated if neighboring minsns had the same ea

  • vd: "create new struct type" was not working in ILP32 binaries

  • vd: use correct operand size for division when split optimization shrunk subtraction

  • vd: reject FP comparisons in 64-bit subtraction carry pattern

  • vd: the field offset displayed in the hint could be wrong

  • vd: skip corrupted user microinstructions during deserialization

  • vd: missing return statement for functions using push rax for stack allocation

  • vd: arm: fix INTERR 50920 for ARM64 NGCS instruction

  • vd: pc: fix INTERR 50708 for pointer-to-array dereference in assignments

  • vd: pc: fix INTERR 52368/53023 on x64 chained switches sharing a default

  • vd: arm: fix INTERR 50920 for ARM64 SME MOVA instructions

  • vd: arm: PC reference inside an unsupported insn could trigger INTERR 50920

  • vd: arm: PC reference inside SMLAL-family insn could trigger INTERR 50920

  • vd: arm: MOVT PC could trigger INTERR 50920

  • vd: arm: STRD storing the LR,PC register pair could trigger INTERR 50920

  • vd: fix INTERR 51264 on functions with conditional add of side-effecting value

  • vd: fix wrong decompilation when user splits a call's return value

  • vd: fix INTERR 50757 on deep low/high slicing of UDT scatters

  • vd: -Ohexrays could not handle Windows paths with drive letters

  • vd: fix INTERR 50757 on m_low/m_high slicing memfunc mov into non-power-of-2 size

  • vd: fix INTERR 50709 on wide-mop high-half access with cot_cast lvalue

  • vd: fix INTERR 50708 on memcpy restored from a call source

  • vd: fix INTERR 53023 in combine_sar_sar with intermediate uses of low half

  • vd: avoid INTERR 52368 when a plugin injects edges into a kreg jtbl

  • vd: reject memcpy when source is any non-addressable mop_d

  • vd: preserve udt flag when replacing scattered operand

  • vd: refuse 64-bit add/sub/mul combine when cins's def is used between cins and dins

  • vd: do not propagate fpinsn from embedded sub-insns to the combined struct copy

  • vd: do not unpack scattered packing when kreg destination has uncovered bytes

  • vd: convert array=array assignment to memcpy to avoid INTERR 50708

  • vd: outlined code that accesses the caller's stack frame was inlined at the wrong stack offset

  • vd: fix error message printing for invalid deserialization

  • vd: fix wrong OPROP_UDT flag in operands

  • vd: fix resolve_pair() breaking 64-bit multiplication patterns

  • vd: ppc spe: wrong handling of helper args wider than 4 bytes

  • vd: permit propagation of void-returning memcpy calls

  • vd: INTERR 50710 (casting to array is forbidden) for usercall functions

  • vd: conflict between scattered local var and arguments

  • vd: risc-v: fix minor spec mismatches in the microcode

  • vd: reset decompilation failures if config is changed

  • vd: fix a crash in the Display chains microcode view action

  • vd: fix an empty stkvar du-ud chooser in the microcode view

  • vd: fix the Edit type action for types from a TIL

  • vd: opaque Windows types were not replaced by their typedefs (like HWND)

  • vd: renaming a structure field accessed through a typedef had no effect

  • vd: garbage pseudocode restored from the database for functions with try/catch

  • vd: function roles were not serialized

  • vd: write -dump/-cdump2 files next to the IDB when IDA_DUMPDIR is unset

  • vd: fix an endless loop

  • vd: always align the argument area by double slot size

  • vd: spoiled VARNUM in chain allocation

  • vd: swift: fix INTERR 30734 when decompiling functions whose return is wider than one register

  • vd: fix INTERR 473 when correcting pointer arithmetic into a union field

  • vd: fix INTERR 50312 on switches with a sign/zero-extended index

  • vd: fix INTERR 50318 when a callee prototype's argument type could not be applied to a caller stack variable

  • vd: fix INTERR 50342 after switch improving

  • vd: fix INTERR 50531 (inlined external insn was missing from extinsns)

  • vd: fix INTERR 50629 when a switch preserves a wide vector register

  • vd: fix INTERR 50708 on storing a floating-point constant

  • vd: fix INTERR 50757 when decompiling large structure copies

  • vd: fix INTERR 50757 on propagating a struct-returning indirect call

  • vd: fix INTERR 50920 (3-operand ARM STREXD left implicit Rt2=PC untranslated)

  • vd: fix INTERR 52368 on x64 switches inside exception regions

  • vd: fix INTERR 52724 caused by int3 traps in x64 code

  • vd: fix INTERR 52870 in chain lvar allocation

  • eh34: harden the prologue validation introduced for INTERR 52724

Disassembler

  • pc: also apply ds-segreg flatten rule in the switch-detector path

  • pc: don't shift [imm32] by auto-tracked ds in 32-bit code

  • arm: recognize STM SP as a stkarg store

  • arm: fix INTERR 51312 when decompiling SVE-encoded XAR

  • arm: fix SVE/MVE setting for metarm;

  • arm: fix analyzing UDF for AArch64

  • arm: fix infinite loop with self-referential frame pointer

  • ppc: fix INTERR 2765 which could happen in SPE files with sign extended addresses

  • ppc: VLE displacement operands with r0 base were incorrectly converted to direct address accesses

  • ppc: fix wrong data offsets on register-based displacements

  • analysis: stack args' types or comments could be wrong when sequential calls reused stack slots

  • 80196: fix handling of indirect and indexed addressing modes

  • arc, mips: fix indirect register being modified in the delay slot

  • arc: fix decoding of dbnz and xbfu

  • risc-v: fix a bunch of decoding bugs

  • risc-v: improve fence instruction printing

  • risc-v: fix c.addiw with rd = x0 being decoded

  • risc-v: fix spurious 'alternative name' being shown for every symbol

  • risc-v: handle pair operands correctly

  • risc-v: fix bug with sign extension on RV64 ADDIW

  • risc-v: fix alternative extension comments

  • risc-v: fix bug with auipc getting merged too eagerly

Debug Info

  • dwarf: import C++ classes that reuse base-class tail padding

  • dwarf: import SIMD vector types as struct/union members

  • dwarf: ignore post-prolog spill locations for arglocs

  • dwarf: fix handling of duplicated Go formal parameters

  • dwarf: render AArch64 reg 31 as canonical SP, not literal XSP

  • dwarf: fix handling of 0-address symbols

  • dwarf: skip line numbers with out-of-range addresses

  • dwarf: incorrect handling of DW_OP_bit_piece

  • dwarf: incorrect parsing of xmm register locations on x86_64

  • dwarf: also treat ELF/Mach-O magic at low_pc=0 as a tombstone

Type System

  • tinfo: guard unpack_typestr against NULL from unpack_str

  • types: removing a __shifted type's parent could crash IDA

  • types: structure xrefs to stack variables with dotted member names showed raw netnode keys

  • tinfo: stale frame cache hit tripped INTERR 955

  • tinfo: do not save empty tinfo

  • tinfo: PRTYPE_DEF need to be reset after usage

  • frame: function return address frame slot should not be overlapped

  • parser: instantiate the enumeration declared within a template

  • parser: do not duplicate the name for a typedef

  • parser: honor the Microsoft ABI for member pointers

Core

  • network: Windows TLS: 'Failed to load baked-in Root Certificate'

  • funcs dirtree: Windows source paths were not properly supported

  • analysis: opening a large database could hang while propagating function argument names

  • idb: fix a crash at the database closing time

  • idb: in a corrupted database, a function may contain another function as a tail

  • eh_parse: MS C++ cleanup handlers created spurious try blocks outside their scope

  • kernel: take into account a flow cref for function tail

  • demangler: fix INTERR 1223 on deeply nested mangled names

  • fix INTERR 640 caused by a corrupt argument location in the database

  • fix INTERR 2765 that could occur while analyzing 32-bit x86 PE files

Loader

  • dsc: fix crash when loading a module from a filtered list

  • dsc: recognize and rename iOS 27 selector stubs coming from the new libobjcMsgSend* modules

  • dsc: objc: method prototypes that were missing in recent dyld shared caches

  • dsc: no more spurious "is already loaded" prompt during analysis

  • mach-o: keep the entry-point segment visible even when it has no sections

  • mach-o: decrypt Apple-protected segments located past the unprotected header

Plugins, API & SDK

  • idc.py: trailing commas turned constants into tuples

  • idat: support -Ohexrays:-Dname=value in parse_options

  • cli: fix completion crash, redundant hints, and hint placement on multi-screen wayland

  • ui: fix IDA crash at exit when a plugin held PySide6 widgets in Python globals

  • idapython: a failed ida_* module import made all of IDAPython unusable

  • idapython: prevent crash when IDAPython initialization fails halfway

  • idapython: don't crash on launch when Python is not configured

  • idapython: replace old contact email with github link

  • idapython: fix idc.get_min_spd_ea() implementation

  • idapython: declare lines range SWIG dep so sourcefile_t inherits start_ea/end_ea

  • idapython: add proper ownership handling for cif and cloop

  • idapython: fix gen_microcode() memory leak (mba_t.release)

  • kernel: duplicate warning when a fixed plugin failed to init

  • idalib: parse_tagged_line_sections() was not available

  • idalib: flush database on process exit

  • idalib: honor -Olicense:... when passed via open_database(args=...)

  • idalib: suppress spurious "bad hotkey" warning in headless/text mode

  • idalib: print to stderr in verror_impl

  • idalib: bring gen_disasm_text back to life

  • idalib: tests: improve utils

  • installer: fix the idalib activation page for IDA Home and when Python is already installed

  • installer: fix the Linux desktop entry

  • installer: idapython: mac: idapyswitch -a now keeps the currently-selected Python

  • sdk: forbid an ordinal name as argument for copy_named_type()

UI & UX

  • ui: jump anywhere: restore focus around Jump Anywhere modal exec()

  • ui: jump anywhere: stop the Jump Anywhere preview from being picked as a jump fallback

  • ui: jump anywhere: clamp negative-underflow offsets in JumpAnywhere local-type expr

  • ui: jump anywhere: a trailing space in the query no longer clears the result list

  • ui: jump anywhere: result list no longer flickers when refining a query

  • ui: jump anywhere: drive history mirror from explicit gestures

  • ui: jump anywhere: improve history list contrast across themes

  • ui: jump anywhere: only select the mirrored input at dialog open

  • ui: jump anywhere: keep history selection across an empty-input round trip

  • ui: graph view: a hint no longer reappears over empty space after clicking a name

  • ui: about dialog: show the version / build-type line without bold

  • ui: about dialog: bottom groupbox border was clipped by the buttons and artwork on some platforms

  • ui: snippets: get_cur_snippet() returns a pointer, null when cur idx is stale

  • ui: xref graph: minimap froze IDA when two graphs were visible

  • ui: xref graph: zooming could get stuck when fit-to-view left the graph beyond the zoom limits

  • ui: xref graph: fix color for dark mode on macOS

  • ui: jumping to a structure from the pseudocode, could fail to place the cursor at the right type/offset

  • ui: IDA could UAF accessing freed line_data_t instances

  • ui: restore Dalvik chooser widgets when applying desktop

  • ui: status bar analysis indicator now updates synchronously when toggled

  • ui: fix possible wrong matches and internal error when quick-filtering a list whose item is filed under several folders

  • ui: in the License Manager dialog, retrying a failed borrow could crash IDA

  • ui: crash when using chooser actions dispatched via command palette

  • ui: jump to stack memory on dbl-click of stack var under debugger

  • ui: navbar click on data did not switch from pseudocode to IDA-View

  • ui: fix INTERR 40567 when switching from graph to flat view

  • ui: hint popup title was unreadable on macOS in dark mode with the default theme

  • ui: adaptive (theme-aware) "Scripts" icons and palette-driven theming

  • ui: dark theme fixes for the Windows 11 style

  • ui: assorted UI fixes and small improvements

  • ui: bookmarks from databases created before 7.0 showed garbage addresses after upgrade

  • pathfinder: waypoint names now recolor on OS theme change

  • pathfinder: Pathfinder and forms UX polish

  • links: add icons for the "Copy link" and "Jump to link" menu actions

Licensing

  • licensing: a local borrowed license still produced a connection attempt to the license server

  • licensing: don't INTERR on borrowed license with an unsigned hexlic

  • licensing: borrowed license stuck in License Manager when Return failed

  • licensing: switching the license server silently kept using a borrow from the previous one

  • licensing: remove license as a requirement for update check

  • licensing: fix "error retrieving user info" in the IDA View header

Debugger

  • win32/windbg: fix incorrect TEB segment labeling and add PEB segment

  • core: fix bug with duplicate debugger names

  • dbg: elf: make executable libs runnable

  • dbg: pin: fix appcalls and exception handling

  • dbg: pin: improve exception handling in the pintool

  • dbg: gdb: auto-resume threads that hit breakpoints during a step

  • dbg: gdb: fix memory reads where the first byte is 0xE0-0xEF

  • dbg: gdb: log unexpected SIGTRAP from threads not resumed by client

  • dbg: gdb: prefer wildcard vCont to avoid common stub bug

  • dbg: gdb: fix gdb test listing and disable pc_gdb_notepad_replay

  • dbg: gdb: fallback step packets for older stubs

  • dbg: gdb: avoid redundant vCont;Cxx;c continue packets for bad servers

  • dbg: gdb: perform multiple qSupported probes for bad servers

  • dbg: gdb: fix broken X-write fallback to M writes

  • dbg: gdb: fix error handling in qGetTIBAddr probe

  • dbg: gdb: properly handle swbreak and hwbreak in gdb server

  • dbg: gdb: fix crashing gdbserver on Windows

  • dbg: gdb: refactor the way pausing and stepping is handled

  • dbg: gdb: fix duplicate/empty modules

  • dbg: gdb: send default continue action for other threads

  • dbg: gdb: handle library stop reason

  • dbg: gdb: get the image base from the TIB in setup_exeimg

  • dbg: gdb: attempt qGetTIBAddr for every thread

  • dbg: gdb: fix missing multiprocess gdb feature

  • dbg: gdb: do not time out when running monitor commands (matches GDB)

  • dbg: gdb: derive segment bitness from the image when possible

  • dbg: gdb: use fs_base/gs_base registers for navigation when available

Teams

  • teams: don't show the status bar or enable actions on non-git-ida Git repos

Last updated

Was this helpful?