在 Windows SEH 数据中,有一种工具可以为给定的RUNTIME_FUNCTION
一些伪操作定义描述其对堆栈的影响。它们在以下文档中定义:http UNWIND_CODE
: //msdn.microsoft.com/en-us/library/ck9asaa9.aspx
但是,Microsoft 仅记录了版本 1!在 Windows 附带的某些东西(例如记事本)中,异常处理数据的给定版本是 2。在我看来它们非常相似(另请参见http://sourceforge.net/mailarchive/message.php ?msg_id=31650579),除了有一个神秘且非常常见的操作码6,在版本1文档中没有定义。
从我公认的小样本来看,操作信息似乎始终为 0 或 1,并且该操作似乎仅消耗展开操作数据中的一个槽。
似乎在 ReactOS 中,它的意思是 UWOP_SAVE_XMM(参见http://doxygen.reactos.org/d4/d85/rtl_2amd64_2unwind_8c_a552b9ed5f66cb1a0015f7523bfce2eb9.html#a552b9ed5f66cb1a0015f7523bfce2eb9)。在这种情况下(“版本 2”情况),这是一个不太可能的含义,因为以下插槽包含有效的展开操作而不是合理的内存偏移量。
unwind operation 6是什么意思?