一种重定位方法、装置、电子设备及可读介质制造方法及图纸

技术编号:28034108 阅读:30 留言:0更新日期:2021-04-09 23:15
本发明专利技术提供了一种重定位方法、装置、电子设备及可读介质,该方法中,在加载目标PE文件时,检测目标PE文件的预设重定位表中的各个重定位表项;若检测到重定位表项对应的重定位类型为第一重定位类型,则将重定位表项作为第一重定位表项,并根据第一重定位表项对目标指令及目标指令对应的可合并指令,同时进行重定位操作;第一重定位类型用于指示对目标指令及可合并指令同时进行重定位操作,第一重定位表项为目标指令及可合并指令共同对应的重定位表项。通过为多个指令设置共同对应的重定位表项,一定程度上可以降低重定位表的长度,以及使得根据该共同对应的重定位表项可以实现对多个指令的重定位操作,进而一定程度上提高重定位操作的效率。

【技术实现步骤摘要】
一种重定位方法、装置、电子设备及可读介质
本专利技术实施例涉及电子设备
,尤其涉及一种重定位方法、装置、电子设备及可读介质。
技术介绍
目前,由于实际运行时,可移植执行(PortableExecute)文件中的指令可能无法在之前指定的地址上运行,因此,经常会对指令进行重定位操作,以确保指令能够正常被执行。在先技术中,为了实现重定位操作,往往是针对每个指令设置一种或多种重定位类型,针对每条指令设置一项重定位表项。相应地,进行重定位操作时,需要针对每条指令对应的重定位表项,针对每条指令逐个进行重定位操作。这种方式中,重定位操作的效率较低且重定位表较冗长。
技术实现思路
本专利技术实施例提供一种重定位方法、装置、电子设备及可读介质,以解决相关技术中重定位操作的效率较低且重定位表较冗长的问题。第一方面,提供了一种重定位方法,所述方法包括:在加载目标可移植执行PE文件时,检测所述目标PE文件的预设重定位表中的各个重定位表项;若检测到所述重定位表项对应的重定位类型为第一重定位类型,则将所述重定位表项作为第一重定位表项,并根据所述第一重定位表项对目标指令及所述目标指令对应的可合并指令,同时进行重定位操作;其中,所述第一重定位类型用于指示对所述目标指令及所述可合并指令同时进行重定位操作,所述第一重定位表项为所述目标指令及所述可合并指令共同对应的重定位表项。可选的,所述方法还包括:在生成所述目标PE文件时,确定目标源码中是否存在所述目标指令对应的可合并指令;在存在可合并指令的情况下,为所述目标指令及所述可合并指令设置所述第一重定位类型,并根据所述目标指令及所述可合并指令的相关信息生成所述第一重定位表项,以生成所述预设重定位表。可选的,所述确定目标源码中是否存在所述目标指令对应的可合并指令之后,还包括:在不存在可合并指令的情况下时,为所述目标指令单独设置第二重定位类型,并根据所述目标指令的相关信息生成第二重定位表项;所述检测所述目标PE文件的预设重定位表中的各个重定位表项之后,还包括:若检测到所述重定位表项对应的重定位类型为所述第二重定位类型,则将所述重定位表项确定为所述第二重定位表项,并根据所述第二重定位表项对所述目标指令单独进行重定位操作。可选的,所述目标指令及所述可合并指令共同对应的第一重定位表项的数量为1。可选的,所述根据所述第一重定位表项对目标指令及所述目标指令对应的可合并指令,同时进行重定位操作,包括:读取所述第一重定位表项中记录的基地址,以及,读取所述第一重定位表项中记录的所述目标指令及各个所述可合并指令对应的偏移量;根据所述基地址及各个所述偏移量,确定所述目标指令及各个所述可合并指令对应的重定位地址。可选的,所述确定目标源码中是否存在所述目标指令对应的可合并指令,包括:确定所述目标源码中包含的所述目标指令;确定所述目标源码中是否存在运行时与所述目标指令同时存在的指令;若存在,则将与所述目标指令同时运行的指令确定为所述可合并指令。可选的,所述确定目标源码中是否存在所述目标指令对应的可合并指令之前,所述方法还包括:根据所述目标源码中各个指令的类型,为类型为预设类型的指令添加指定标记;所述确定所述目标源码中包含的所述目标指令,包括:将所述目标源码中添加有指定标记的指令确定为目标指令。可选的,所述目标指令包括待加载符号的地址变化的指令、地址加载指令中的一种或多种。第二方面,提供了一种重定位装置,所述装置包括:检测模块,用于在加载目标可移植执行PE文件时,检测所述目标PE文件的预设重定位表中的各个重定位表项;第一操作模块,用于若检测到所述重定位表项对应的重定位类型为第一重定位类型,则将所述重定位表项作为第一重定位表项,并根据所述第一重定位表项对目标指令及所述目标指令对应的可合并指令,同时进行重定位操作;其中,所述第一重定位类型用于指示对所述目标指令及所述可合并指令同时进行重定位操作,所述第一重定位表项为所述目标指令及所述可合并指令共同对应的重定位表项。可选的,所述装置还包括:确定模块,用于在生成所述目标PE文件时,确定目标源码中是否存在所述目标指令对应的可合并指令;第一生成模块,用于在存在可合并指令的情况下,为所述目标指令及所述可合并指令设置所述第一重定位类型,并根据所述目标指令及所述可合并指令的相关信息生成所述第一重定位表项,以生成所述预设重定位表。可选的,所述装置还包括:第二生成模块,用于在不存在可合并指令的情况下时,为所述目标指令单独设置第二重定位类型,并根据所述目标指令的相关信息生成第二重定位表项;所述装置还包括:第二操作模块,用于若检测到所述重定位表项对应的重定位类型为所述第二重定位类型,则将所述重定位表项确定为所述第二重定位表项,并根据所述第二重定位表项对所述目标指令单独进行重定位操作。可选的,所述目标指令及所述可合并指令共同对应的第一重定位表项的数量为1。可选的,所述第一操作模块,具体用于:读取所述第一重定位表项中记录的基地址,以及,读取所述第一重定位表项中记录的所述目标指令及各个所述可合并指令对应的偏移量;根据所述基地址及各个所述偏移量,确定所述目标指令及各个所述可合并指令对应的重定位地址。可选的,所述第一操作模块,还具体用于:确定所述目标源码中包含的所述目标指令;确定所述目标源码中是否存在运行时与所述目标指令同时存在的指令;若存在,则将与所述目标指令同时运行的指令确定为所述可合并指令。可选的,所述装置还包括:添加模块,用于根据所述目标源码中各个指令的类型,为类型为预设类型的指令添加指定标记;所述第一操作模块,还具体用于:将所述目标源码中添加有指定标记的指令确定为目标指令。可选的,所述目标指令包括待加载符号的地址变化的指令、地址加载指令中的一种或多种。第三方面,提供了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行所述重定位方法。第四方面,提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行所述重定位方法。在本专利技术实施例中,包括在加载目标PE文件时,检测目标PE文件的预设重定位表中的各个重定位表项;若检测到重定位表项对应的重定位类型为第一重定位类型,则将重定位表项作为第一重定位表项,并根据第一重定位表项对目标指令及目标指令对应的可合并指令,同时进行重定位操作;其中,第一重定位类型用于指示对目标指令及可合并指令同时进行重定位操作,第一重定位表项为目标指令及可合并指令共同对应的重定位表项。相较于为每条指令均设置对应的重定位表项,本专利技术中,由于预设重定位表中是为目标指令及可合并指令设置共同对应的重定位表项,这样,一定程度上可以降本文档来自技高网...

