【逆向分析】IDA 8.4.220215 February 15, 2024

admin 2024年2月19日08:53:25评论91 views字数 11062阅读36分52秒阅读模式

IDA 8.4.220215 February 15, 2024

IDA 8.4 Highlights

Unified type storage (ASMTIL)

  • The presence of Structures, Enums and Local Types views and synchronization between them confused many users, especially those new to IDA. We have decided to add all missing features (such as structure field representation) to Local Types and now all type manipulations (still with familiar hotkeys!) can be done there. New databases will only have Local Types by default and Structures and Enums are deprecated.

许多用户,尤其是 IDA 的新手,对 Structures(结构)、Enums(枚举)和 Local Types(局部类型)视图的存在以及它们之间的同步感到困惑。我们决定将所有缺失的功能(例如结构字段表示)添加到 Local Types 中,现在所有类型操作(仍然使用熟悉的热键!)都可以在那里完成。新数据库默认情况下仅具有 Local Types,而 Structures 和 Enums 已被弃用。

【逆向分析】IDA 8.4.220215 February 15, 2024

  • The new Local Types Widget allows editing structures like the classic Structures widget, or via a free-text editor.

新的本地类型窗口允许像经典结构窗口一样编辑结构,或者通过自由文本编辑器进行编辑。

【逆向分析】IDA 8.4.220215 February 15, 2024

【逆向分析】IDA 8.4.220215 February 15, 2024

  • The same goes for enum types:

枚举类型也是如此。

【逆向分析】IDA 8.4.220215 February 15, 2024

ARM/iOS improvements

  • We added support for common Apple-specific instructions and system registers commonly encountered in iOS and macOS software. This means you should see fewer instances of undefined bytes breaking disassembly and more understandable code when working with these files.

我们添加了对 iOS 和 macOS 软件中常见的特定于 Apple 的指令和系统寄存器的支持。这意味着在处理这些文件时,您应该会看到未定义字节破坏反汇编的情况更少,代码也更易于理解。

【逆向分析】IDA 8.4.220215 February 15, 2024

【逆向分析】IDA 8.4.220215 February 15, 2024

  • ARMv8.6-A support. We've added most of mandatory and optional instructions from ARMv8.6-A (with notable exception of SVE). In particular, we added the following instruction set extensions:

  • FEAT_SHA3: (4) Advanced SIMD SHA3 instructions

  • FEAT_SHA512: (4) Advanced SIMD SHA512 instructions

  • FEAT_DotProd: (2) Advanced SIMD dot product instructions

  • FEAT_BF16: (8) BFloat16 (Brain Floating Point) instructions

  • FEAT_FHM: (2) Floating-point half-precision multiplication instructions

  • FEAT_I8MM: (5) Int8 matrix multiplication instructions

ARMv8.6-A 支持。我们已经添加了大部分 ARMv8.6-A 的强制和可选指令(除了 SVE)。特别是,我们添加了以下指令集扩展:FEAT_SHA3:(4)高级 SIMD SHA3 指令 FEAT_SHA512:(4)高级 SIMD SHA512 指令 FEAT_DotProd:(2)高级 SIMD 点积指令 FEAT_BF16:(8)BFloat16(大脑浮点)指令 FEAT_FHM:(2)浮点半精度乘法指令 FEAT_I8MM:(5)Int8 矩阵乘法指令

【逆向分析】IDA 8.4.220215 February 15, 2024

  • ARMv8-M support: we now properly disassemble accesses to the new system registers introduced since ARMv7-M (for example, NS variants of some registers)

ARMv8-M 支持:我们现在正确反汇编自 ARMv7-M 以来引入的新系统寄存器的访问(例如,某些寄存器的 NS 变体)

【逆向分析】IDA 8.4.220215 February 15, 2024

  • The Mach-O loader now offers fine-grained control over the selection of dyld shared cache modules and their dependencies:

Mach-O 加载器现在提供了对 dyld 共享缓存模块及其依赖项的选择的细粒度控制。

【逆向分析】IDA 8.4.220215 February 15, 2024

  • The ARM32 decompiler supports hard-float ABI (floating point values passed and returned in FPU registers):

ARM32 反编译器支持硬浮点数 ABI(在 FPU 寄存器中传递和返回浮点数值)

【逆向分析】IDA 8.4.220215 February 15, 2024

Debugger improvements

  • We added support for recent Android versions and made it more robust when working with apps without debug information. If running on a recent (API28+) Android, IDA will try to guess the variable type automatically. Since in the Dalvik VM the value of a variable cannot be displayed without knowing its type, this boosts the debugging experience significantly.

我们增加了对最新 Android 版本的支持,并在处理没有调试信息的应用程序时使其更加健壮。如果在较新的(API28+)Android 上运行,IDA 将尝试自动猜测变量类型。由于在 Dalvik VM 中,在不知道变量类型的情况下无法显示变量的值,因此这极大地增强了调试体验。

