Ubuntu 14.04安装KLEE及GNC代码分析指南

需积分: 50 11 下载量 175 浏览量 更新于2024-09-09 收藏 18KB DOCX 举报
本文将详细介绍如何在Ubuntu 14.04系统上安装KLEE(一个基于LLVM的符号执行引擎)以及如何使用它来分析GNC代码。KLEE是一款强大的动态程序分析工具,用于找出软件中的错误和漏洞,通过执行程序路径上的所有可能分支来实现。 首先,我们需要确保系统是最新的,可以通过运行以下命令来更新和升级系统软件包: ```bash sudo apt-get update sudo apt-get upgrade ``` 接下来,为了安装KLEE,我们需要一些必要的工具和库,包括编译器、Python、Git等。可以使用以下命令安装这些依赖: ```bash sudo apt-get install g++ curl python-minimal git bison flex bclibcap-dev build-essential libboost-all-dev ncurses-dev cmake ``` 接着,我们需要下载并安装特定版本的LLVM-GCC,这是一个包含LLVM编译器和GCC的组合。你可以从LLVM官方网站获取该版本的包,然后解压缩: ```bash wget http://llvm.org/releases/2.9/llvm-gcc4.2-2.9-x86_64-linux.tar.bz2 tar -jxvf llvm-gcc4.2-2.9-x86_64-linux.tar.bz2 ``` 设置环境变量以确保系统能够找到安装的库和工具: ```bash export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu export PATH=$PATH:$HOME/llvm-gcc4.2-2.9-x86_64-linux/bin ``` 为了使这些环境变量在下次登录时依然有效,我们需要将其添加到`.bashrc`文件中: ```bash echo "export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu" >> ~/.bashrc echo "export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu" >> ~/.bashrc echo "export PATH=$PATH:$HOME/llvm-gcc4.2-2.9-x86_64-linux/bin" >> ~/.bashrc ``` 现在,我们继续下载LLVM 2.9的源代码包: ```bash wget http://llvm.org/releases/2.9/llvm-2.9.tgz tar -zxvf llvm-2.9.tgz cd llvm-2.9 ``` 由于KLEE需要一个特定的补丁来处理某些系统调用,你需要从邮件列表下载这个补丁,并将其应用到LLVM源代码上: ```bash wget http://www.mail-archive.com/klee-dev@imperial.ac.uk/msg01302/unistd-llvm-2.9-jit.patch cp ~/unistd-llvm-2.9-jit.patch ~/llvm-2.9/ patch -p1 < unistd-llvm-2.9-jit.patch ``` 安装KLEE之前,确保已经按照官方文档配置好所有依赖。接下来,按照KLEE的构建指南编译和安装KLEE: ```bash mkdir build && cd build cmake .. make sudo make install ``` 安装完成后,你可以使用KLEE来分析GNC代码。首先,需要将你的GNC代码转换为LLVM IR,这可以通过LLVM的`llc`工具完成。然后,使用KLEE运行IR代码以进行符号执行: ```bash klee --libc=uclibc your_program.bc ``` 这里,`your_program.bc`是你的GNC代码转换后的LLVM IR文件。KLEE会输出执行信息,包括找到的路径、可能的错误和覆盖率报告。 在分析过程中,你可能会遇到内存限制或执行时间过长的问题。可以通过调整KLEE的参数来优化性能,例如增加内存限制或限制执行时间。查阅KLEE的官方文档以了解更多高级用法和优化技巧。 通过遵循以上步骤,你将在Ubuntu 14.04上成功安装KLEE,并能对其进行配置以分析GNC代码,从而发现潜在的软件问题。记得定期检查KLEE和LLVM的最新版本,以利用最新的特性和修复。