[PE结构]导出表结构浅析

image

导出函数的总数--》以导出函数序号最大的减最小的+1,但导出函数序号是可自定义的,所以NumbersOfFunctions是不准确的

1.根据函数名称找,函数名称表-》对应索引函数序号表中的函数地址表索引-》函数地址表

2.根据函数序号找,序号-base==》函数地址表的索引

盲猜该表的形成过程:

​ 最开始可能直接想就是函数名对应索引就是函数序号,如果通过函数序号,就直接当做索引

image

2.但随后由于部分函数仅仅以序号导出,所以函数名称就没有,此时如果再以序号一一映射的方式进行索引,就会产生函数不对应的现象,所以就有了中间的函数序号表

image

所以函数序号表是函数名称映射到函数地址表的联系,和函数序号查找没有关系

3.随后,出现了自定义函数序号,这个时候如果函数地址表还是简单的映射,那么当第一个序号为1000时,前999个函数地址空间其实都是无效的,也就是浪费了,所以采用了Base的方法,即以相对方式,进行空间设置

那有些就会疑问,既然可以这样,如果第一个序号为1000,第二个序号为2000,那中间不还是浪费了,那为什么函数序号名不再建一个类似于函数序号表一样的,进行映射呢?

最开始,我认为不这样做的目的是直接找更快捷,而且如果采用映射,那还要再建一个表进行映射,那也会占用空间,所以个人觉得这种无异于就是以空间换时间。采用相对序号也只是一种优化方式而已

posted @ 2021-09-20 09:14  Aur0ra*  阅读(103)  评论(0编辑  收藏  举报