第1章:angr环境搭建——在Ubuntu/Docker中安装angr,验证安装,常见问题排查
说实话,很多初学者一上来就急着写脚本、跑符号执行,结果卡在环境搭建这一步。我见过太多人花了两三天装环境,最后心态崩了。其实没必要,angr的安装没那么玄乎,今天我就带你走一遍。
1.1 为什么选择Ubuntu + Docker?
angr官方推荐在Linux下运行。我个人习惯用Ubuntu 20.04 LTS或22.04 LTS。Windows用户也别慌,装个WSL2或者直接用Docker就行。
你想想看,Docker的好处是什么?隔离、干净、出了问题删了重来。我在项目中经常要同时跑多个angr版本做对比,Docker容器一开,互不干扰,省心得很。
核心建议:如果你是新手,优先用Docker。等熟悉了再考虑原生安装。
1.2 方法一:原生安装(Ubuntu)
先更新一下系统包,别偷懒:
sudo apt update
sudo apt upgrade -y
然后装Python和pip。angr要求Python 3.8以上,我建议用3.10:
sudo apt install python3 python3-pip python3-venv -y
接下来是关键一步——创建虚拟环境。为什么?因为angr的依赖很多,直接装到系统里容易冲突。我曾经有一次把系统Python搞崩了,重装了系统才恢复……嗯,从那以后我再也不敢偷懒了。
python3 -m venv angr_env
source angr_env/bin/activate
最后安装angr:
pip install angr
这个过程大概需要5-10分钟,取决于你的网速。如果卡住了,别急,往下看常见问题。
1.3 方法二:Docker安装(推荐新手)
Docker安装就简单多了。先确保你装了Docker:
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
然后拉取angr官方镜像:
docker pull angr/angr
启动容器:
docker run -it angr/angr
进去之后你就直接能用angr了。是不是很爽?
小技巧:如果你想把宿主机上的文件传到容器里分析,加个 -v 参数:
docker run -it -v /path/to/your/files:/home/angr angr/angr
1.4 验证安装是否成功
装完了怎么知道好不好使?写个最简单的脚本试试:
import angr
# 创建一个空项目
proj = angr.Project("/bin/ls", auto_load_libs=False)
print("angr版本:", angr.__version__)
print("架构:", proj.arch)
print("入口点:", hex(proj.entry))
如果能正常输出,说明安装成功了。我一般还会跑一下angr自带的测试用例:
python -m pytest tests/test_symbolic.py -x -v
跑通几个核心测试,基本就稳了。
1.5 常见问题排查
这里我整理了几个我遇到过的坑,你大概率也会碰到:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| pip安装超时 | 网络问题,angr依赖包多 | 换国内镜像源:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple angr |
| 缺少libpython3.10.so | Python开发包没装 | sudo apt install python3.10-dev |
| angr版本冲突 | 多个angr版本混装 | 删掉虚拟环境,重新创建 |
| Docker权限不足 | 当前用户不在docker组 | sudo usermod -aG docker $USER,然后退出重登 |
注意:如果你在Windows上用WSL2,记得把Docker Desktop的WSL集成打开。不然docker命令会报错。
1.6 本章知识体系
下面这张图帮你理清本章的核心逻辑:
1.7 写在最后
环境搭建是第一步,也是很多人放弃的第一步。别急,慢慢来。装好了环境,下一章我们就可以真正开始玩符号执行了。
如果你在安装过程中遇到任何问题,欢迎在公众号留言。我会定期整理大家的问题,更新到常见问题列表里。
公众号:蓝海资料掘金营,微信deep3321