_try_finally原理探究

无论try结构体中是什么代码,都会执行finally里面的代码

局部展开

try里面没有异常,而是returncontinuebreak等语句时,就不会走_except_handle3这个函数,而是调用_local_unwind2进行展开

然后调用[ebx + esi*4 + 8]

跟进去就到了finally语句块的地方

我们探究一下实现的原理,这里本来应该是lpfnFilter参数,指向异常处理过滤的代码的地址,但是这里是0。只要这个地方的地址为0就是finally语句块

__global_unwind2函数最终会调用一个RtlUnwind函数,该函数内容比较杂乱,其大体流程如下

全局展开

全局展开就是一层一层的向上找异常处理函数,finally模块还是照常执行

相关推荐

  1. 深入探索Kafka底层原理

    2023-12-13 12:36:04       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-13 12:36:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-13 12:36:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-13 12:36:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-13 12:36:04       20 阅读

热门阅读

  1. Python中的元组

    2023-12-13 12:36:04       39 阅读
  2. conda使用教程

    2023-12-13 12:36:04       37 阅读
  3. 笔记本电脑IP地址:探寻隐匿的数字通行证

    2023-12-13 12:36:04       38 阅读