在GitHub上查看

雅克斯塔布

Jakstab二进制文件静态分析平台

将此项目下载为.zip文件 将此项目下载为tar.gz文件

概述

Jakstab是一个基于抽象解释的、集成的反汇编和静态分析框架,用于设计可执行文件的分析和恢复可靠的控制流图。它的设计是为了适应多种硬件平台使用定制的指令解码和处理器规格。它是用Java编写的,在其当前状态下支持x86处理器和32位windowspe或Linux ELF可执行文件。

Jakstab在不断增长的控制流图上执行数据流分析时,会动态地将机器代码转换为低级中间语言。数据流信息用于解析分支目标和发现新的代码位置。其他分析可以在Jakstab中实现,与主控制流重构一起运行,以提高反汇编的精度,也可以对得到的预处理控制流图进行处理。

迄今为止,对整个系统最详细的描述包含在Johannes Kinder的论文中:

运行Jakstab

对于Windows,通过一个命令行jak和一个正确的jak命令行来调用它。这个包包含一组单元测试的示例,您可以通过运行

jakstab-m输入/helloworld.exe

对于默认的有界地址跟踪,请在helloworld可执行文件上运行,或通过运行

jakstab-m输入/jumptable.exe--cpa xfi

用于分析具有有界地址跟踪、前向表达式替换和间隔分析的跳转表示例。它仍然是一个研究原型,因此所有的接口都可能会随着新版本而改变,而无需另行通知。

输出

完成分析后,Jakstab将创建以下文件:

支持的分析

正确工作的分析(CPA)包括:

出版物

以下出版物(按时间顺序排序)描述了Jakstab的特定方面,或者它的应用和扩展。

CAV 2008工具文件描述了Jakstab的早期实现,它基于迭代常数传播和分支解析:

我们的vmcai2009论文介绍了一个基于数据流分析的拆卸和控制流重构的通用框架,并定义了Jakstab的理论背景。该框架在域的选择上并不固定,但允许将控制流重建与任何数据流分析结合起来,以提供表达式的抽象计算:

在FMCAD 2010中,我们概述了Jakstab体系结构,并描述了有界地址跟踪(Bounded Address Tracking),这是一个用于控制流重构和验证设备驱动程序二进制文件API使用规范的实用抽象域:

在VMCAI 2012年的论文中,我们给出了一个使用参数化语义的控制流重构的重新表述,并展示了如何将其扩展以适应来自具体执行轨迹的近似值。一个原型实现表明,当过近似必须保守地超过间接跳跃目标时,欠近似允许重构有用的cfg。

WCRE 2012论文提出了一种使用Jakstab分析使用虚拟化模糊处理保护的二进制文件的方法。