ELF Format 笔记(十五)—— 符号哈希表

时间:2022-03-01 04:38:03

ilocker:关注 Android 安全(新手) QQ: 2597294287

符号哈希表用于支援符号表的访问,能够提高符号搜索速度。

下表用于解释该哈希表的组织,但该格式并不属于 ELF 规范。

ELF Format 笔记(十五)—— 符号哈希表

bucket 和 chain 数组中都保存有符号表的索引,数组大小分别为 nbucket 和 nchain。

先来看 android linker 中的 hash 函数:

ELF Format 笔记(十五)—— 符号哈希表

给定一个符号名字,返回一个哈希值 x,然后由 bucket[x%nbucket] 得到一个符号表索引 y,如果索引 y 对应的符号表项不是想要的符号,则由 chain[y] 得到下一个符号表索引 z,如果仍不是想要的符号,继续 chain[z]…。

ELF Format 笔记(十五)—— 符号哈希表

之所以这样使用符号哈希表,应该是因为它是采用链地址法来解决哈希冲突。