mov eax, [esi+0xc]
由于您正在从保存的环境中读取完整的双字,因此可以合理地断定您使用的是fnstenv
指令的32位保护模式格式。
这意味着您将获得 FPU指令偏移,它在状态图像中保存在偏移12处。
EAX
寄存器将保存fldz
指令的地址,因为这是FPU执行的最后一条非控制指令。
正如Sep Roland所解释的那样,这段代码用寄存器eax
填充指令fldz
所在的存储器地址。
这是获取当前指令指针的黑客技巧; shellcode中有价值的信息。
您的代码段可能是exploit的一部分。
来源:Daniele Bellavista's Blog。