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/如若转载,请注明原文地址: