TEMU的用法
首先要创建一个虚拟的系统
qemu-img create -f qcow2 /opt/kvm/winxp.img 10G 创建格式为qcow2大小为10G的虚拟磁盘文件
sudo qemu-system-i386 -hda /opt/kvm/winxp.img -cdrom /opt/kvm/winxp_sp2.iso -boot d 根据镜像iso文件在winxp.img上创建虚拟系统,最好为纯净的系统。(要下载xp sp2的系统镜像请点这里,同时也分享一个xp sp3的系统,点这里,密钥可以网上搜索,基本通用)
注:上面的qemu-img和qemu-system-i386都是最新版qemu的命令,所以要先装好qemu,网上搜搜。不使用temu的命令是因为创建虚拟系统的过程非常慢,而temu支持最新版qemu创建的虚拟系统。
sudo ./tracecap/temu -monitor stdio /opt/kvm/winxp.img -m 1024 -no-kqemu
启动前面最新版qemu创建的虚拟系统(这里之所以加一个-no-kqemu,是因为temu使用的老版本qemu要kqemu加速,但是这个东西不存在了,要使用的话只能下载旧版手动安装。最新版的qemu已转向kvm来加速。至于两者的关系可以查看这里。)
--------------------------------------
简单的共享设置
启动虚拟机后,可以直接上网,但是主机和虚拟机共享需要配置,主机可以选择安装samba服务器,ubuntu下用图形工具system-config-samba配置很简单。
将temu-1.0文件或其他文件共享,在虚拟机的资源管理器中输入\\10.0.2.2就可以看到。
将temu-1.0\testdrv\driver目录下的testdrv.sys驱动文件拷贝至%SYSTEM32%\drivers目录下。然后双击testdrv.reg文件将内容拷贝至注册表来配置驱动程序,它将会在下次启动后加载。若要确认该驱动是否工作正常,在TEMU运行的目录中寻找是否创建了guest.log文件,其包含了一些TEMU收集的数据。
也可以打开dos窗口,用命令复制文件:
net use \\10.0.2.2
net view \\10.0.2.2
copy \\10.0.2.2\shared\testdrv.sys c:\
另外,详细的trace文件分析可以看这里
---------------------------------------
进入虚拟系统后会用到的命令:
ctrl+alt+2 切换到qemu命令界面(如果前面启动temu使用了monitor stdio,那么该界面重定向到了你的终端。此时可输入help+命令来察看该命令的说明,支持命令补全,默认当前路径是加载虚拟机时的目录)
load_plugin ./tracecap/tracecap.so 加载tracecap插件
load_config ./tracecap/main.ini 加载该插件认证信息
enable_emulation 启动模拟
guest_ps 显示进程信息
trace pid "xxx.trace" 追踪进程pid,指令流保存在文件xxx.trace
trace_stop 停止追踪
unload_plugin 卸载插件
具体追踪的例子参考TEMU用户手册。
Vine的用法
Vine用户手册也给出了一个例子five.trace
进入vine目录
% cd bitblaze/vine
解析trace文件为可读的汇编指令,并输出标记为污点的指令(带标签T1)
% ./trace_utils/trace_reader -traceexamples/five.trace | grep T1
输出trace文件对应的stp格式,Vine中间语言格式和最弱前提条件格式
% ./trace_utils/appreplay -traceexamples/five.trace \
-stp-out five.stp -ir-out five.il -wp-out five.wp
在five.stp文件末尾添加两条命令,解释可参考这里
% cat >>five.stp
QUERY(FALSE);
COUNTEREXAMPLE;
利用stp求解
% ./stp/stp five.stp
Invalid.
ASSERT( INPUT_1001_0_61 = 0hex35 );