首页
论坛
课程
招聘
为什么可以修改一个运行的进程系统dll的代码段?
0312 2022-1-3 133

例如一些hook会修改kernel32.dll或者其他系统dll的代码段,那如果修改了这些dll数据段不是违背了dll所有进程共用一份这句话了吗?测试发现我修改了一个进程中的kernel32.dll的代码段,其他进程不会有影响,那问题是这样这时这个被修改的dll在物理内存中还是之前只有一份吗?

收藏
1条回答
0346954 2022-1-8

没有修改前所有进程共用一份系统dll,修改时系统存在写时复制机制Copy on write,应用程序修改映射的dll内存时,系统会重新分配一份内存页面,把dll内存页面的内容复制一份到新的页面上,应用程序写入时写到的是新的物理内存页面上,不影响其它程序。

回复