Dalvik debugger without type information:

Dalvik 调试器没有类型信息。

【逆向分析】IDA 8.4.220215 February 15, 2024

The same app, but with successfully guessed types for all local variable slots that are in scope:

【逆向分析】IDA 8.4.220215 February 15, 2024

  • Environment variables can now be specified for Windows/Linux/Mac debuggers in process options:

现在可以在进程选项中为 Windows/Linux/Mac 调试器指定环境变量。

【逆向分析】IDA 8.4.220215 February 15, 2024

  • We made various improvements to the debugging backends:

    • Address Space Layout Randomization (ASLR) can now be disabled for most platforms that support it (local debuggers and remote gdbstub). This simplifies debugging in cases where deterministic addresses are desired.

    • We enabled NoAck mode on iOS, saving one round trip time. This is beneficial for anybody debugging remote devices over high-latency connections (typically cloud-based emulators).

    • Finally, our remote debugging server now is available for ARM64 Linux.

我们对调试后端进行了各种改进: 现在可以为大多数支持它的平台(本地调试器和远程 gdbstub)禁用地址空间布局随机化(ASLR)。这在需要确定性地址的情况下简化了调试。 我们在 iOS 上启用了 NoAck 模式,节省了一个往返时间。这对于任何通过高延迟连接(通常是基于云的模拟器)调试远程设备的人都很有用。 最后,我们的远程调试服务器现在可用于 ARM64 Linux。

【逆向分析】IDA 8.4.220215 February 15, 2024

Modernized Look-and-feel

  • We replaced all icons with brushed-up, vectorized versions and added a crosshair effect to the minigraph view for orientation in large graphs.

我们用经过改进的矢量化版本替换了所有图标,并在大型图表的迷你图视图中添加了十字线效果,以方便定位。

【逆向分析】IDA 8.4.220215 February 15, 2024

Moreover, pixelated fonts are a thing of the past. Texts in graph mode now render crisp at any zoom level.

此外,像素化字体已成为过去。图表模式中的文本现在在任何缩放级别下都能清晰显示。

【逆向分析】IDA 8.4.220215 February 15, 2024

  • Scrolling and zooming via the trackpad now works smoothly (especially, but not limited to, macOS)

现在,通过触摸板滚动和缩放可以顺畅运行(尤其是但不限于 macOS)

  • better graph layouts with fewer(none?) edge intersections, even on big functions

更好的图形布局,即使是在大型函数中,也可以减少(甚至没有)边交叉。

Improved Parsing of Rust metadata

  • We added a plugin for parsing Rust-specific data and constructs. As a consequence, the huge string pools typically observed in Rust binaries are now split up properly. Moreover, the plugin adds demangling of both legacy and the v0 Rust name mangling format.

我们添加了一个用于解析特定于 Rust 的数据和结构的插件。因此,现在可以正确拆分 Rust 二进制文件中通常观察到的巨大字符串池。此外,该插件还添加了对旧版和 v0 Rust 名称混淆格式的去混淆。

【逆向分析】IDA 8.4.220215 February 15, 2024

【逆向分析】IDA 8.4.220215 February 15, 2024

Full list of changes and new features:

Processor modules

  • ARM: added some Apple-specific A64 system registers

  • ARM: added support for most ARMv8.6-A instructions: FHM, BF16, SHA3, SHA512, SM3, SM4

  • ARM: decode Apple-specific instructions used in iOS and macOS (GXF, AMX, SDSB etc.)

  • ARM: detect calls in A64 mode when X30 (LR) points to the address after a branch

  • ARM: expand the architecture settings dialog with explicit options for ARMv8-A, ARMv8-M and ARMv9

  • ARM: improved handling of references to fields of structure instances

  • ARM: improved xref creation for LDP and STP instructions

  • PC: added decoding of new Sapphire Rapids instructions (UINTR and HRESET)

  • PC: support x86 switch variation produced by GCC 4.8

  • PPC: implemented a simple regtracker (regfinder)

  • PPC: improved handling of references to fields of structure instances

  • MIPS: added support of $s1 as frame register in mips16 functions

  • MIPS: improved handling of references to fields of structure instances

  • NEC850: implemented a simple regtracker (regfinder)

  • NEC850: print the target for indirect jumps and calls (when available)

  • NEC850: support a new switch pattern (uses 'bnc' after 'addi')

  • TMS320C28X: added support for extended instructions (FPU, FPU64, VCU, VCRC, VCU-II, TMU, FINTDIV)

