• ELF Format 笔记(十)—— 重定位(relocation)


    ilocker:关注 Android 安全(新手) QQ: 2597294287

    重定位就是把符号引用与符号定义链接起来的过程,这也是 android linker 的主要工作之一。

    当程序中调用一个函数时,相关的 call 指令必须在执行期将控制流转到正确的目标地址。所以,so 文件中必须包含一些重定位相关的信息,linker 据此完成重定位的工作。

    这些重定位信息保存在一系列的重定位项中,重定位项的结构如下:

    这些重定位项位于 .rel.plt section 中。

    r_offset:对于可执行文件或 so 文件来说,该值是要进行重定位的存储单元的虚拟地址。

    r_info:该值给出两个重要信息,一个是要重定位的符号在符号表中的索引,另一个是要施行的重定位类型。这两个信息分别由两个宏来提取。

    对于 32 位的 so 来说,ELFW(R_TYPE) 就是 ELF32_R_SYM,ELFW(R_SYM) 就是 ELF32_R_SYM。

  • 相关阅读:
    选择排序
    java面试题08
    java面试题07
    java面试题06
    java面试题05
    oop.1
    4
    3
    Struts1中actionform和action属于MVC哪一层
    mysql查询时间段的所有数据
  • 原文地址:https://www.cnblogs.com/ilocker/p/4904942.html
Copyright © 2020-2023  润新知