zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    tomcat-1
    oscache-2
    oscache-3
    oscache-1
    oscache-4
    缓存概要
    Criterion & DetachedCriteria
    Hibernate <查询缓存>
    Hibernate <二级缓存>
    Hibernate <一级缓存>
  • 原文地址:https://www.cnblogs.com/ilocker/p/4904942.html
Copyright © 2011-2022 走看看