ARM:添加了一些 Apple 特定的 A64 系统寄存器 ARM:添加了对大多数 ARMv8.6-A 指令的支持:FHM、BF16、SHA3、SHA512、SM3、SM4 ARM:解码 iOS 和 macOS 中使用的 Apple 特定指令(GXF、AMX、SDSB 等) ARM:当 X30(LR)指向分支后的地址时,检测 A64 模式下的调用 ARM:扩展架构设置对话框,明确提供 ARMv8-A、ARMv8-M 和 ARMv9 的选项 ARM:改进了对结构实例字段引用的处理 ARM:改进了 LDP 和 STP 指令的 xref 创建 PC:添加了新的 Sapphire Rapids 指令(UINTR 和 HRESET)的解码 PC:支持 GCC 4.8 生成的 x86 切换变体 PPC:实施了一个简单的 regtracker(regfinder) PPC:改进了对结构实例字段引用的处理 MIPS:在 mips16 函数中添加了对$s1 作为帧寄存器的支持 MIPS:改进了对结构实例字段引用的处理 NEC850:实施了一个简单的 regtracker(regfinder) NEC850:打印间接跳转和调用的目标(如果可用) NEC850:支持新的切换模式(使用“bnc”在“addi”之后) TMS320C28X:添加了对扩展指令(FPU、FPU64、VCU、VCRC、VCU-II、TMU、FINTDIV)的支持

File formats

  • MACHO: overhaul of the dyld shared cache module selection system

  • MACHO: properly describe versioned arm64e ABI Mach-O files

  • MACHO: support relocations provided by the __chain_starts section in Apple's firmware components (e.g. SPTM, TXM)

  • MACHO: added support for dyld slide info version 5 (macOS 14.4)

MACHO:全面检查 dyld 共享缓存模块选择系统 MACHO:正确描述 arm64e ABI Mach-O 文件的版本 MACHO:支持 Apple 固件组件(例如 SPTM、TXM)中__chain_starts 部分提供的重定位 MACHO:添加了对 dyld 幻灯片信息版本 5(macOS 14.4)的支持

FLIRT / TILS / IDS

  • FLIRT: added signatures for icl 231 (Intel C++ 2023.1.0)

  • FLIRT: go: runtime signatures for go1.22 (x86_64)

  • FLIRT: go: startup and runtime signatures for go1.21 (x86_64)

  • FLIRT: VC: added signatures for vc14.36 (Visual Studio 2022.16)

  • FLIRT: VC: added signatures for vc14.37 (Visual Studio 2022::VC17.7)

  • TIL: MacOSX12.0 SDK

  • TIL: MacOSX13.0 SDK

  • TIL: MacOSX14.0 SDK

  • TIL: iPhoneOS15.0 SDK

  • TIL: iPhoneOS16.4 SDK

  • TIL: iPhoneOS17.0 SDK

FLIRT:添加了对 icl 231(Intel C++ 2023.1.0)的签名 FLIRT:go:go1.22(x86_64)的运行时签名 FLIRT:go:go1.21(x86_64)的启动和运行时签名 FLIRT:VC:添加了对 vc14.36(Visual Studio 2022.16)的签名 FLIRT:VC:添加了对 vc14.37(Visual Studio 2022::VC17.7)的签名 TIL:MacOSX12.0 SDK TIL:MacOSX13.0 SDK TIL:MacOSX14.0 SDK TIL:iPhoneOS15.0 SDK TIL:iPhoneOS16.4 SDK TIL:iPhoneOS17.0 SDK

Standard plugins

  • makesig: new plugin to generate FLIRT signatures from the current database

  • makesig: Added File > Produce file > Create SIG file... action

  • DWARF: Handle oversized bitfield groups at the end of structures

  • idaclang: parse __attribute__((annotate("...")))

  • OBJC: added support for relative lists of properties and protocols (iOS17 optimization)

  • OBJC: got rid of extra cast to 'Class' in the calls to objc_alloc() and objc_alloc_init()

  • OBJC: handle object initialization using objc_opt_new

  • OBJC: simplify calls to the 'objc_msgSend$method' helpers and add cross-references to destination method using the decompiler

  • rust: new plugin for parsing rust-specific data and constructs (e.g. splitting merged string literals)

  • rust: support demangling of both legacy and the v0 mangling format (RFC 2603)

  • SWIFT: group functions by the module name; added an option to swift.cfg

  • SWIFT: updated demangler for Swift 5.9

makesig:新插件,用于从当前数据库生成 FLIRT 签名 makesig:添加了“文件”>“生成文件”>“创建 SIG 文件...”操作 DWARF:处理结构末尾超大的位字段组 idaclang:解析__attribute__((annotate("..."))) OBJC:添加了对属性和协议相对列表的支持(iOS17 优化) OBJC:在调用 objc_alloc() 和 objc_alloc_init() 时,消除了对 'Class' 的额外转换 OBJC:处理使用 objc_opt_new 的对象初始化 OBJC:简化对 'objc_msgSend$method' 助手的调用,并使用反编译器添加到目标方法的交叉引用 rust:用于解析 rust 特定数据和结构的新插件(例如,拆分合并的字符串字面量) rust:支持旧版和 v0 命名法格式(RFC 2603)的去混淆 SWIFT:按模块名对函数进行分组;向 swift.cfg 添加了一个选项 SWIFT:更新了 Swift 5.9 的反编译器

