安全分析工具dr checker的安装

 

安全分析工具dr checker的安装

Dr check(https://github.com/ucsb-seclab/dr_checker)是一个检查驱动安全错误的工具,依托llvm实现,使用指针分析、taint分析、基于类型的CG等技术,比依靠特征的工具要好一些。

但是安装还真是挺麻烦的。简单记录下安装过程。

环境:ubuntu20.04

1.安装需要的软件:

sudo apt install libncurses5。

2.download llvm 3.8.1  & clone dr.checker code

这个工具用的llvm的版本有点旧。去llvm下载了编译好的版本。

其实本来直接运行setup_drchecker.py就好。但是由于qiang的存在,下载不稳定。

3.setup envs for llvm

参考setup_drchecker.py

export LLVM_ROOT=/home/robot/RobotWork/llvm381

export PATH=$LLVM_ROOT/bin:$PATH

  After adding the above lines to .bashrc

  Please run: source ~/.bashrc on the terminal for the changes to take effect.

4.build

cd llvm_analysis

./build.sh

when build llvm_analysis/AnalysisHelpers

 

然后就报错了:

g++: error: unrecognized command line option ‘-Wcovered-switch-default’; did you mean ‘-Wno-switch-default’?

 

看了下是工程里其中两个小工具(Dr_linker和EntryPointIdentifier)的编译出了错。

编译命令是:

g++ $BASEDIR/src/main.cpp -fpermissive -o $BASEDIR/entry_point_handler `llvm-config --cxxflags --libs --ldflags --system-libs`

 

使用llvm-config来获取llvm的编译配置作为当前的配置。

应该是这个预编译的版本使用的是低版本clang编译的,而这里用的是G++,G++不认识这个。

查了一下,-Wno-switch-default是个不是很重要的配置,而switch有关的。

解决方法是将`llvm-config --cxxflags --libs --ldflags --system-libs`的执行结果里的-Wno-switch-default这个去掉,然后修改编译命令。成功编译,写了个小文件测试,运行也没问题。

 

其他1:

这里直接使用了预编译的llvm,如果自己编译一个呢:

克隆所要求的版本的llvm

git clone https://github.com/llvm/llvm-project.git -b release/3.8.x /home/robot/RobotWork/dr_checker/install/llvm

 

mkdir build

cd build

cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;libcxx;libcxxabi;openmp"  -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host ../llvm

ninja

 

然后就编译就失败了,ninja会卡住,然后就退出。换成make也是一样的,没有再试了。

 

其他2:

Github上还有个把这个工具迁移到llvm 9 的项目(dr_checker_4_linux)。克隆以后,build的时候也是一堆错误。但是好在提供了编译好文件,可以试试。

 

posted @ 2022-06-19 19:57  robotech_erx  阅读(203)  评论(0编辑  收藏  举报

本文版权归作者robotech_erx,转载请注明出处:https://www.cnblogs.com/robotech/