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





