MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 请教小弟我修改了一个已经载入内存的dll,那么其他

请教小弟我修改了一个已经载入内存的dll,那么其他进程中的dll会受影响吗

www.MyException.Cn  网友分享于:2013-02-21  浏览:9次
请问我修改了一个已经载入内存的dll,那么其他进程中的dll会受影响吗?
也就是说,我修改的是实际物理内存,还是这个修改只针对本进程?

那么如果是只针对本进程的修改,那本进程是否要进行一份dll的copy呢?

------解决方案--------------------
不影响其它进程,每个进程空间是独立的
一般不能直接修改到物理内存,修改的都是虚拟内存

另外,dll在物理内存中不会只有一份,
因为有全局变量等内存数据,如果只有1份,会干扰其它进程
------解决方案--------------------
引用:
引用:WIN32上如果是相同路径的dll被不同的进程载入,那么代码是共享的,全局数据不共享。
如果是不相同的DLL,代码和数据都不会共享。不相干。
API HOOK的话肯定会影响到其实进程的,要有然HOOK有什么用呢!

api hook是hook当前进程好吗?一般要配合dll注入才可以hook其他进程,所以只要不是修改共享内存段,修改代码段不影响其他进程,lz可以hook系统api试试看
------解决方案--------------------
RING3层面上来说,HOOK某一进程内部的DLL不会影响其他载入该DLL的进程。正如各位楼上所说,应用程序运行于虚拟地址空间,每个进程有独立的0~4GB线性地址(x86),每个进程有该DLL副本。至于是不是写时复制,要看内核是如何操作的。从内核原理上来看,应该是写时复制(但我不确定,只是个人感觉应该是,这跟ZwCreateSection啥的实现有关,当然也跟MMU和Windows内存管理器有关)。至于有高人说:“会的,会影响的”,那应该是DLL共享数据段里的数据,在进程之间会共享而已。我想其他的,应该就没什么可说的了。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有