关于DLL地址(基础)

yg29hxj 2011-01-30 11:46:53

这是老罗书上说的,当两个DLL默认安装地址相同时,有一个会定位到其它地方,这就说DLL的地址不是固定不变的吧
可是网上说kernel32.dll这个在不同的程序的装载地址是一样的,这又是为什么呢?kernel32.dll特殊?
还是上面那段话所指的DLL指的是用户DLL?
...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
windows核心部分的一些DLLs是静态装载的,就是windows启动的时候加载,在windows运行其间是卸不掉的,这些DLLs映射到各个进程的地址空间的相同位置。
renxu350 2011-01-30
  • 打赏
  • 举报
回复
LZ发过这个贴子了吧,其实这个问题也简单,
首先LZ没有kernel32.dll的源代码,那么就不能人为修改kernel32.dll的装载地址,
然后看看WINDOWS装载器的装载顺序,一般先是ntdll.dll,然后是WINDOWS内核的3个文件,
kernel32.dll,user32.dll,gdi32.dll,
所以就算LZ强行修改用户DLL的装载地址与kernel32.dll的地址相同,
除非LZ有WINDOWS装载器的源代码,强行让LZ的用户DLL先于kernel32.dll装载,
否则很难抢占kernel32.dll的装载位置

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