【技术实现步骤摘要】
一种基于硬件辅助的虚拟化指令模拟错误检测方法及系统
[0001]本专利技术属于计算机科学与
,具体涉及一种基于硬件辅助的虚拟化指令模拟错误检测方法及系统。本专利技术通过硬件辅助,同步实际指令块和单条指令,检测虚拟化硬件平台的指令模拟错误,快速定位错误出现的位置并上报错误原因,辅助人工修补虚拟化平台的模拟规则,实现正确的指令模拟,保证被虚拟化的程序正常运行。
技术介绍
[0002]基于虚拟化的动态分析,是二进制程序分析的重要技术手段之一,当前基于虚拟化的分析均基于硬件模拟器Qemu开展,Qemu使用动态译码机制,通过将被虚拟化CPU的指令,通过反汇编、中间语言解析、目标指令翻译等阶段,翻译为目标指令代码执行。由于CPU指令的复杂性和人工制定规则过程中不可避免的产生错误,Qemu存在大量指令模拟问题,导致程序运行出现异常、系统出现崩溃。传统的指令模拟错误检测主要通过人工排错或Fuzzing的方式实现,时间复杂度高,并且易产生误报,难以满足CPU复杂指令条件下的指令模拟错误检测需求。
[0003]当前的指令模拟错误检 ...
【技术保护点】
【技术特征摘要】
1.一种基于硬件辅助的虚拟化指令模拟错误检测方法,其步骤包括:选择两台配置相同的主机,在第一主机上安装Qemu系统构建Qemu虚拟机,在第二主机上安装KVM系统构建KVM虚拟机;其中,Qemu系统、KVM系统中均安装相同的操作系统和软件;在Qemu虚拟机运行时,定时保存Qemu虚拟机运行快照;当Qemu虚拟机内部的程序发生异常时,根据保存的快照信息将Qemu虚拟机和KVM虚拟机同时恢复到最近一次快照位置;以基本块为单位,在Qemu虚拟机和KVM虚拟机中同步执行程序,每次基本块执行之前,Qemu虚拟机创建快照,监测运行的指令基本块,并检测错误发生的位置;根据检测错误发生的位置确定出现错误的基本块BasicBlock
Error
,然后以Qemu虚拟机最近一次的基本块快照为起点,同时启动Qemu虚拟机和KVM虚拟机,以指令为单位在Qemu虚拟机、KVM虚拟机同步运行,检测基本块BasicBlock
Error
中错误发生的指令位置。2.根据权利要求1所述的方法,其特征在于,所述KVM虚拟机采用基于Intel CPU特权指令并对MSR寄存器进行修改,设定硬件CPU的EIP、CS的方式,使所述KVM虚拟机能够加载Qemu产生的镜像;对所述KVM虚拟机的状态恢复函数进行修改,通过读写VMCS寄存器,同时写入显存信息,使得KVM虚拟机能够基于Qemu的快照进行运行状态恢复。3.根据权利要求1所述的方法,其特征在于,所述检测错误发生的位置的方法为:以最近一次保存的Qemu虚拟机快照为起点,Qemu虚拟机和KVM虚拟机同时加载启动,在每个基本块的开头抓取系统快照,并在基本块执行的开头和结尾,对比KVM虚拟机和Qemu虚拟机的CPU在基本块执行期间修改的寄存器和内存内容是否一致,如果不一致,则判定Qemu虚拟机的指令模拟存在错误并确定错误发生的位置。4.根据权利要求1或2或3所述的方法,其特征在于,Qemu虚拟机运行快照包括Qemu虚拟机的寄存器信息、中断信息、异常信息和内存状态信息。5.根据权利要求1或2或3所述的方法,其特征在于,所述当Qemu虚拟机内部的程序发生异常时,是指Qemu虚拟机运行的程序崩溃或系统蓝屏。6.根据权利要求1或2或3所述的方法,其特征在于,所述检测错误发生的指令位置的方法为:Qemu虚拟机和KVM虚拟机加载运行基本块BasicBlock<...
【专利技术属性】
技术研发人员:杨轶,苏璞睿,黄桦烽,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。