Remill 项目使用与启动教程
1. 项目介绍
Remill 是一个静态二进制翻译器,它将机器代码指令转换为 LLVM 位码。它支持 AArch64(64位 ARMv8)、SPARC32(SPARCv8)、SPARC64(SPARCv9)、x86 和 amd64 机器代码(包括 AVX 和 AVX512)到 LLVM 位码的转换。AArch32(32位 ARMv8 / ARMv7)的支持也在开发中。
Remill 专注于准确提升指令,旨在作为其他工具的库使用,例如 McSema。
2. 项目快速启动
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 正常工作:
-
解码一些 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 平台快速启动
-
更新 aptitude 并安装基础依赖:
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
-
克隆仓库:
git clone https://github.com/lifting-bits/remill.git
-
构建 Remill:
./remill/scripts/build.sh
-
安装 Remill:
cd ./remill-build sudo make install
-
运行测试:
cd ./remill-build make test_dependencies make test
3. 应用案例和最佳实践
Remill 的一个典型应用案例是与 McSema 配合使用,将二进制代码提升为 LLVM IR,然后进行进一步的分析或转换。
最佳实践包括:
- 确保理解 Remill 的架构设计,以便更好地集成到自己的工具链中。
- 在构建 Remill 时,充分利用 Docker 容器以简化依赖管理。
- 使用 Remill 提供的文档和测试套件来确保正确性和稳定性。
4. 典型生态项目
- McSema:一个将二进制程序转换为 LLVM IR 的框架,它使用了 Remill 作为其代码提升的底层库。
通过上述介绍和教程,您可以开始使用 Remill 项目,并根据您的需求进行定制。