Kernel/Misc

  • kernel: added a new analysis option "Merge strlits" (enabled by default, disabled for golang)

  • kernel: allow constant with value 0 for bitmask enum if zero is not the only one constant in group and there is more than 1 group

  • kernel: allow register names as struct/union member names.

  • kernel: assume g++ 3.x (Itanium ABI) name mangling by default

  • kernel: improve strlit discovery from cross-references

  • kernel: parse __attribute__((annotate("...")))

kernel:添加了一个新的分析选项“Merge strlits”(默认启用,对 golang 禁用) kernel:如果组中存在多个常量且不止一个组,则允许位掩码枚举使用值为 0 的常量 kernel:允许将寄存器名称用作结构/联合成员名称。 kernel:默认情况下假设 g++ 3.x(Itanium ABI)名称混淆 kernel:改进从交叉引用中发现的 strlit kernel:解析__attribute__((annotate("...")))

Scripting & SDK

  • IDAPython: implemented idc.sizeof(), equivalent of the IDC function

  • IDAPython: improve doc and error message for ida_typeinf.calc_type_size()

  • IDC: highlight more keywords in the script editor

  • SDK: improved get_utf8_char() not to move the pointer past the terminating zero

  • SDK: improved idb_event::local_types_changed to include more detailed info about the modified types

  • SDK: renamed get_ordinal_qty -> get_ordinal_limit

IDAPython:实现了 idc.sizeof(),相当于 IDC 函数 IDAPython:改进了 ida_typeinf.calc_type_size() 的文档和错误消息 IDC:在脚本编辑器中突出显示更多关键字 SDK:改进了 get_utf8_char(),使指针不会越过终止零 SDK:改进了 idb_event::local_types_changed,以包含有关修改类型的更详细信息 SDK:将 get_ordinal_qty 重命名为 get_ordinal_limit

UI

  • UI: added "Find register definition" and "Find register use" to the IDA View context menu

  • UI: debugger: added environment variables to the process options dialog

  • UI: enable folders in the Functions window by default

  • UI: FLIRT signatures can now be loaded from arbitrary location and not just IDA's sig folder

  • UI: graph: add ability to select graph edges, in addition to nodes

  • UI: graph: highlight item under mouse after jump on edge (when the animation stops)

  • UI: graph: improved readability of the graph overview's focus area

  • UI: highlight focused area in the mini graph view

  • UI: improved displaying of string literals in terse structure view

  • UI: improved Local Types view to be a complete replacement for assembler-style Enums and Structs (which are deprecated)

  • UI: improved output of array of structs and output of varstruct (if last field is not empty)

  • UI: improved output of terse struct with nested varstruct

  • UI: improved wheel scrolling, to make it smoother (and more accurate)

  • UI: new icon set, SVG-based and with a refreshed palette

  • UI: reduce the delay when invoking 'Convert to array' action

  • UI: save "Turn on sync

用户界面:在 IDA 视图的上下文菜单中添加了“查找寄存器定义”和“查找寄存器使用”。 用户界面:调试器:将环境变量添加到进程选项对话框。 用户界面:默认启用函数窗口中的文件夹。 用户界面:现在可以从任意位置加载 FLIRT 签名,而不仅仅是 IDA 的 sig 文件夹。 用户界面:图表:添加了选择图表边的能力,以及节点。 用户界面:图表:在跳转到边后(当动画停止时)突出显示鼠标下的项目。 用户界面:提高了图表概述中焦点区域的可读性。 用户界面:在迷你图视图中突出显示焦点区域。 用户界面:改进了 terse 结构视图中字符串字面量的显示。 用户界面:改进了本地类型视图,以完全替代汇编样式的枚举和结构(已弃用)。 用户界面:改进了数组结构体和 varstruct(如果最后一个字段不为空)的输出。 用户界面:改进了嵌套 varstruct 的 terse 结构的输出。 用户界面:改进了滚轮滚动,使其更流畅(更准确)。 用户界面:新的图标集,基于 SVG 并具有更新的调色板。 用户界面:减少调用“转换为数组”操作时的延迟。 用户界面:保存“打开同步”。

【逆向分析】IDA 8.4.220215 February 15, 2024

原文始发于微信公众号(利刃信安攻防实验室):【逆向分析】IDA 8.4.220215 February 15, 2024

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月19日08:53:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【逆向分析】IDA 8.4.220215 February 15, 2024http://cn-sec.com/archives/2503970.html

发表评论

匿名网友 填写信息