近年来,Shellcode攻击通常利用多态技术进行自我加密来绕过网络层设备的检测,而现有检测方法无法区分多态Shellcode与加壳保护代码.提出了一种基于双模式虚拟机的多态Shellcode检测方法,该方法改进了现有的GetPC定位机制,实现了Shellcode的初步定位,通过IA-32指令识别对网络流量的进行进一步过滤,利用有限自动机及其判别条件实现虚拟机控制流模式和数据流模式之间的切换,并通过结合现有的特征匹配技术实现对多层加密的多态Shellcode的检测.实验结果表明,针对大量真实的网