[发明专利]动态链接库的加载方法、装置、存储介质及电子设备有效
申请号: | 202110405964.4 | 申请日: | 2021-04-15 |
公开(公告)号: | CN112948024B | 公开(公告)日: | 2022-11-04 |
发明(设计)人: | 刘京洋;姚奕涛;邹永斌 | 申请(专利权)人: | 网易(杭州)网络有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F11/36 |
代理公司: | 北京律智知识产权代理有限公司 11438 | 代理人: | 王辉;阚梓瑄 |
地址: | 310052 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 链接 加载 方法 装置 存储 介质 电子设备 | ||
1.一种动态链接库的加载方法,其特征在于,所述方法应用于第三方云引擎,所述第三方云引擎支持在第一操作系统中运行第二操作系统下的动态链接库,所述方法包括:
获取所述动态链接库中库文件的程序头表,并读取所述程序头表中的各个程序头;
根据每个所述程序头的属性参数确定所述动态链接库中的可加载段;其中,所述程序头的属性参数至少包括偏移参数和长度参数;
所述根据每个所述程序头的属性参数确定所述动态链接库中的可加载段,包括:根据所述偏移参数在所述库文件中确定偏移位置;基于所述偏移位置,在所述库文件中确定与所述长度参数对应的数据段;将所述数据段确定为所述动态链接库中的可加载段;
根据所述第一操作系统的文件映射要求,将所述动态链接库中的第一个可加载段映射到所述第一操作系统中的目标内存地址处;
将所述动态链接库中的第二个可加载段按对应的文件偏移量读取到与所述目标内存地址相邻的内存中。
2.根据权利要求1所述的动态链接库的加载方法,其特征在于,所述第一操作系统的文件映射要求,包括:
以页面对齐的方式进行文件映射,所述页面的大小为64KB。
3.根据权利要求2所述的动态链接库的加载方法,其特征在于,所述将所述动态链接库中的第一个可加载段映射到所述第一操作系统中的目标内存地址处,包括:
将所述动态链接库中的所述第一个可加载段映射到所述第一操作系统中64KB对齐的内存地址处。
4.根据权利要求3所述的动态链接库的加载方法,其特征在于,所述方法还包括:
所述第一个可加载段从所述动态链接库中库文件的0偏移量开始映射。
5.根据权利要求1所述的动态链接库的加载方法,其特征在于,将所述动态链接库中的第二个可加载段按对应的文件偏移量读取到与所述目标内存地址相邻的内存中,包括:
根据虚拟地址的映射要求,确定所述第二个可加载段与所述第一个可加载段的相对偏移量;
将所述第二个可加载段按照所述相对偏移量读取到与所述目标内存地址相邻的内存中。
6.根据权利要求1所述的动态链接库的加载方法,其特征在于,所述第一操作系统为Windows操作系统,所述第二操作系统为Linux操作系统。
7.根据权利要求1所述的动态链接库的加载方法,其特征在于,所述第三方云引擎为星云引擎。
8.一种动态链接库的加载装置,其特征在于,包括:
数据确定模块,用于获取所述动态链接库中库文件的程序头表,并读取所述程序头表中的各个程序头;根据每个所述程序头的属性参数确定所述动态链接库中的可加载段;其中,所述程序头的属性参数至少包括偏移参数和长度参数;所述根据每个所述程序头的属性参数确定所述动态链接库中的可加载段,包括:根据所述偏移参数在所述库文件中确定偏移位置;基于所述偏移位置,在所述库文件中确定与所述长度参数对应的数据段;将所述数据段确定为所述动态链接库中的可加载段;
文件映射模块,用于根据第一操作系统的文件映射要求,将所述动态链接库中的第一个可加载段映射到所述第一操作系统中的目标内存地址处;
内存模拟模块,用于将所述动态链接库中的第二个可加载段按对应的文件偏移量读取到与所述目标内存地址相邻的内存中。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述方法。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-7任一项所述的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110405964.4/1.html,转载请声明来源钻瓜专利网。