本篇文章将介绍DLL显式链接的过程和模块基地址重定位及模块绑定的技术。
第一种将DLL映射到进程地址空间的方式是直接在源代码中引用DLL中所包含的函数或是变量,DLL在程序运行后由加载程序隐式的载入,此种方式被称为隐式链接。
第二种方式是在程序运行时,通过调用API显式的载入所需要的DLL,并显式的链接所想要链接的符号。换句话说,程序在运行时,其中的一个线程能够显式的将该DLL调用到进程地址空间中,并得到DLL中某函数的在进程地址空间的虚拟地址,然后调用该函数。此种方式被称为显式链接。
注意:显式载入某DLL时,不需要该dll的Lib文件,且exe文件中并不包含该dll的导入表。
显示载入DLL模块的步骤:
线程可以调用LoadLibrary将一个DLL映射到进程地址空间。