一、_lib_malloc函数介绍

  • 当我们在应用层调用malloc申请堆的时候,在glibc中实际上调用的是_lib_malloc函数,但是_lib_malloc函数只是用来简单的封装_int_malloc函数的,_int_malloc函数才是申请堆的核心函数

二、__malloc_hook全局变量

  • 函数介绍:_lib_malloc首先通过__malloc_hook全局变量获取一个函数指针,然后判断这个函数是否为空,这个函数代表用户自定义的堆分配函数,主要为了方便用户快速修改该函数并进行测试
  • _malloc_hook漏洞:如果__malloc_hook被修改,那么就会执行被修改后的函数(one_gadget),以后文章介绍

从下面的源码可以看到,先读取__malloc_hook全局变量,然后判断是否有用户自定义的堆分配函数,如果有就执行,不再进行系统的堆分配了(_int_malloc)

三、寻找arena并执行_int_malloc函数函数

  • 解析_lib_malloc函数回去寻找一个arena来试图分配内存(arena_get),然后调用_int_malloc函数取申请内存
  • 如果分配失败(注:_int_malloc函数中会再次判断是否有arena可用),ptmalloc会尝试再去寻找一个可用的arena,并再次调用_int_malloc函数取申请内存
  • 如果申请到了arena,那么在使用完arena之后,函数退出之前还需要解锁(_lib_lock_lock)

_int_malloc函数介绍,见文章:https://blog.csdn.net/qq_41453285/article/details/99005759

四、_lib_malloc函数总结

_lib_malloc函数就是做以下事情:

  • 要么没有申请到内存
  • 要么通过mmap/brk申请内存
  • 要么在其arena中分配内存
  • (或者出错退出)
  • 最终返回内存(return)
  • 核心:调用_int_malloc函数

堆漏洞挖掘:19---_lib_malloc函数源码详解相关推荐

  1. 堆漏洞挖掘——__lib_malloc函数、_int_malloc函数、__lib_free函数源码详解

    一._lib_malloc函数介绍 当我们在应用层调用malloc申请堆的时候,在glibc中实际上调用的是_lib_malloc函数,但是_lib_malloc函数只是用来简单的封装_int_mal ...

  2. 《安富莱嵌入式周报》第305期:超级震撼数码管瀑布,使用OpenAI生成单片机游戏代码的可玩性,120通道逻辑分析仪,复古电子设计,各种运动轨迹函数源码实现

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  3. OpenCV resize函数源码解析——加速方法

    相信大家应该经常会用到OpenCV中的函数resize(),当我们想放大或者缩小图像的时候,会用到这个函数进行图像缩放,其中最核心的便是对图像的像素进行插值处理. 这里的插值interpolation ...

  4. LMDIF_函数源码

    函数源码: /* lmdif.f -- translated by f2c (version 20020621).You must link the resulting object file wit ...

  5. 【Linux 内核】实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )

    文章目录 一.dequeue_task_rt 函数 ( 从执行队列中移除进程 ) 二.update_curr_rt 函数 ( 更新调度信息 ) 本篇博客中 , 开始分析 struct sched_cl ...

  6. 【Linux 内核】实时调度类 ⑥ ( 实时调度类核心函数源码分析 | 插入进程到执行队列 | 从执行队列中选择优先级最高的进程 )

    文章目录 一.enqueue_task_rt 函数 ( 插入进程到执行队列 ) 二.pick_next_task_rt 函数 ( 从执行队列中选择优先级最高的进程 ) 本篇博客中 , 开始分析 str ...

  7. 【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )

    文章目录 前言 一.搜索 dex2oat 源码 二.dex2oat.cc#main 主函数源码 前言 在 [Android 逆向]ART 脱壳 ( DexClassLoader 脱壳 | exec_u ...

  8. PHP 源码 —— is_array 函数源码分析

    is_array 函数源码分析 本文首发于 https://github.com/suhanyujie/learn-computer/blob/master/src/function/array/is ...

  9. python内置函数源码_如何查看python内置函数源码

    在用Python进行各种分析的时候,我们会用到各种各样的函数,比如,我们用SQL时,经常使用join.max等各种函数,那么想看Python是否有这个函数,这个时候可能大部分人会百度,那么如何不使用百 ...

最新文章

  1. LeetCode-动态规划基础题-746. 使用最小花费爬楼梯
  2. Spring Enable annotation – writing a custom Enable annotation
  3. 《啊哈!算法》笔记_Day01
  4. 只剩 1 天 | 神策 2019 数据驱动大会明天开幕
  5. MySQL查询出2门及2门以上不及格者的平均成绩
  6. xss 跨站脚本漏洞 php,跨站脚本漏洞(XSS)基础讲解
  7. nodejs登陆模拟
  8. 前端基础-html-水平线标签
  9. 华为机试——字符串最后一个单词的长度
  10. Linux平台(Ubuntu或者树莓派)上下载磁力链接;使用Deluge下载
  11. HHL,AL;非结合朱顶红凝集素(HHL,AL)
  12. pentaho mysql_pentaho移植到MySQL
  13. jQuery 瀑布流插件
  14. linux 帝国cms 刷新,帝国cms怎么自动刷新网站首页?(帝国CMS自动刷新首页的方法)...
  15. 微信小程序开发——评论功能
  16. python中词云图是用来描述_Python如何实现中国地图词云图
  17. 计算机硬盘显示隐藏,隐藏与显示硬盘盘符的最简单的方法
  18. 【Ubuntu】服务器使用
  19. Linux下 单网卡配置多个ip方法
  20. 雄文 | VAS 对标的不是ETH而是Libra

热门文章

  1. 机器人感知-视觉部分(Robotic Perception-Vision Section)
  2. 电脑崩溃?黑客最爱邮件入侵方式,在双十一也要保护好网络安全!
  3. 【初创公司系列】由软件先驱Tom Siebel支持的机器学习创业公司C3.ai申请IPO
  4. USB 协议 (五) 枚举
  5. QSystemTrayIcon退出后系统托盘图标不消失问题
  6. centOS7的vi中如何使用汉语拼音和五笔
  7. 【IT圈内事】2019互联网企业100强
  8. Centos 安装zlib
  9. 如何使用python下载B站视频
  10. 计算机磁盘扫描教程,win7系统下关闭“检查磁盘”和“扫描并修复”提示的方法...