IDA 7.6
亮点
Apple Silicon支持
IDA for macOS现在可以作为一个原生的ARM64二进制文件使用,它可以充分利用M1芯片的惊人性能。
IDA从新的速度提升中获益良多,这一点难以言表。自动分析完成得更快,用户界面明显更敏捷,在M1上运行时,IDA中的几乎所有其他功能都显得更流畅。我们的测试人员报告说,IDA 7.6在Apple Silicon上 "非常稳定",而且 "速度快得多"--因此,我们的兴奋似乎没有错。
M1上也支持调试原生arm64进程,包括arm64e。
IDA 的原生 ARM 版本可提供给所有拥有有效 Mac 许可的用户(包括 IDA Home用户)。
Golang分析
Google的Go语言(又名golang)由于其易用性、性能和无需依赖性的自带二进制文件而越来越受欢迎。由于语言设计者的一些决定,golang的二进制文件与其他编译器制作的二进制文件有很大的不同,因此需要对IDA进行一些修改,以适当地支持它的特殊性。
其中增加了:
l 解析golang特定的元数据以恢复函数名称和边界。
l 支持基于堆栈的参数和返回值,即使在通常使用寄存器的平台上也是如此(ARM, x64)。
l golang特定字符串字元的检测
这是IDA 7.5中ARM剥离的golang二进制代码的示例:
在7.6中:
恢复和命名的功能几乎是原来的两倍。
反编译器改进
l 自动重命名变量
尽管交互性是IDA的卖点,但它仍会尝试尽可能多地自动化平凡的任务。在此版本中,反编译器将尝试根据分配和函数调用为变量和结构字段自动分配名称。
从相同二进制文件的反编译中看到两个片段。左:IDA 7.5,右:7.6。
l 提高对堆栈阵列的识别
堆栈上的数组很难自动检测,因为通常仅显式地引用其第一个元素。我们添加了启发式方法,可以在许多典型情况下恢复阵列,从而减少了手动干预的需求。
l 空行以提高可读性
如果在hexrays.cfg中添加GENERATE_EMPTY_LINES = YES,则反编译器将在复合语句之间和标签之前添加多余的空行,从而提高了长函数的可读性。
新的处理器模块:RISC-V和RL78
我们的处理器选择将继续稳定增长。
l RISC-V是一种开放式ISA,已开始在各种硬件中使用,例如Espressif Systems无线平台的最新版本ESP32-C3。
l Renesas公司的RL78是IDA之前支持的8位NEC 78k0(s)系列的16位后裔,用于各种汽车和消费类应用。
书签
我们还添加了一些新功能,以丰富UI中的书签管理。
和以前一样,您可以使用Alt-M / Ctrl-M来添加/跳转到书签,但是现在您还可以使用Ctrl-Shift-M来显示一个单独的书签视图,其中包含可以分组为书签的全局列表。资料夹:
此外,书签化的地址现在将在反汇编中突出显示。您可以使用选项>颜色将突出显示颜色更改为所需的任何颜色:
其他UI改进
l 现在使用文件夹视图来组织“加载文件”对话框中的处理器列表,可以使用Ctrl-F进行过滤
l 您现在可以在文件夹视图中使用剪切和粘贴,而不用用鼠标拖动东西
l 现在,“字符串”列表已缓存在数据库中。字符串窗口是IDA中用于快速侦察的最常用视图之一。但是,根据设置的不同,扫描整个数据库可能要花费很长时间,而每次重新打开窗口或重新加载数据库时,都必须重复此过程。现在我们缓存列表,因此第二次打开列表几乎是即时的。
压缩的macOS和iOS内核缓存支持
在最新的iOS和macOS版本中,kernelcache文件已压缩。尽管有可用的工具可以解压缩它们,但还需要记住一件事。现在,IDA透明地处理标准压缩格式,因此您只需将它们作为标准Mach-O文件加载即可。由于IDA还可以处理ZIP文件,因此您可以直接从IPSW更新中打开它们!
重定型处理
Retpoline是针对2017年披露的Spectre投机执行漏洞的一种编译时缓解措施。使用该选项编译的二进制文件使用特殊的thunk函数进行间接跳转,这往往会破坏标准的控制流分析。IDA现在可以透明地检测和处理这些thunks,从而获得漂亮而干净的函数图和伪代码。
使用retpoline thunks的二进制示例。
在IDA 7.5中:
在7.6:
Python 3.9 支持
Python 3.9在IDA 7.5之后发布,并更改了一些内部结构的布局,导致使用PyQt的脚本或插件崩溃。IDA 7.6增加了对3.9的官方支持(同时仍支持以前的3.x版本和2.7)。Python 3.9.1也正式可用于ARM64上的macOS,并可供IDA在此使用。