Macaw 开源二进制分析工具安装与使用教程
macaw Open source binary analysis tools. 项目地址: https://gitcode.com/gh_mirrors/maca/macaw
项目概述
Macaw 是一个专注于二进制代码发现和机器码符号执行的开放源码框架。它设计为可扩展,允许用户添加新的架构支持,并选择性地启用所需架构的功能。通过Crucible库,Macaw能够将发现的机器码提升到适合符号执行的中间表示(IR)。当前,该框架支持x86-64、PowerPC (32位和64位)、ARM (32位)以及RISC-V等架构。
目录结构及介绍
Macaw项目遵循一个清晰的模块化组织方式:
- macaw-base: 核心架构独立的操作和算法。
- macaw-symbolic: 提供通过Crucible对Macaw程序进行符号模拟的库。
- macaw-x86: 专为X86_64程序设计的定义。
- macaw-x86-symbolic: 添加了对x86架构的支持所需的Macaw-symbolic扩展。
- macaw-semmc: 包含从semmc语义转换到Macaw IR的架构独立组件,是所有后端共享的基础。
- macaw-arm, macaw-arm-symbolic, macaw-ppc, macaw-ppc-symbolic, macaw-riscv: 分别对应于ARM、PPC和RISC-V架构的处理和符号执行支持。
- macaw-refinement: 增强代码发现的能力,提供更多功能发现。
- 其他辅助库依赖:如elf-edit, galois-dwarf, flexdis86, dismantle, semmc, crucible等,用于二进制文件处理、调试信息提取、反汇编等。
项目启动文件介绍
Macaw作为一个库而不是一个独立应用,没有传统的“启动文件”。开发者需集成Macaw到其项目中以利用其提供的功能。但构建和测试Macaw本身可以视为一种“启动”活动,这通常通过运行Cabal命令来实现。
项目配置文件介绍
- Git Submodules: Macaw依赖于多个子模块,比如
elf-edit
,galois-dwarf
, 等,通过git submodule update --init
初始化。 - Cabal Configurations: 使用Cabal构建时,Macaw依赖特定版本的包,这些版本被冻结在
cabal/project.freeze
文件中,确保了一致的构建环境。为了准备构建,可能需要链接或更新对应的冻结文件以匹配你的开发环境,例如通过指令ln -s cabal/projectfreeze GHC-<VER> config
。
构建与配置步骤简述
-
克隆仓库并初始化子模块:
git clone https://github.com/GaloisInc/macaw.git cd macaw git submodule update --init
-
构建配置:
- 初始化软浮点库(如果构建RISC-V相关部分)。
- 链接或复制相应的
cabal.project.freeze
文件以指定依赖版本(适用于Haskell环境一致性)。
-
构建Macaw:
- 对整个项目构建:
cabal build all
- 或单独构建某个模块:进入相应目录后执行
cabal build
。
- 对整个项目构建:
请注意,实际应用中,您可能会根据具体需求调整配置或环境变量,以满足项目的不同构建需求。
macaw Open source binary analysis tools. 项目地址: https://gitcode.com/gh_mirrors/maca/macaw