KLEE的Docker镜像使用

KLEE是使用符号执行技术生成测试样本的知名利器,有着崇高的江湖地位。在KLEE网站上发布了采用Docker打包的镜像。对于两者,我都很陌生,以下记录了在使用过程中,涉及的一些命令和概念。

1、Docker

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。docker有三种命令运行的方式:短暂方式、交互方式、daemon方式。

  • 安装

    目前只支持64位linux系统,以下命令的环境为Ubuntu,Linux 3.13.0-74-generic。Linux系统版本查询命令:
    $ uname -r
    3.13.0-74-generic

    • 更新系统(低版本Linux)
      $ sudo apt-get update
      $ sudo apt-get install linux-image-extra-$(uname -r)
      $ sudo apt-get install linux-image-generic-lts-trusty
      $ sudo reboot
    • 安装Docker:
      sudo apt-get install docker.io
  • ps命令

    • 列出当前所有正在运行的容器
      sudo docker ps
    • 列出最近一次启动的,且正在运行的容器
      sudo docker ps -l
    • 列出所有的容器
      sudo docker ps -a
  • 镜像操作

    • 下载KlEE镜像(默认从官方仓库上下载,也可其它仓库下载)
      $ docker pull klee/klee
      $ sudo docker pull registry.hub.docker.com/ubuntu:12.04
      $ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
    • 运行KLEE镜像
      $ docker run -ti --name=my_first_klee_container --ulimit='stack=-1:-1' klee/klee
    • 重启容器
      $ docker start -ai my_first_klee_container
    • 删除容器
      $ docker rm my_first_klee_container
  • 删除容器

    • 删除所有容器
      $ sudo docker rm sudo docker ps -a -q
    • 删除具体某个容器
      $ sudo docker rm $CONTAINER_ID
  • 命令快速参考

    • 查看本地镜像
      $ sudo docker images #
    • 启动一个已存在的docker实例
      $ sudo docker attach $CONTAINER_ID
    • 停止docker实例
      $ sudo docker stop $CONTAINER_ID
    • 查看docker实例运行日志,确保正常运行
      $ sudo docker logs $CONTAINER_ID
    • 查看container的实例属性,比如ip等等
      $ sudo docker inspect $CONTAINER_ID

2、KLEE

  • KLEE版本
    klee --version
  • 编译源码
    clang -emit-llvm -g -c test.c -o test.bc
  • 运行klee
    klee --libc=uclibc --posix-runtime test.bc

你可能感兴趣的:(KLEE的Docker镜像使用)