S2E工具适用平台:
host OS: 64位ubuntu12.04或者64位Mac OS
guest OS:To run S2E, you need a QEMU-compatible virtual machine disk image. S2E can run any x86 operating system inside the VM.任何X86的OS都可以。
对比bitblaze的TEMU,他guest OS只能在ubuntu9.04 32-bit上实现良好,在windows XP和其他版本的linux上还有限制。不支持windows vista和windonws 7.
s2e官网: https://dslabredmine.epfl.ch/embedded/s2e/index.html
参考文章: http://blog.csdn.net/jayxujia123/article/details/34126151
一。在ubuntu12.04-32位下安装:
安装s2e遇到的问题:
configure: error: C compiler cannot create executables
See `config.log' for more details.
make: *** [stamps/llvm-native-configure] 错误 77
于是找到config.log查看详细错误发现:
/usr/bin/ld.bfd.real: cannot find crt1.o: No such file or directory
/usr/bin/ld.bfd.real: cannot find crti.o: No such file or directory
错误太多,需要编译生成的文件还差很多。于是重新装了个ubuntu12.04 64位系统。
二。在ubuntu12.04-64位下安装:
1.build s2e
make时遇到问题如下图:
但是此次编译生成了QEMU-release文件夹,暂时忽略上面错误。
2.安装guest系统
在qemu上安装的镜像是debian-7.6.0-i386-CD-1.iso.
debian系统安装sudo,参见 http://blog.sina.com.cn/s/blog_6c9d65a10101ces2.html
安装好系统以后进入系统apt-get install build-essential时出错:package build-essential has no installation candidate。查看source.list,发现里面只有updates的软件仓库,必须添加至少一个常规的仓库(
deb http://ftp.debian.org/debian/ 版本名 main contrib non-free
)。参见 http://stackoverflow.com/questions/11955505/debian-squeeze-apt-get-errors
VM镜像的相关需求和建议:
- 在vanilla QEMU中安装OS。这是最快的方式。一般来说,所有的安装和组建工作都应该在vanilla QEMU中进行。
- 始终备份一个最新的OS。建议在进行每一次分析工作时都从一个新的OS备份开始。例如,如果使用一个镜像已经用来测试过设备驱动了,不要再用它来分析电子表格组件。一个镜像只进行一次分析。这样会更加利于管理而且更容易产生结果。
- 当S2E格式的镜像建立起来即将用于在符号执行模式下运行时,生成一个快照,可以在S2E-enabled QEMU中运行它。这个步骤不是必须的,但是这会大大地缩短启动时间,因为在S2E中启动一个镜像会花费很长时间。
- 建议在guest OS中使用128MiB的RAM(或者更少)。S2E并不会被内存的大小所限制,而你的物理机器会。
- 禁用桌面主题和一切图形化效果影响以减少资源消耗。
- 禁用屏幕保护程序。
- 禁用一切不必要的程序(如文件共享,打印,无线网络配置,防火墙等)来减少内存消耗并提高速度。
- 避免使用QEMU virtio网络接口。在这个版本的 QEMU中,它被打包到了S2E,可以有随机崩溃。
安装好guest系统后要实现host系统与它的文件传输,这里使用的时scp。
注意:在使用scp之间,host和guest都要开启ssh服务。但是在开启ssh服务后,两边是无法使用ssh传输文件,甚至连ping都不通,为什么?可能跟QEMU的网络配置有关。