在32位程序中运行64位代码。
1、 研究显示,x86与x64的差异在于cs段寄存器的值不同。
2、 x86架构下值为0x23
3、 x64架构下值为0x33

4、 通过修改cs段描述符的retf指令,构建一个切换至x64的函数:

5、 同理,我们使用retf构造一个切换回x86的函数。

6、 要执行x64指令,只需先调用切换到x64模式的函数,然后即可正常运行。
7、 执行完毕后,还需调用切换回x86的函数,以确保32位程序后续能够正常运行。
8、 在x64环境下执行切回x86的函数,这段看似异常的代码,实际上才是正确正常的。