Remill项目安装与配置指南
1. 项目基础介绍
Remill 是一个静态二进制翻译器,它能将机器代码指令转换为 LLVM 位码。支持的架构包括 AArch64(64位ARMv8)、SPARC32(SPARCv8)、SPARC64(SPARCv9)、x86 以及 amd64(包括 AVX 和 AVX512)。AArch32(32位ARMv8/ARMv7)的支持也在开发中。Remill 的重点是准确地进行指令提升,旨在作为其他工具的库使用,例如 McSema。
主要编程语言:C++。
2. 项目使用的关键技术和框架
- LLVM:一个强大的编译器基础设施项目,用于优化和编译代码。
- Clang:基于 LLVM 的 C/C++ 编译器。
- Intel XED:用于处理 x86/x86-64 指令的解码库。
3. 项目安装和配置的准备工作
在开始安装之前,请确保您的系统中已经安装了以下依赖:
- CMake(版本 3.14 或更高)
- Google Flags
- Google Log
- Google Test
- Python(版本 2.7)
- Unzip
- ccache
- 32位版的 libc6-dev 和 libstdc++-dev(对于某些架构)
此外,Remill 支持在 Linux 平台上运行,并且在 Ubuntu 22.04 上进行了测试。它也可以在 macOS 上运行,对 Windows 的支持则是实验性的。
安装步骤
使用 Docker 进行快速测试
-
克隆 Remill 仓库:
git clone https://github.com/lifting-bits/remill.git cd remill
-
构建 Remill Docker 容器:
docker build -t remill -f Dockerfile --build-arg UBUNTU_VERSION=22.04 --build-arg LLVM_VERSION=17 .
-
确认 Remill 正常工作:
使用 Docker 运行 Remill 并解码一些 AMD64 指令到 LLVM:
docker run --rm -it remill --arch amd64 --ir_out /dev/stdout --bytes c704ba01000000
或者解码一些 AArch64 指令到 LLVM:
docker run --rm -it remill --arch aarch64 --address 0x400544 --ir_out /dev/stdout --bytes FD7BBFA90000009000601891FD030091B7FFFF97E0031F2AFD7BC1A8C0035FD6
在 Linux 上手动安装
-
更新系统并安装基础依赖:
sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get upgrade sudo apt-get install git python3 wget curl build-essential lsb-release ccache libc6-dev:i386 libstdc++-10-dev:i386 g++-multilib rpm
-
克隆 Remill 仓库:
git clone https://github.com/lifting-bits/remill.git
-
构建 Remill:
./remill/scripts/build.sh
-
安装 Remill:
cd ./remill-build sudo make install
-
运行 Remill 的测试套件:
cd ./remill-build make test_dependencies make test
请注意,如果在构建过程中遇到错误,可能需要根据错误消息调整安装步骤或安装额外的依赖项。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考