【技术保护点】
1.一种重定位方法,其特征在于,所述方法包括:/n在加载目标可移植执行PE文件时,检测所述目标PE文件的预设重定位表中的各个重定位表项;/n若检测到所述重定位表项对应的重定位类型为第一重定位类型,则将所述重定位表项作为第一重定位表项,并根据所述第一重定位表项对目标指令及所述目标指令对应的可合并指令,同时进行重定位操作;/n其中,所述第一重定位类型用于指示对所述目标指令及所述可合并指令同时进行重定位操作,所述第一重定位表项为所述目标指令及所述可合并指令共同对应的重定位表项。/n

【技术特征摘要】
1.一种重定位方法,其特征在于,所述方法包括:
在加载目标可移植执行PE文件时,检测所述目标PE文件的预设重定位表中的各个重定位表项;
若检测到所述重定位表项对应的重定位类型为第一重定位类型,则将所述重定位表项作为第一重定位表项,并根据所述第一重定位表项对目标指令及所述目标指令对应的可合并指令,同时进行重定位操作;
其中,所述第一重定位类型用于指示对所述目标指令及所述可合并指令同时进行重定位操作,所述第一重定位表项为所述目标指令及所述可合并指令共同对应的重定位表项。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在生成所述目标PE文件时,确定目标源码中是否存在所述目标指令对应的可合并指令;
在存在可合并指令的情况下,为所述目标指令及所述可合并指令设置所述第一重定位类型,并根据所述目标指令及所述可合并指令的相关信息生成所述第一重定位表项,以生成所述预设重定位表。


3.根据权利要求2所述的方法,其特征在于,所述确定目标源码中是否存在所述目标指令对应的可合并指令之后,还包括:在不存在可合并指令的情况下时,为所述目标指令单独设置第二重定位类型,并根据所述目标指令的相关信息生成第二重定位表项;
所述检测所述目标PE文件的预设重定位表中的各个重定位表项之后,还包括:
若检测到所述重定位表项对应的重定位类型为所述第二重定位类型,则将所述重定位表项确定为所述第二重定位表项,并根据所述第二重定位表项对所述目标指令单独进行重定位操作。


4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述第一重定位表项对目标指令及所述目标指令对应的可合并指令,同时进行重定位操作,包括:
读取所述第一重定位表项中记录的基地址,以及,读取所述第一重定位表项中记录的所述目标指令及各个所述可合并指令对应的偏移量;
根据所述基地址及各个所述偏移量,确定所述目标指令及各个所述可合并指令对应的重定位地址。


5.根据权利要求2或3所述的方法,其特...

【专利技术属性】
技术研发人员:徐文瑞张宝祺程璐璐
申请(专利权)人:龙芯中科技术股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1