[发明专利]可执行文件处理方法和设备在审
| 申请号: | 202010366846.2 | 申请日: | 2020-04-30 |
| 公开(公告)号: | CN113590138A | 公开(公告)日: | 2021-11-02 |
| 发明(设计)人: | 黄海涛;郑家欢;叶祥润;何忠政;崔桂华;张必红;程帅;吴永崇 | 申请(专利权)人: | 华为技术有限公司 |
| 主分类号: | G06F8/61 | 分类号: | G06F8/61;G06F8/65 |
| 代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 张晓霞;臧建明 |
| 地址: | 518129 广东*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 可执行文件 处理 方法 设备 | ||
1.一种可执行文件处理方法,应用于电子设备,其特征在于,所述方法包括:
获取与可执行文件对应的重定位表格,其中,所述重定位表格用于指示至少一个待修正偏移量的指令;
根据所述重定位表格,确定所述待修正偏移量的指令在所述可执行文件中的位置,并确定所述待修正偏移量的指令所对应的实例成员;
修正所述实例成员的偏移量。
2.根据权利要求1所述的方法,其特征在于,所述获取与可执行文件对应的重定位表格,包括:
在确定更新系统时,向网络设备发送所述可执行文件的信息;接收所述网络设备发送的与所述可执行文件的信息对应的重定位表格;
或者,向网络设备发送软件版本信息;接收所述网络设备发送的与所述软件版本信息对应的重定位表格和可执行文件。
3.根据权利要求1或2所述的方法,其特征在于,所述重定位表格中包括指令偏移量、指令类型、指令的实例成员;
其中,所述指令偏移量为待修正偏移量的指令在可执行文件中的偏移量,所述指令类型用于指示对待修正偏移量的指令中的立即数进行编码时的编码方式。
4.根据权利要求1-3任一项所述的方法,其特征在于,在修正所述实例成员的偏移量之前,还包括:
计算所述实例成员的当前的实际偏移量,其中,所述实际偏移量为对所述实例成员的原始的成员偏移量进行修正后的偏移量;
修正所述实例成员的偏移量,包括:将所述实例成员的原始的成员偏移量,修正为所述实际偏移量。
5.根据权利要求4所述的方法,其特征在于,在所述实例成员为实例成员变量时,计算所述实例成员的实际偏移量,包括:
从当前实例成员变量所继承的类中的最高层的类开始,遍历当前实例成员变量所继承的每个类,将每个类中的实例成员变量进行对齐排列,得到每个类中的实例成员变量的偏移量;
确定位于当前实例成员变量之前的前一实例成员变量的偏移量、所述前一实例成员变量的大小、当前实例成员变量与所述前一实例成员变量之间的空间填充大小,三者之和为当前实例成员变量的实际偏移量;
在所述实例成员为虚函数时,计算所述实例成员的实际偏移量,包括:
从当前虚函数所继承的类中的最高层的类开始,遍历当前虚函数所继承的每个类,计算每个类中的虚函数的指针的偏移量,得到虚函数表;
确定所述虚函数表中位于当前虚函数之前的前一虚函数的指针的偏移量、当前虚函数的指针的长度之和,为当前虚函数的实际偏移量。
6.根据权利要求4所述的方法,其特征在于,所述重定位表格中包括指令类型;所述指令类型用于指示对待修正偏移量的指令中的立即数进行编码时的编码方式,所述编码方式包括编码位置;
将所述实例成员的原始的成员偏移量,修正为所述实际偏移量,包括:
根据所述指令类型所指示的编码方式,将所述实际偏移量写入所述待修正偏移量的指令中的特定比特位上,所述特定比特位为编码方式中的编码位置所指示的比特位。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述指令中包括操作码和操作数,所述操作码用于指示指令类型,所述操作数用于指示待运算的数据及数据所在的单元地址。
8.根据权利要求1-7任一项所述的方法,其特征在于,在修正所述实例成员的偏移量之后,还包括:
加载并运行修正后的可执行文件,其中,所述修正后的可执行文件按照修正后的指令运行。
9.根据权利要求8所述的方法,其特征在于,所述加载并运行修正后的可执行文件,包括:
根据修正后的指令,访问所述实例成员。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010366846.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种洁牙装置
- 下一篇:基于图像处理的鱼类投喂方法、系统、设备及存储介质





