导入表(Import Table)与输入表(Import Address Table)的关系
输入表(因为输入表也在IID里面写着嘛)是在导入表里面的。输入表是IAT而导入表是IT。
所以我们说导入表(IT)是包含着输入表(IAT)。
但是反过来,IAT不一定在IT里面。IAT可以在程序里任何一个可写入的地方里。只要可执行程序运行起来,操作系统可以定位到IID的项,根据IAT的名称就可以获取到函数地址。
总结
程序第一步,先运行到导入表,定位到导入表的位置。(也就是PE头里的Import Table address) 第二步根据偏移量来到导入表,在导入表里有N个IID,程序会根据IID里,第四个项,获取到dll的名称。 第三步根据IID第五个字段,获取第四步的那个dll对应的第一个函数的位置。 第四步就是根据IAT的指针定位到对应函数的字符串。 第五步,根据GetProcAddress函数,获取到所有的函数起始地址。 第六步,把获取的函数地址放到原来IAT指针的位置。 第七步就是重复第四步到第六步的操作继续获取接下来的函数,直到遇到00000000表示当前dll的函数已经获取完成。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容