不同进程导入的dll是否为共享
dll 中的代码是共享物理内存的, 数据是写时复制, 没有修改数据之前是共享的, 修改的时候会拷贝一份来修改, 之后就不会共享物理内存了.
可以通过设置共享段来共享数据, 共享段里的数据在各个进程间共享物理内存(即使句柄不同也无所谓, 虚拟内存机制可以把不同的进程虚拟地址映射到相同的物理地址上)
详细说明:
我先正常调用LoadLibaryA查看其内存
然后同时将启动另外一个程序,这次先将LoadLibaryA的代码前五个字节变成JMP指令,再调用LoadLibaryA,查看其内存:
同样是0x7636DEA5并且同时运行,前五个字节不同,看来修改的时候Dll并不共享内存。
本文作者:乘舟凉
本文链接:https://www.cnblogs.com/czlnb/p/14631447.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步