问:对于dll中的函数地址在运行前是不知道的,那在文件代码中是如何编写 “call 函数地址” 之类的指令的呢?
答:虽然不知道函数的地址是什么,但是知道函数的地址写在哪里。可以[函数地址的指针]来读取函数的地址
比如:
GetStartupInfoW函数的地址不是01220100(上面蓝色笔圈出的地址是小端序)
而是01220100地址是处存放着GetStartupInfoW函数的地址 见下图
如此一来,当PE装载器把函数地址输入IAT,代码只要到IAT找就行了,这也说明IAT的函数地址顺序是不能随意改动的