一.driller安装(使用者模式)
这样装也可以看源码,只不过位置在python的环境中
1.angr安装
正常从源码安装,见angr的安装教程(http://www.linuxdiyf.com/linux/30417.html)
setup.sh -i -e driller, 生成driller虚拟环境,并安装好了angr
2.安装driller
下载源码 https://github.com/shellphish/driller
查看目录下的requirements.txt文件,发现有八个抽象依赖和两个具体依赖
driller的requirements.txt文件下fuzzer还依赖于shellphish-afl, 这个在文件中没有提到
(目录无关)需要先 pip install git+https://github.com/shellphish/shellphish-afl, 时间用得比较久
在driller目录下执行pip install -r requirements.txt.安装 requirements.txt文件下的依赖, 安装成功
python setup.py install
成功!
可以在ipython环境中导入driller
二.全部从源码安装driller,(开发者模式)
方便导入,观察源码结构和一些其他信息
生成虚拟python环境,叫driller
1.依赖理解
下载driiler 源码 https://github.com/shellphish/driller
查看requiremets.txt文件,查看依赖, 有部分可以从源码安装,这样方面导入查看代码
cle #用源码装
angr #用源码装
redis # 是一个开源的BSD授权的高级key-value存储,直接下载模块
celery #是一个任务调度模块,直接下载模块
simuvex #用源码装
archinfo #用源码装
dpkt-fix #数据包的解包和组包,,直接下载模块
termcolor #输出的颜色
git+https://github.com/angr/tracer.git #egg=tracer #用源码装
git+https://github.com/shellphish/fuzzer.git #egg=fuzzer #用源码装
其中fuzzer依赖于抽象包shellphish-afl,这里没有说明, 需要自己源码安装
1.angr-dev源码安装
下载https://github.com/angr/angr-dev
执行setup.sh -i -e driller, 生成driller虚拟环境,用源码安装了angr,以及cle\simuvex\archinfo\
这里的setup.sh脚本的作用是利用 pip -v -e .这种方法安装的
2.安装shellphish-afl
下载源码 https://github.com/shellphish/shellphish-afl
查看依赖.没有
在driller虚拟环境下,在shellphish-afl目录下,执行python setup.py build, 编译; 编译过一遍后,第二遍就只编译新的东西
注意这里可以在setup.py中修改目标qemu平台,这里编译好的qemu在shellphish-afl目录的bin目录下,
从setup.py中可以看出
最后会有四个目录:
afl-unix: qemu的目录,支持非x86基础的,源码来自于 https://github.com/shellphish/afl-other-arch
afl-cgc: qemu的目录, 优化了一些afl(很小的优化),使得其适用于cgc目标程序,代码来自于 https://github.com/shellphish/driller-afl
afl-multi-cgc: 编译cgc的目标程序?
fuzzer-libs : 一些系统的目标程序,利用目录下的fetchlibs.sh脚本获取,从本系统或者从网络中取得一些依赖库
使用pip install -v -e .命令安装,即不会将源码复制到python环境中也可以被调用,这种方式是在python环境中添加了一个链接
完成
3.安装shellphish-qemu
这个是把qemu当做一个python模块了,shellphish-afl 下的qemu只能对应的afl使用
这个qemu 是从https://github.com/mechaphish/qemu-cgc 下载的,用于跑cgc的二进制
从 https://github.com/shellphish/shellphish-qemu 下载shellphish-qemu源码
查看依赖,没有
这里要预先安装wheel包,即 pip install wheel, 虚拟环境中不一定有,要安装一下
执行 rebuid.sh脚本(没有修改的话,第二次不用重新编译),重新编译生成python包
这里使用pip install -v -e .命令安装,即不会将源码复制到python环境中也可以被调用,这种方式是在python环境中添加了一个链接
成功
4.安装tracer依赖
下载源码 https://github.com/angr/tracer
执行 sudo apt-get install libacl1-dev
查看依赖
cle #已安装
angr #已安装
simuvex #已安装
shellphish-qemu #已安装
shellphish-afl #已安装
topsecret # shellfish有一个topsecret模块,但是内容是空的,python中也没有这个库,**暂时不安装**
执行 pip install -r requirements.txt 没有发现匹配的 topsecret包(先不管)
执行python setup.py build 编译
使用pip install -v -e .命令安装,即不会将源码复制到python环境中也可以被调用,这种方式是在python环境中添加了一个链接
成功
5.源码安装fuzzer
下载源码 https://github.com/shellphish/fuzzer
查看依赖, 执行pip list, 发现具备依赖关系
angr
shellphish-qemu
shellphish-afl
在fuzzer目录 执行python setup.py build 编译
这里使用pip install -v -e .命令安装,即不会将源码复制到python环境中也可以被调用,这种方式是在python环境中添加了一个链接
成功
6.安装driller
在driller源码目录
执行 pip install -r requirements.txt 成功
执行python setup.py build 编译
这里使用pip install -v -e .命令安装,即不会将源码复制到python环境中也可以被调用,这种方式是在python环境中添加了一个链接
成功
最终,以源码的形式安装了driller,成功!