不同进程导入的dll是否为共享

dll 中的代码是共享物理内存的, 数据是写时复制, 没有修改数据之前是共享的, 修改的时候会拷贝一份来修改, 之后就不会共享物理内存了.
可以通过设置共享段来共享数据, 共享段里的数据在各个进程间共享物理内存(即使句柄不同也无所谓, 虚拟内存机制可以把不同的进程虚拟地址映射到相同的物理地址上)

详细说明:

    我先正常调用LoadLibaryA查看其内存

    

 

 

     然后同时将启动另外一个程序,这次先将LoadLibaryA的代码前五个字节变成JMP指令,再调用LoadLibaryA,查看其内存:

    

 

     同样是0x7636DEA5并且同时运行,前五个字节不同,看来修改的时候Dll并不共享内存。

 

posted @ 2021-04-08 11:32  乘舟凉  阅读(258)  评论(0编辑  收藏  举报