![Почему Windows позволяет читать и записывать данные в память другого процесса?](https://rvso.com/image/1615256/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20Windows%20%D0%BF%D0%BE%D0%B7%D0%B2%D0%BE%D0%BB%D1%8F%D0%B5%D1%82%20%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C%20%D0%B8%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8B%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%B2%20%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C%20%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B3%D0%BE%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%B0%3F.png)
Я обнаружил, что многие отладчики (например, x64dbg) или шестнадцатеричные просмотрщики (HxD) позволяют вам получать доступ и изменять память другого процесса. Это работает без запроса разрешения.
Я даже написал простую программу, которая заменяет строку в памяти других процессов, и она работает. (Она использует функции CreateToolhelp32Snapshot, Process32First, Process32Next для поиска процесса, OpenProcess для доступа к нему, VirtualMemoryEx для получения допустимых ячеек памяти и ReadProcessMemory/WriteProcessMemory для чтения/записи в него.) Потенциально ее можно использовать для вредоносной деятельности.
Почему это работает? Почему Windows предоставляет нам такую функциональность? Разве не должно быть больше ограничений?