请问我修改了一个已经载入内存的dll,那么其他进程中的dll会受影响吗?
也就是说,我修改的是实际物理内存,还是这个修改只针对本进程?
那么如果是只针对本进程的修改,那本进程是否要进行一份dll的copy呢?
[解决办法]
不影响其它进程,每个进程空间是独立的
一般不能直接修改到物理内存,修改的都是虚拟内存
另外,dll在物理内存中不会只有一份,
因为有全局变量等内存数据,如果只有1份,会干扰其它进程
[解决办法]
api hook是hook当前进程好吗?一般要配合dll注入才可以hook其他进程,所以只要不是修改共享内存段,修改代码段不影响其他进程,lz可以hook系统api试试看
[解决办法]
RING3层面上来说,HOOK某一进程内部的DLL不会影响其他载入该DLL的进程。正如各位楼上所说,应用程序运行于虚拟地址空间,每个进程有独立的0~4GB线性地址(x86),每个进程有该DLL副本。至于是不是写时复制,要看内核是如何操作的。从内核原理上来看,应该是写时复制(但我不确定,只是个人感觉应该是,这跟ZwCreateSection啥的实现有关,当然也跟MMU和Windows内存管理器有关)。至于有高人说:“会的,会影响的”,那应该是DLL共享数据段里的数据,在进程之间会共享而已。我想其他的,应该就没什么可说的了。