ELF _DYNAMIC 符号 table 的条目数是多少?
What is the entry count of ELF _DYNAMIC symbol table?
关于 elf(5) - Dynamic tags (Dyn) 中定义的 _DYNAMIC
我有两个不确定性。
通过DT_SYMTAB
接收到的符号table对应于.dynsym
,通过DT_STRTAB
接收到的字符串table对应于.dynstr
?
符号 table 条目大小(以字节为单位)可以通过 DT_SYMENT
接收,但没有关于符号 table 条目计数的内容。假设以字节为单位的符号 table 大小是字符串 table 的地址减去符号 table 的地址并因此通过除以以字节为单位的条目大小来获得计数是否正确?
there is nothing written about the symbol table entry count.
那是因为可以从符号的散列 table 中推导出条目计数。
有两种常见格式:DT_HASH
和DT_GNU_HASH
(后者是GNU扩展)。对于DT_HASH
,符号个数为nchain
,即table中的第二个字。参见例如this 文档。
Is it correct to assume that symbol table size in bytes is address of string table minus address of symbol table
一点也不:不能保证.dynsym
后面跟着.dynstr
,即使它们是这样布局的,也有不保证没有因对齐而出现的漏洞。
关于 elf(5) - Dynamic tags (Dyn) 中定义的 _DYNAMIC
我有两个不确定性。
通过DT_SYMTAB
接收到的符号table对应于.dynsym
,通过DT_STRTAB
接收到的字符串table对应于.dynstr
?
符号 table 条目大小(以字节为单位)可以通过 DT_SYMENT
接收,但没有关于符号 table 条目计数的内容。假设以字节为单位的符号 table 大小是字符串 table 的地址减去符号 table 的地址并因此通过除以以字节为单位的条目大小来获得计数是否正确?
there is nothing written about the symbol table entry count.
那是因为可以从符号的散列 table 中推导出条目计数。
有两种常见格式:DT_HASH
和DT_GNU_HASH
(后者是GNU扩展)。对于DT_HASH
,符号个数为nchain
,即table中的第二个字。参见例如this 文档。
Is it correct to assume that symbol table size in bytes is address of string table minus address of symbol table
一点也不:不能保证.dynsym
后面跟着.dynstr
,即使它们是这样布局的,也有不保证没有因对齐而出现的漏洞。