【技术实现步骤摘要】
重定位表恢复方法、设备及存储介质
[0001]本申请涉及计算机
,尤其涉及一种重定位表恢复方法、设备及存储介质。
技术介绍
[0002]应用程序(Application,APP)是以可执行文件的格式进行发布。计算机设备在安装应用程序时,计算机设备的操作系统可加载应用程序的可执行文件至本地。为了降低对计算机设备的内存占用,在应用程序发布时,一般会删除可执行文件中的部分重定位表项。
[0003]在对应用程序进行软件优化时,重定位表信息可用于对应用程序的可执行文件的布局优化。但是,删除的部分重定位表项无疑在一定程度上限制了应用程序的优化空间。因此,如何恢复可执行文件的重定位表,成为本领域技术人员亟待解决的技术问题。
技术实现思路
[0004]本申请的多个方面提供一种重定位表恢复方法、设备及存储介质,用以恢复可执行文件的重定位表。
[0005]本申请实施例提供一种重定位表恢复方法,包括:
[0006]获取可执行文件的代码段;
[0007]对代码段进行反汇编操作,以得到所述代码段对应的汇编代码;
[0008]从所述汇编代码中,获取基于指定代码位置的相对寻址指令;
[0009]根据所述基于指定代码位置的相对寻址指令,恢复所述可执行文件的重定位表。
[0010]本申请实施例还提供一种重定位表恢复方法,包括:
[0011]将可执行文件加载至内存中;
[0012]从子进程的虚拟地址空间中,确定存储所述可执行文件的代码段的内存地址空间对应的第一 ...
【技术保护点】
【技术特征摘要】
1.一种重定位表恢复方法,其特征在于,包括:获取可执行文件的代码段;对所述代码段进行反汇编操作,以得到所述代码段对应的汇编代码;从所述汇编代码中,获取基于指定代码位置的相对寻址指令;根据所述基于指定代码位置的相对寻址指令,恢复所述可执行文件的重定位表。2.根据权利要求1所述的方法,其特征在于,所述根据所述基于指定代码位置的相对寻址指令,恢复所述可执行文件的重定位表,包括:确定所述基于指定代码位置的相对寻址指令对应的重定位表项的重定位地址和重定位符号;确定所述基于指定代码位置的相对寻址指令的相对寻址方式对应的重定位类型,为所述基于指定代码位置的相对寻址指令对应的重定位表项的重定位类型;根据所述基于指定代码位置的相对寻址指令对应的重定位表项的重定位地址、重定位符号和重定位类型,恢复所述基于指定代码位置对应的相对寻址指令的重定位表项。3.根据权利要求2所述的方法,其特征在于,所述确定所述基于指定代码位置的相对寻址指令对应的重定位表项的重定位地址和重定位符号,包括:从所述基于指定代码位置的相对寻址指令中,获取所述基于指定代码位置的相对寻址指令的基地址;根据所述基于指定代码位置的相对寻址指令,确定所述基于指定代码位置的相对寻址指令的操作数与所述基地址之间的偏移;根据所述基地址和所述偏移,确定所述操作数的地址信息,作为所述重定位地址;在所述可执行文件的符号表中查找所述操作数的地址信息对应的字符,作为所述重定位字符。4.根据权利要求1所述的方法,其特征在于,所述可执行文件的代码段为非位置无关代码;所述方法还包括:从可执行文件的符号表中,获取所述可执行文件的函数名符号;运行所述可执行文件,并在所述可执行文件运行过程中,获取处理器的最后跳转记录集合;根据所述最后跳转记录集合、所述函数名符号和所述符号表,恢复所述可执行文件的重定位表。5.根据权利要求4所述的方法,其特征在于,所述根据所述最后跳转记录集合和所述函数名符号,恢复所述可执行文件的重定位表,包括:从所述符号表中,获取所述最后跳转记录集合中的最后跳转记录的源地址的字符和目的地址的字符;针对目的地址的字符存在于所述函数名符号中的第一最后跳转记录,根据所述第一最后跳转记录的源地址和目的地址,恢复所述第一最后跳转记录的源地址指向的第一目标指令的重定位表项。6.根据权利要求5所述的方法,其特征在于,所述根据所述第一最后跳转记录的源地址和目的地址,恢复所述第一最后跳转记录的源地址指向的第一目标指令的重定位表项,包括:
确定所述第一最后跳转记录的源地址,为所述第一目标指令的重定位表项的重定位地址;确定所述第一最后跳转记录的目的地址对应的符号,为所述第一目标指令的重定位表项的重定位符号;根据所述第一目标指令的寻址方式和所述第一目标指令的操作类型,确定所述第一目标指令的重定位表项的重定位类型;根据所述第一目标指令对应的重定位表项的重定位地址、重定位符号及重定位类型,恢复所述第一目标指令对应的重定位表项。7.根据权利要求5所述的方法,其特征在于,还包括:针对目的地址的字符未存在于所述函数名符号的第二最后跳转记录,从所述汇编代码中,确定所述第二最后跳转记录的源地址指向的第二目标指令;根据所述第二目标指令的操作类型和寻址方式,恢复所述第二目标指令对应的重定位表项。8.根据权利要求7所述的方法,其特征在于,所述根据所述第二目标指令的操作类型和寻址方式,恢复所述第二目标指令对应的重定位表项,包括:根据所述第二目标指令的操作类型和寻址方式,确定所述第二目标指令的操作数的地址信息,作为第二目标指令对应的重定位表项中的重定位地址;从所述符号表中,获取所述第二目标指令的操作数的地址信息对应的符号,作为所述第二目标指令对应的重定位表项中的重定位符号;根据所述第二目标指令对应的寻址方式和操作类型,确定所述第二目标指令对应的重...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。