例如一些hook會修改kernel32.dll或者其他系統(tǒng)dll的代碼段,那如果修改了這些dll數(shù)據(jù)段不是違背了dll所有進程共用一份這句話了嗎,?測試發(fā)現(xiàn)我修改了一個進程中的kernel32.dll的代碼段,,其他進程不會有影響,那問題是這樣這時這個被修改的dll在物理內存中還是之前只有一份嗎,?
沒有修改前所有進程共用一份系統(tǒng)dll,,修改時系統(tǒng)存在寫時復制機制Copy on write,應用程序修改映射的dll內存時,,系統(tǒng)會重新分配一份內存頁面,,把dll內存頁面的內容復制一份到新的頁面上,應用程序寫入時寫到的是新的物理內存頁面上,,不影響其它程序,。