2014-8-4 08:45
我的意思是这样,PT_LOAD类型的段里面包含若干节(section),如下:
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
处于同一segment中的section,他们都是连续的,如下:
[ 4] .gnu.hash GNU_HASH 080481ac 0001ac 000020 04 A 5 0 4
[ 5] .dynsym DYNSYM 080481cc 0001cc 000050 10 A 6 1 4
[ 6] .dynstr STRTAB 0804821c 00021c 00004c 00 A 0 0 1
[ 7] .gnu.version VERSYM 08048268 000268 00000a 02 A 5 0 2
[ 8] .gnu.version_r VERNEED 08048274 000274 000020 00 A 6 1 4
[ 9] .rel.dyn REL 08048294 000294 000008 08 A 5 0 4
[10] .rel.plt REL 0804829c 00029c 000018 08 A 5 12 4
[11] .init PROGBITS 080482b4 0002b4 00002e 00 AX 0 0 4
[12] .plt PROGBITS 080482f0 0002f0 000040 04 AX 0 0 16
如果我将dynstr section中添加一个字符串,那这个section肯定变大了,将会影响到后续section的偏移以及他们的vaddr,修改起来很麻烦。
若我再做一个section(比如是dynstr)放在文件结尾,则与原有的处于同一个segment的section不再连续,貌似载入会出现问题。
关于这个问题我没有找到很舒服的解决办法,请斑竹指教。