Anvill 项目使用教程

Anvill 项目使用教程

anvill anvill forges beautiful LLVM bitcode out of raw machine code 项目地址: https://gitcode.com/gh_mirrors/an/anvill

1. 项目介绍

Anvill 是一个用于将原始机器码转换为高质量 LLVM 位码的开源工具。其主要目标是生成与 Clang 编译器在语义上等价的 C 函数所产生的位码相似的高质量位码。Anvill 通过使用 Remill 实现简单的机器码提升原语,从而实现这一目标。

Anvill 的核心功能包括:

  • 将原始机器码转换为 LLVM 位码。
  • 生成高质量的位码,便于进一步反编译为 C 代码。
  • 支持多种平台,特别是 Linux 系统。

2. 项目快速启动

2.1 环境准备

在开始之前,确保你的系统已经安装了以下依赖:

  • CMake 3.14+
  • Clang 12.0+
  • Remill(最新版本)
  • Python 3.9
  • Ghidra(最新版本)

2.2 安装步骤

  1. 克隆 Anvill 仓库

    git clone https://github.com/lifting-bits/anvill.git
    
  2. 更新子模块

    git submodule update --init --recursive
    
  3. 创建并进入构建目录

    mkdir anvill-build && cd anvill-build
    
  4. 配置 CMake

    CC=clang cmake ../anvill
    
  5. 编译项目

    make -j 5
    
  6. 安装 Anvill

    sudo make install
    

2.3 运行测试

在配置 CMake 时,添加以下参数以启用测试:

cmake -DANVILL_ENABLE_TESTS=true ../anvill

然后运行测试:

cmake --build build_folder --target test

3. 应用案例和最佳实践

3.1 案例一:反编译二进制文件

Anvill 可以用于将二进制文件中的机器码转换为 LLVM 位码,然后使用 Rellic 进一步反编译为 C 代码。这对于分析和理解复杂的二进制文件非常有用。

3.2 案例二:生成函数规范

Anvill 还提供了一个工具 anvill-specify-bitcode,用于生成 LLVM 位码模块中所有函数的规范。这对于创建常用函数的规范数据库非常有用,特别是在使用 McSema 提升二进制文件时。

3.3 最佳实践

  • 使用 Docker 进行构建:为了简化环境配置,可以使用 Docker 进行构建。例如,使用以下命令构建 Anvill:
    ARCH=amd64 UBUNTU_VERSION=20.04 LLVM=14 \
    docker build -t anvill-llvm$[LLVM]-ubuntu$[UBUNTU_VERSION]-$[ARCH] \
    -f Dockerfile \
    --build-arg UBUNTU_VERSION=$[UBUNTU_VERSION] \
    --build-arg ARCH=$[ARCH] \
    --build-arg LLVM_VERSION=$[LLVM] .
    

4. 典型生态项目

4.1 Remill

Remill 是一个用于将机器码转换为 LLVM 位码的框架。Anvill 依赖于 Remill 来实现其核心功能,因此 Remill 是 Anvill 生态中的关键项目。

4.2 Rellic

Rellic 是一个用于将 LLVM 位码反编译为 C 代码的工具。Anvill 生成的 LLVM 位码可以通过 Rellic 进一步转换为可读的 C 代码,从而便于分析和理解。

4.3 Ghidra

Ghidra 是一个开源的逆向工程工具,Anvill 使用 Ghidra 生成的规范来提升机器码。Ghidra 的插件可以生成 Anvill 所需的 protobuf 规范,从而实现高质量的位码生成。

通过这些生态项目的协同工作,Anvill 能够提供强大的二进制分析和反编译能力。

anvill anvill forges beautiful LLVM bitcode out of raw machine code 项目地址: https://gitcode.com/gh_mirrors/an/anvill

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翟苹星Trustworthy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值