最新发布的IDA 7.5新增功能速览
2020-07-15 11:13:06 Author: www.4hou.com(查看原文) 阅读量:671 收藏

IDA 7.5已经发布,我们看看都增加了哪些功能,最吸引人的是加入了MIPS的反编译功能。

0x01 树状文件视图

树状文件视图是IDA标准数据视图,你可以创建文件夹并移动项目,视图如下:

函数名称

导入表

结构体

枚举

数据类型

对于“结构和枚举”,默认情况下显示树形面板,对于其他视图,可通过“显示文件夹”上下文菜单项启用。

你可以创建,重命名和删除文件夹,并在它们之间移动项目。在处理大型二进制文件时,这将有助于组织信息。

0x02 MIPS反编译器

一个新的反编译器已添加到我们的产品阵容中。IDA支持的任何32位MIPS二进制文件都可以反编译,包括紧凑的编码。臭名昭著的延迟槽是透明,无缝处理的。提供了MIPS反汇编程序-反编译器比较页面 ,其中包含一些有趣的示例。

 https://www.hex-rays.com/products/decompiler/compare/mips/

以下是一些截图:

大端字节MIPS32代码

小端MIPS32代码

MIPS16e代码

microMIPS代码

0x03 iOS / macOS上的改进

添加了带有大多数主要API的类型库以及来自macOS和iPhone SDK的其他框架,在与反编译器配对时,这些API的类型库比较有用。

最初可用的类型库列表

使用CoreFoundation API的x86_64用户模式代码示例

使用IOKit类的ARM64内核代码示例

此外,改进了对KTRW调试器的支持,断点可以使用相同的Corellium-ARM64配置立即使用。

 https://github.com/googleprojectzero/ktrw

在反编译器方面,添加了对atomic ARM64 指令 的支持, 例如CAS(比较和交换),LDADD(atomic加法)等。它们从stdatomic.h转换为相应的C11函数,因此_asm{}在处理为arm64e编译的代码时,会看到较少的代码块。

atomic ARM64

0x04 其他选项

PC:采用Intel CET(控制流实施技术)的ELF二进制文件变得非常普遍,这是由于Debian默认启用了此编译器选项,随后是Fedora和其他Linux发行版。现在,支持此类二进制文件,包括反编译器中的二进制文件。还添加了对最近添加到Intel和AMD处理器的一些新指令的支持。

Intel CET

ARM:最近针对32位ARM代码的编译器更喜欢使用MOVW和MOVT指令对来加载32位常量和地址,而不是像过去常见的那样加载常量。尽管IDA在将这些放在一起时已经进行了处理,但是高级优化可以将这些分开放置,从而防止IDA组合它们,发现全部值并向目标添加交叉引用。已经改进了启发式方法来处理此类分散的键值对,并添加了一个选项,因此可以根据你的特定二进制文件将分析调整为更具适配性。

ARM MOVT

ARM MOVT

ARM MOVT

0x05 完整更新清单

处理器模块:

 ARC: added support for ARCv2 EM instruction set
 ARM: added an option to control detection of 32-bit constants loaded by scattered pairs of MOVW+MOVT instructions
 ARM: improved detection of functions with delayed prolog setup
 MIPS: added support for multi-GOT binaries ($gp can have different values in different parts of the binary)
 V850/RH850: don’t create functions for PIC calls (to next address)
 PPC: added many new instructions from e200 cores (NXP MPC57xx, ST SPC58xx):
 Cache Bypass Storage (lbdcbx lhdcbx lwdcbx stbdcbx sthdcbx stwdcbx dsncb)
 e200z490 (AIOP) instructions (e_lqw e_stqw e_ldwcb e_ldbrw e_byterevw and more)
 MPU instructions (mpure, mpuwe, mpusync)
 PC: added support for endbr instruction in prolog analysis
 PC: added decoding of WAITPKG instructions (TPAUSE, UMONITOR, and UMWAIT)
 PC: added decoding of TSX instructions (XRESLDTRK and XSUSLDTRK)
 PC: added decoding of instructions CLDEMOTE, ENCLV, SERIALIZE
 PC: added decoding of Direct Store instructions (MOVDIRI and MOVDIR64B)
 PC: added decoding of MCOMMIT and RDPRU instructions (AMD Zen2)

