[发明专利]全局偏移表度量方法、动态度量方法及相关装置、设备有效
申请号: | 201910707930.3 | 申请日: | 2019-08-01 |
公开(公告)号: | CN110598378B | 公开(公告)日: | 2023-07-18 |
发明(设计)人: | 梁观超;杜小强 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/64 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 全局 偏移 度量 方法 动态 相关 装置 设备 | ||
1.一种全局偏移表度量方法,其特征在于,所述方法包括:
在进程运行的过程中,获取全局偏移表的起始地址和长度;所述全局偏移表包括所述进程的全局偏移表和所述进程依赖的动态库的全局偏移表;
根据所述全局偏移表的起始地址和长度,对所述全局偏移表中的每个元素进行完整性度量,或者对所述全局偏移表整体进行完整性度量;
所述获取全局偏移表的起始地址和长度,包括:
通过所述进程的进程描述符查找程序头,并根据所述程序头确定动态段的偏移地址;
根据所述程序头对应的文件类型以及所述动态段的偏移地址,确定所述动态段的实际地址;
基于所述动态段的实际地址访问所述动态段,从所述动态段中获取参考元素;
根据所述参考元素,确定所述全局偏移表的起始地址和长度。
2.根据权利要求1所述的方法,其特征在于,所述通过所述进程的进程描述符查找程序头,并根据所述程序头确定动态段的偏移地址,包括:
通过所述进程描述符,查找所述进程运行时依赖的虚拟地址空间;
基于所述虚拟地址空间中用于指示程序头的内存位置的元素,查找所述程序头;
根据所述程序头中用于指示动态段的偏移地址的元素,确定所述动态段的偏移地址。
3.根据权利要求1所述的方法,其特征在于,所述根据所述程序头对应的文件类型以及所述动态段的偏移地址,确定所述动态段的实际地址,包括:
当所述程序头对应的文件类型为可执行程序时,确定所述动态段的偏移地址为所述动态段的实际地址;
当所述程序头对应的文件类型为动态库时,确定所述进程的加载地址与所述动态段的实际地址的和值为所述动态段的实际地址。
4.根据权利要求1所述的方法,其特征在于,所述参考元素包括:全局偏移表地址参考元素、PLT表元素长度参考元素和PLT表长度参考元素;
则所述根据所述参考元素,确定所述全局偏移表的起始地址和长度,包括:
根据所述全局偏移表地址参考元素,确定所述全局偏移表的参考起始地址;根据所述PLT表元素长度参考元素,确定PLT表中每个元素的元素长度;根据所述PLT表长度参考元素,确定所述PLT表的总长度;
根据所述PLT表的总长度、所述PLT表中每个元素的元素长度以及所述全局偏移表的元素长度,计算所述全局偏移表的长度;
根据所述全局偏移表的参考起始地址以及所述全局偏移表的元素长度,计算所述全局偏移表的起始地址。
5.根据权利要求1所述的方法,其特征在于,在所述根据所述全局偏移表的起始地址和长度,对所述全局偏移表中的每个元素进行完整性度量之前,所述方法还包括:
对所述全局偏移表对应的可执行与可链接格式ELF文件进行签名校验;签名校验通过后,执行所述根据所述全局偏移表的起始地址和长度,对所述全局偏移表中的每个元素进行完整性度量。
6.根据权利要求1所述的方法,其特征在于,所述根据所述全局偏移表的起始地址和长度,对所述全局偏移表中的每个元素进行完整性度量,包括:
访问所述全局偏移表对应的ELF文件中的PLT表,根据所述全局偏移表中待度量元素对应的PLT表元素,确定所述待度量元素对应的函数名称;
确定所述待度量元素落入的虚拟地址空间,并获取所述虚拟地址空间对应的文件名;
对所述文件名对应的ELF文件进行签名校验;
签名校验通过后,在所述文件名对应的ELF文件找到所述函数名称,并确定所述待度量元素对应的函数是否已被重定向;
若已被重定向,则采用第一度量策略对所述待度量元素进行完整性度量;若未被重定向,则采用第二度量策略对所述待度量元素进行完整性度量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910707930.3/1.html,转载请声明来源钻瓜专利网。