![為什麼 Windows 允許讀寫另一個進程記憶體?](https://rvso.com/image/1615256/%E7%82%BA%E4%BB%80%E9%BA%BC%20Windows%20%E5%85%81%E8%A8%B1%E8%AE%80%E5%AF%AB%E5%8F%A6%E4%B8%80%E5%80%8B%E9%80%B2%E7%A8%8B%E8%A8%98%E6%86%B6%E9%AB%94%EF%BC%9F.png)
我發現許多偵錯器(如 x64dbg)或十六進位檢視器(HxD)允許您存取和修改另一個進程的記憶體。它無需任何許可即可工作。
我什至編寫了一個簡單的程式來替換其他進程記憶體中的字串並且它可以工作。 (它使用 CreateToolhelp32Snapshot、Process32First、Process32Next 函數來尋找進程,使用 OpenProcess 來存取進程,使用 VirtualMemoryEx 來取得有效的記憶體位置,並使用 ReadProcessMemory/WriteProcessMemory 來讀取/寫入進程。)它可能會被濫用於惡意活動。
為什麼這樣有效?為什麼Windows要為我們提供這樣的功能呢?不應該更加限制嗎?