[转载] 利用pushfd/popfd检测虚拟机(cpu模拟器)

原文链接:https://www.cnblogs.com/blueprincess/p/3655628.html

[转载] 利用pushfd/popfd检测虚拟机(cpu模拟器)
执行popfd前:

EFLAGS = 00200202

[ESP] = FFFFFAFF

执行popfd后:

EFLAGS = 00244AD7

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

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

[转载] 利用pushfd/popfd检测虚拟机(cpu模拟器)

[转载] 利用pushfd/popfd检测虚拟机(cpu模拟器)
[转载] 利用pushfd/popfd检测虚拟机(cpu模拟器)

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

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