文件格式:

 AMIGA: implement rebasing for Amiga hunk file loader (contributed by Vladimir Kononovich)
 ELF: ignore internal compiler symbol gcc2_compiled
 ELF: pc: handle PLT stubs in binaries compiled with Intel CET support (-fcf-protection)
 ELF: accept files with PT_LOAD segments running over end of file
 ELF: MIPS: implemented relocations R_MIPS_GOT_PAGE, R_MIPS_GOT_OFST
 ELF: MIPS: add support for MIPS64 complex relocations
 MACHO: allow the user to configure the type libraries loaded for new macho files. see TIL_CONFIG in macho.cfg
 TDS: added support for tds files concatenated with the exe file

安装程序:

 default to Python 3; bundle Python 3.8.2 with Windows installer

调试器:

· 调试器:添加了对Bochs 2.6.10的支持

· 调试器:添加了对Zilog Z80处理器的调试支持

· 调试器:gdb:改进多线程程序的调试

· 调试器:ios:将iPhone SE 2添加到已知设备列表中/ li>

· 调试器:PIN:支持使用3.13引脚构建pintool

· 调试器:xnu:改进了对ktrw的支持。现在,使用“ Corellium-ARM64”配置,断点/监视点/寄存器可以按预期与ktrw一起使用。无需其他手动设置。

内核:

 debugger: added support for Bochs 2.6.10
 debugger: added debugging support for Zilog Z80 processors
 debugger: gdb: improve debugging of multi-thread programs
 debugger: ios: added iPhone SE 2 to list of known devices/li>
 debugger: PIN: support building pintool with pin 3.13
 debugger: xnu: improved ktrw support. breakpoints/watchpoints/registers now work as expected with ktrw, using the “Corellium-ARM64” configuration. no other manual setup is needed

FLIRT / TILS / IDS:

 TIL: introduced new macosx type libraries, built directly from headers in MacOSX.sdk/iPhoneOS.sdk (including all Objective-C and C++ Frameworks). see macosx_sdk*.til/iphoneos_sdk*.til
 TIL: introduced new type libraries specifically for XNU kernel and KEXT binaries, built directly from the XNU source code. see xnu.til/xnu_arm.til
 FLIRT: Added MFC signatures for vc1424 (Visual Studio 2019.4)
 FLIRT: Added MFC signatures for vc1425 (Visual Studio 2019.5)
 FLIRT: ICL: Added signatures for icl200 (Intel C++ 20.0
 FLIRT: ICL: Added signatures for icl201 (Intel C++ 20.1)
 FLIRT: VC: Added signatures for vc1424 (Visual Studio 2019.4)
 FLIRT: VC: Added signatures for vc1425 (Visual Studio 2019.5)

用户界面:

 UI: many IDA views now provide an alternative, tree-like folder view
 UI: added actions to search for register definition or register use (Shift+Alt+Up, Shift+Alt+Down)
 UI: it is now possible to add, delete, enable & disable breakpoints from the ‘Function calls’ widget
 UI: The “Breakpoints” chooser now also reports the state (Enabled/Disabled/Unresolved) in a column, instead of only through the icon.
 UI: within a session, IDA will by default remember and restore dialogs positions & sizes (configurable through RESTORE_DIALOGS_GEOMETRIES)
 UI: debugger: the current thread is now shown in bold
 UI: debugger: include the hostname and port number in the error message about failed connection
 UI: removed the limitation on syncing similar views (e.g. now it’s possible to sync 2 idaviews)
 UI: show filename of the file being loaded during the loading process
 UI: “create struct from data”: when used inside a struct, ignore dummy field names like “field_xxx”
 UI: added get_synced_group(), to retrieve information about what widgets are synchronized.

本文翻译自:https://www.hex-rays.com/products/ida/news/7_5/如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/Vl7B
如有侵权请联系:admin#unsafe.sh