1. Start of section headers 的值必须 4 字节对齐。
  2. 使用 readelf -h lib.so 查看 Start of section headers 的值。
    ELF Header:
      Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
      Class:                             ELF64
      Data:                              2's complement, little endian
      Version:                           1 (current)
      OS/ABI:                            UNIX - System V
      ABI Version:                       0
      Type:                              DYN (Shared object file)
      Machine:                           AArch64
      Version:                           0x1
      Entry point address:               0xc6f0
      Start of program headers:          64 (bytes into file)
      Start of section headers:          381358 (bytes into file)
      Flags:                             0x0
      Size of this header:               64 (bytes)
      Size of program headers:           56 (bytes)
      Number of program headers:         9
      Size of section headers:           64 (bytes)
      Number of section headers:         25
      Section header string table index: 24
    
  3. 比如我这里是 381358,十六进制为 0x5D1AE,需要填充两字节 00 使其对齐。
  4. 对齐后的地址为 0x5D1B0,在文件偏移 0x28 处修改为相应的值。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