IDA 7.5sp3

IDA 7.5.201028 (SP3) October 28, 2020

The Service Pack 3 introduces a handful of new and interesting features specific to the soon-to-be-released macOS 11 (Big Sur) and provides fixes for numerous minor issues.

Highlight:

  • We improved macOS11 kernel debugging with VMware Fusion 12.

  • We also improved symbolication of MH_FILESET kernelcaches.

Complete changelist:

Debugger:

  • improved macOS 11 kernel debugging

MACHO:

  • improve handling of threaded pointers in iOS kernelcaches

  • support symbolication of macOS11 kernelcaches that link against the boot/sys kext collection. see BOOT_KC_PATH in macho.cfg for an overview

Bugfixes

  • 78K0S: opcode D5 was incorrectly decoded as INC (should be DEC)

  • A crafted IDB file could trigger a use-after-free in IDA

  • Chooser: the ui_get_chooser_item_attrs event was called with the wrong CHOOSER argument

  • Cloning script snippets could corrupt the database

  • Debugger: ios debugger was broken on iOS14

  • Debugger: ios debugger could fail to fetch the process list on iOS 14

  • Debugger: mac/ios/xnu debuggers would create tons of meaningless debugger segments

  • Debugger: mac debugger could fail to load symbols from system dylibs

  • Debugger: PIN: get rid of warning "Unexpected addrsize of the debugged program", permit remote PIN to be started by Debug->Attach

  • Debugger: linux: debugger could interr when handling program with many short-lived threads

  • Debugger: xnu debugger would fail to demangle c++ names after attaching with an empty database

  • Decompiler: "create new struct type" could generate a new struct type with forbidden characters, like <

  • Decompiler: "push esp/pop reg" was decompiled incorrectly

  • Decompiler: automapping variables was too aggressive in some cases

  • Decompiler: changing the type of a structure field would cause the loss of the __cppobj attribute

  • Decompiler: decompile() would crash if asked to decompile an unexisting function (nullptr)

  • Decompiler: fixed a crash on corrupted idbs

  • Decompiler: fixed false alarm 'ignored garbage at the end of the blob...'

  • Decompiler: fixed interr 50902

  • Decompiler: in some cases the action "Reset pointer type" was not working (had no effect)

  • Decompiler: in some cases the decompiler would add a suffix to the user-defined names (myvar->myvara)

  • Decompiler: jumping to the pseudocode from another window (for example, from the local types) would fail to activate the window in some cases

  • Decompiler: on macOS, the decompiler would use shortcut "Ins" instead of "I" for the "Edit block comment" action

  • Decompiler: PPC: if addresses are subtracted assume that the size is being calculated

  • Decompiler: renaming a structure field would cause the loss of the __cppobj attribute

  • Decompiler: some xrefs to enum members would be missed by Ctrl-Alt-X

  • DWARF: IDA could try to allocate too much memory on corrupted files before dying with out-of-memory error

  • DWARF: The DWARF plugin could crash IDA (null pointer dereference) with some specially-crafted files

  • DWARF: The DWARF plugin could INTERR with specially crafted files

  • DWARF: The plugin could cause IDA to crash (stack exhaustion) with some specially crafted input files

  • DWARF: The plugin could loop (seemingly) endlessly when encountering a DW_TAG_namespace with a (broken) name whose first character is '#'

  • DWARF: The plugin could perform a use-after-free during stack unwinding, on some DWARF input files

  • DWARF: The plugin could perform a use-after-free on some specially crafted files

  • DWARF: validate size of compressed sections before trying to load them

  • IDA could complain about "corrupted database" (bad srrange) when opening a rebased and saved database

  • IDA could crash when loading a corrupted elf file

  • IDA could crash when parsing corrupted PDB files

  • IDA could crash when performing certain manipulations with script snippets

  • IDA could crash when restoring function information from a corrupted database

  • IDA could endlessly loop on some corrupted idbs

  • IDA could fail with internal error 20078 on corrupted ELF files

  • IDA would crash when loading an ARM64 driver if the default debugger was set to windbg

  • IDA would try to allocate huge amount of memory when loading a corrupted elf file

  • IDAPython: IDA could exit silently on startup if the Python runtime called exit() during initialization

  • IDAPython: ida_bytes.bin_search documentation was lacking

  • IDAPython: ida_bytes.next_visea, ida_bytes.prev_visea were not available

  • IDAPython: ida_ida.AF_FINAL had value -0x80000000 instead of 0x80000000

  • IDAPython: ida_name.MNG_* and ida_name.MT_* values were not exposed

  • IDAPython: ida_search.SEARCH_UNICODE was not available after IDA 7.0, while ida_search.find_binary() still is

  • IDAPython: if a 'nav colorizer' would return a long that couldn't be converted into 32-bits, IDA would fail reporting the issue in a timely manner, leaving it for later Python code to fail

  • IDAPython: internal error 30615 could happen if Python intialization failed

  • IDAPython: using ida_kernwin.choose_find() with a non-IDAPython chooser, would crash IDA

  • IDAPython: when using Python 2, scripts with magic 'encoding' comment could fail to run

  • INTERR 1983 could happen in some situations after rebasing

  • LUMINA: fixed "Unsupported OpenSSL version" error on macOS11

  • Modifying an attribute of a function argument (e.g. adding __hidden) would be saved in the database but would not be immediately reflected in the disassembly

  • On windows idat would let the operating system to handle some Ctrl- keys, rendering them unusable in IDA

  • Opening IDA without an IDB and opening the script snippets dialog, and then loading an IDB with snippets, would fail to properly load that database's snippets

  • PC: changes in processor specific options were not undone upon Ctrl-Z

  • PC: parse_reg_name() could return wrong register types for XMM/YMM/ZMM registers

  • PC: some FMA instructions were not decoded in 32-bit mode

  • Rebasing the program by an odd number of bytes was not forbidden (and led to problems later)

  • Renaming a local type by pressing F2 would lead to its removal from all use sites

  • Searching for all occurrences of a byte sequence would not work without an open disassembly view

  • Types: creating a c++ structure with a __vftable member in the struct view was not marking the structure as having vftable; only doing so from local types was working

  • UI/QT: during auto-analysis, typing in the quick filter (e.g., in the 'Functions window') could result in loss of certain characters

  • UI/QT: hiding columns when in 'folders' mode wouldn't work

  • UI/QT: if entries in the "Structures" or "Enums" widgets were sorted, scrolling by using the scrollbar would jump over some entries

  • UI/QT: renaming folders in the "Local types", would show the editor on the wrong cell (in the 'Name' column, even though the folder name is in first column, named 'Ordinal'.)

  • UI/QT: right-click would crash IDA on macOS11 beta7 and later

  • UI/QT: the "Command palette" could refuse to keep the user selection, making it hard to use

  • UI/QT: the decompiler action "Jump to local type" could fail to select the proper type when the "Local types" view was sorted

  • UI/QT: when searching for text in sorted folders views, IDA could loop endlessly

  • UI/TXT: it was impossible to "Import" snippets in the 'Script snippets' dialog

  • UI: Alt+T/Ctrl+T searches in tabular/tree views, wouldn't wrap around as they should

  • UI: choosers starting in "folder" mode, might not have the user-desired sizes for columns

  • UI: Cmd+M would not minimize the IDA window on macOS, per convention

  • UI: debugger stack view could display values with wrong bitness (e.g. 32-bit values for 64-bit programs)

As of SP3, IDAPython is incompatible with Python 3.9. If you are experiencing crashes when running IDAPython code, and in particular if the following statement crashes: `from PyQt5 import QtCore`, please run the `idapyswitch' utility that can be found next to IDA in the install directory and select a Python 3.8 (or earlier) install.

Last updated