Loading... 昨天突然发现 glibc 2.34 发布了,虽然偶数版本似乎一般不会发布在稳定发行版中,但是还是挺好奇的,花了几分钟看了看,发现主要的变动是取消了几个 hook。 首先看原先的 hook 定义处 <div style="text-algin:center"><img src="https://www.cjovi.icu/usr/uploads/2021/08/2944045331.png "></div> 左边是 2.33,右边是 2.34,可见所有的 hook 都删掉了。 在 __libc_malloc 中有如下修改 <div style="text-algin:center"><img src="https://www.cjovi.icu/usr/uploads/2021/08/1727030332.png "></div> 在 `__libc_malloc` 中,`__malloc_hook` 原先承担两个职责 1. 用户可以在第一次调用 malloc 前设置 __malloc_hook,这样可以方便地让用户通过其自己的内存分配器分配内存。 2. 如果用户没有设置 __malloc_hook,__malloc_hook 默认指向 ptmalloc_init,在第一次调用 malloc 的时候会通过该钩子来对 ptmalloc 进行初始化。ptmalloc_init 会把 __malloc_hook 置 NULL。 2.34 这里把钩子删掉了,添加了一个 bool 型变量 __malloc_initialized 来判断是否进行过初始化。 在 __libc_free 中有如下修改 <div style="text-algin:center"><img src="https://www.cjovi.icu/usr/uploads/2021/08/3655639059.png "></div> 也就是直接把相关调用的语句删除。 所以在堆利用中,劫持 hook 的利用失效了。 其余没有什么重要的变化。 最后修改:2021 年 08 月 03 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,那听听上面我喜欢的歌吧