[发明专利]基于Glibc堆实现的堆信息提取方法在审
| 申请号: | 202310223576.3 | 申请日: | 2023-03-09 |
| 公开(公告)号: | CN116432170A | 公开(公告)日: | 2023-07-14 |
| 发明(设计)人: | 翟继强;王家乾;韩旭 | 申请(专利权)人: | 哈尔滨理工大学 |
| 主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F21/56 |
| 代理公司: | 东台金诚石专利代理事务所(特殊普通合伙) 32482 | 代理人: | 蔡浩 |
| 地址: | 150000 黑龙*** | 国省代码: | 黑龙江;23 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 glibc 实现 信息 提取 方法 | ||
1.一种基于Glibc堆实现的堆信息提取方法,该方法包括以下步骤:
步骤1:通过硬件接口或软件获取计算机物理内存的转储文件
步骤2:将内存转储文件载入Rekall取证框架并查找与之匹配的操作系统版本和配置文件。根据配置文件确定系统版本内核,识别内存转储文件的内存布局,定位task结构体。
步骤3:通过task结构体遍历VMA结构,获取glibc库在内存中的位置,提取glibc库中main-arena的位置。
步骤4:根据内存对象vtype描述信息中字段偏移定位glibc堆的相关数据结构并提取堆的初始化信息。
步骤5:根据提取到的堆初始化信息进一步提取堆块信息。
2.根据权利要求1所述的基于Glibc堆实现的堆信息提取方法,其特征在于,所述步骤1中,通过硬件接口或软件获取计算机物理内存的转储文件,具体步骤为:
步骤1-1判断目标系统是否为虚拟机,若是则拍摄快照文件,若不是进行步骤1-2;
步骤1-2判断目标系统是否处于运行状态,若不是,则检查磁盘中的休眠文件、崩溃转储和分页文件,若目标系统处于运行状态进行步骤1-3;
步骤1-3判断是否拥有目标系统的操作权限,若拥有权限,则通过软件运行的方式生成转储文件,否则通过硬件接口方式获取内存转储文件。
3.根据权利要求1所述的基于Glibc堆实现的堆信息提取方法,其特征在于,所述步骤2中,将内存转储文件载入Rekall取证框架并查找与之匹配的操作系统版本和配置文件并定位task结构体,具体步骤为:
步骤2-1查找并解析构建字符串,获取操作系统的主要版本号、次要版本号以及进程pid;
步骤2-2根据版本号导入相应配置文件。
步骤2-3使用内存取证框架内置的扫描技术扫描转储文件的物理地址空间,识别地址空间硬编码,定位内核空间中task结构体的位置体。
4.根据权利要求1所述的基于Glibc堆实现的堆信息提取方法,其特征在于,所述步骤3中,通过task结构体遍历VMA结构,获取glibc库在内存中的位置,提取glibc库中main-arena的位置,具体步骤为:
步骤3-1根据进程task结构体的内部信息,判断其是否为用户空间进程,若是用户空间进程进行步骤3-2;
步骤3-2加载进程地址空间,遍历vma结构体,将其保存在列表中;
步骤3-3加载glibc配置文件,获取glibc库在内存空间中的位置结合glibc配置文件获取main-arena。
5.根据权利要求1所述的基于Glibc堆实现的堆信息提取方法,其特征在于,在所述步骤4中,根据内存对象vtype描述信息中字段偏移定位glibc堆的相关数据结构并提取堆的初始化信息,具体过程为:
步骤4-1首先对main-arena进行初始化处理;
步骤4-2检测arena循环双链表是否完整;
步骤4-3通过malloc_state结构体的next成员获取所有arena,保存在列表中;
步骤4-4根据内存对象vtype描述信息中字段偏移定位,获取main-arena的first堆块信息并获取所有非主arena的heap_info结构体;
步骤4-4根据malloc_state及heap_info结构体获取所有非主arena的first堆块。
6.根据权利要求1所述的基于Glibc堆实现的堆信息提取方法,其特征在于,在所述步骤5中,根据提取到的堆初始化信息进一步提取堆块信息,具体过程为:
步骤5-1基于提取的堆初始化信息,定位main_arena.first_heap位置;
步骤5-2提取first_heap地址,通过其地址及malloc_chunk数据结构追踪next_chunk;
步骤5-3获取next_chunk相关数据结构的size位,识别标志位PREV_INUSE。判定前一堆块为分配对堆块还是释放堆块,保存在相应堆块列表中,指针保存在相应指针列表中。
步骤5-4基于提取的堆初始化信息,遍历thread arena列表,定位线程heap_info结构体位置,获取线程malloc_state,定位thread_arena.firstchunk,获取其地址。
步骤5-5重复步骤5-2和步骤5-3;
步骤5-6统计已分配/释放堆块的数量及大小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨理工大学,未经哈尔滨理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310223576.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于下一代移动通信的网络基础架构
- 下一篇:高锰高铝钢锚链的焊接工艺
- 信息记录介质、信息记录方法、信息记录设备、信息再现方法和信息再现设备
- 信息记录装置、信息记录方法、信息记录介质、信息复制装置和信息复制方法
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录装置、信息再现装置、信息记录方法、信息再现方法、信息记录程序、信息再现程序、以及信息记录介质
- 信息记录设备、信息重放设备、信息记录方法、信息重放方法、以及信息记录介质
- 信息存储介质、信息记录方法、信息重放方法、信息记录设备、以及信息重放设备
- 信息存储介质、信息记录方法、信息回放方法、信息记录设备和信息回放设备
- 信息记录介质、信息记录方法、信息记录装置、信息再现方法和信息再现装置
- 信息终端,信息终端的信息呈现方法和信息呈现程序
- 信息创建、信息发送方法及信息创建、信息发送装置





