根据Wikipedia, RFLAGS 寄存器在x64架构中包含一些特殊值,例如保留值和I / O权限级别。我想知道是否可以将状态寄存器推入堆栈,修改它然后再将其弹出。
我也怀疑操作系统是否可以阻止这种情况,或者它们是否允许这种篡改。我在考虑这样的事情:
pushfq # pushing onto the stack
pop rax # loading the value in rax
xor rax, 0xcafebabe # performing some random operation
push rax # pushing the brand new RFLAGS
popfq # popping it back