Start of section headers
的值必须4
字节对齐。- 使用
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
- 比如我这里是
381358
,十六进制为0x5D1AE
,需要填充两字节00
使其对齐。 - 对齐后的地址为
0x5D1B0
,在文件偏移0x28
处修改为相应的值。
LIEF:修改安卓.so后报 dlopen failed:has invalid shdr offset/size
于 2022-06-25 23:23:23 首次发布