IDAPro工具有哪些主要功能?它是如何工作的?

电子说

1.3w人已加入

描述

IDAPro是逆向工程软件提供商Hex-Rays的旗舰产品。作为一个交互式可编程反汇编程序和调试器,IDAPro在不同平台上提供了优异的质量性能,并与许多处理器兼容。IDAPro已成为恶意代码分析、漏洞研究和商业现成验证的事实标准。

IDAPro提供不同类型的许可证:命名许可证、计算机许可证、浮动许可证和教育许可证,以满足不同业务的规模和使用需求。

主要功能

用于大量处理器的反汇编模块。SDK甚至允许您运行自定义反汇编程序;

完整和可扩展的交互;

可编程:IDA可以使用IDC或IDAPython根据用户自己的需求进行扩展;

开放式插件架构:外部插件可以扩展IDA的功能;

检索技术(快速图书馆识别技术)

代码绘图;

Lumina服务器拥有大量已知功能的元数据;

多目标调试器

调试器添加了对反汇编程序静态收集的信息的动态分析;

提供调试器的所有预期功能以及更多:“远程”功能和跟踪。远程调试器:适用于Windows、Linux、MacOS X和其他任何组合的机器;

随着新的IDA版本的发布,我们引入了更多的功能和升级!

像往常一样,IDA在许多方面都有所改进,但这一次最重要的特点是引入了全新的IDATeams,这也是主要版本升级的理由。

IDATeams发布了

我们一直在努力完成我们的新产品的收尾工作:一套集成的工具,以实现[逆向]工程师团队之间的无缝协作。 

受现有最佳版本控制工具的启发,IDATeams将其关键概念引入IDA数据库和工作流:

修订控制

更改属性

扩散和合并

我们感到非常骄傲和兴奋通过IDATeams所能完成的,希望您能欣赏它的潜力。但我们不会就此止步:我们对下一个版本已经有了很好的想法!

iOS16 dyld共享缓存支持

再一次,Apple修改了其移动操作系统上系统文件的内部格式,以提高性能和内存使用率,因此我们更新了IDA以支持新的调整。

  可编程

功能概述

Apple在最近的iOS版本上使用的另一个新技巧是概述功能。这是一种代码大小优化,编译器将多个函数中使用的公共指令序列提取到一个新的伪函数中,然后从多个位置“调用”。

这种行为往往会使反编译的伪代码变得丑陋,尤其是当概述的函数使用来自父函数的任意寄存器或堆栈变量时。现在,您可以用一个特殊属性标记这些函数,反编译的代码看起来会更好。

例如,下面是一个经过优化编译的文件片段:

  可编程

在初始伪代码中,我们可以看到对编译器生成的函数NN片段的显式调用,以及一些用橙色标记的变量,因为反编译器认为它们被调用破坏(这是对常规函数的调用)。

在用“outline”属性标记这些伪函数并刷新伪代码后,反编译程序将所有内容都排成一行,不再有橙色变量:

  可编程

Golang1.18

新版本的语言改变了元数据的布局。新的IDA版本可以解析它并很好地恢复函数名。

例如,在IDA7.7中有一个剥离的golang1.18二进制:

  可编程

和IDA8.0中相同的二进制文件:

  可编程  

ARC反编译程序

ARC处理器用于许多嵌入式设备,如SSD驱动器或Wi-Fi芯片组。直到几年前,它还是臭名昭著的英特尔ME的核心。新的反编译器支持IDA当前支持的所有ARC指令集变体:经典32位ISA、32/16位ARCompact和新的ARCv2。即时支持延迟槽、条件指令和零开销循环。

可编程

不再使用Python2

Python2.7支持已经结束两年多了,是时候放手了。IDA8.0将只支持Python3.x,包括最新的3.10(Windowsinstaller包括Python3.10.5)。

由于functionfinder插件(patfind),固件分析效果更好

固件二进制文件通常没有任何符号或其他元数据来帮助IDA在未标记的加载数据中查找代码,因此用户必须手动执行。在新版本中,我们添加了一个插件,该插件利用了Ghidra中使用的模式格式(具有较小的扩展)。默认情况下,该插件对二进制和类似二进制的格式启用,并帮助IDA自动发现更多代码。也可以手动调用普通结构化文件,以查找其他未引用的代码。

  可编程

初始自动分析后发现的函数数与默认设置的比较:

文件类型 IDA7.7 IDA8.0
CortexM0固件(8KB) 0 59
ARM9固件(23KB) 0 97
ARM11固件(300KB) 84 1697
PowerPC固件(2MB) 0 2223

FLAIR图案生成器(makepat

FLAIR工具包可供所有IDAPro客户使用,允许从静态库中创建调情签名。然而,这样的库并不总是可用的,有时您所拥有的只是最终链接的二进制文件。makepat插件支持为任意IDA数据库中的函数创建.pat文件。它使用为Lumina添加的功能来标记图案中的可变字节。然后可以使用sigmake将.pat编译为签名文件,并应用于其他文件

   可编程

什么是IDATeams?

IDATeams是将IDA进化为一种新模型,让分析师团队能够使用强大的客户机-服务器架构范式协同工作:

我们将位于中心的服务器称为Vault服务器,它是存储区域,用于保存所有文件并跟踪修改。该服务器是跨项目共享进度的中心点。

每次参与者通过服务器将其更改发布到团队的其他成员时,更改都会被记住。这样,就可以让团队成员在同一个项目上协同工作,而不会有数据丢失、多个相互竞争的“不同步”版本等风险。。。

除了新的Vault服务器外,我们还改进了IDA,使其可以作为一种工具,在同一个.idb文件的不同细化(即“修订”)之间进行比较。有了这个新功能,任何人都可以看到每个版本都引入了哪些更改:

  可编程

  可编程

它是如何工作的?

IDA的一般工作流程保持不变:用户可以像以前一样在IDA中工作(在线或离线)。

但多亏了IDATeams的架构,他们现在有了更好的工具来向团队的其他成员发布他们的发现(以及检索其他成员所做的更改并从中受益)

IDATeams是HexRays对逆向工程团队中日益增长的协作需求的回应。以下是几个关键好处:

无缝集成

IDATeams是对IDAPro的改进版本,只为其添加了功能。在大多数情况下,现有工作流将保持不变。

轻松协作

对IDA的改进,以及一套新的工具,是处理大型项目的无价补充。

并行化逆向工程

IDATeams允许您跨多个用户无缝地共享逆向工程任务(可能同时工作)。

跟踪变化

讨论、回顾甚至纠正以前的更改。Vault服务器保留了一个记录谁做了什么(以及什么时候做的)的账本,为有时会令人困惑的上下文提供了一些线索。

现场

组织通过托管IDA团队来保留其所有IP。此外,它将与现有IT基础架构(和备份策略)无缝集成。Vault服务器可以托管在任何Linux服务器上,为您提供了广泛的选择,以保持数据的私密性和可靠的可访问性。

在线或离线

IDA团队服务器托管在本地,并不意味着用户必须亲自参与工作:完全可以在不在家的情况下,在没有互联网连接的情况下(例如,在飞机上)完成所有工作,并在访问服务器后立即使其可用。

轻松解决冲突

当两个(或更多)分析师修改项目的同一部分时,可能会出现冲突。在这里,您也介绍了IDATeams:新特性带来了一组解决这些问题的策略。



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分