利用pushfd/popfd检测虚拟机(cpu模拟器)

 

执行popfd前:

EFL = 00200202

[ESP] = FFFFFAFF

 

执行popfd后:

EFL = 00244AD7

 

不等于[ESP]中的FFFFFAFF,什么原因导致的呢?

POPFD不是简单把[ESP]赋值给EFLAGS

 

某些虚拟机(CPU模拟器)简单的把[ESP]值pop给了ELF,导致popfd后-》再pushfd-》再pop出来的值是相同的,实际如上,应该是不同的,popfd只对某些位有影响。

这应该算是某些CPU模拟器的BUG.

posted on 2014-04-10 08:32  小知识  阅读(574)  评论(0编辑  收藏  举报

导航