• 安全分析工具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的时候也是一堆错误。但是好在提供了编译好文件,可以试试。

  • 相关阅读:
    JavaScript (三) js的基本语法
    JavaScript (二) js的基本语法
    JavaScript (一) js的介绍及基本语法变量
    Spring事务管理
    python静态方法、类方法
    python多继承
    python面向对象
    python模块(4)
    python模块(3)
    python模块(2)
  • 原文地址:https://www.cnblogs.com/robotech/p/16391202.html
Copyright © 2020-2023  润新知