dll的基址与对应的lib文件
c++中 dll文件的静态调用 会使用与其对应的 lib库文件与.h头文件,lib库的生成目录可以自己指定如下图,一个vs2010 创建的dll项目的链接器页面,有几项属性值的了解。
生成对应lib文件的设置:在 导入库 这项输入lib文件生成的目录。
基址:可以手动指定加载dll后,dll所占内存的地址(但是这个都是会变得),比如像上面这个dll项目,我指定了基地址
0x11000000 然后为了验证,把生成的dll使用 IDA打开:
显示的基地址目前确实是按照设置的基地址来的(PE头占1000字节)。
下面使用OD 启用辅助程序加载dll:
从上图可以看到,dll的基址为0x10DC000 基地址因程序的加载改变了,dll的基址动态变化了。
在一个程序运行过程中,程序本身会基于内存中某个地址为基址,来存放整个程序,如果指定的基址被占用或者其它原因,会使机制发生相应改变,不再是编译时指定的基址。
还没有评论,来说两句吧...