Что могут сделать приложения, чтобы заблокировать другие процессы из ReadProcessMemory? - PullRequest
0 голосов
/ 16 июня 2020

В Windows Internals (7-е издание) автор упоминает, что:

Потоки не могут случайно ссылаться на адресное пространство другого процесса [...], если только другой процесс делает доступной часть своего частного адресного пространства [...] или если у одного процесса нет права открывать другой процесс для использования функций межпроцессной памяти, таких как ReadProcessMemory и WriteProcessMemory (что процесс, который выполняется с одна и та же учетная запись пользователя, а не внутри AppContainer или другого типа песочницы, может быть получена по умолчанию, если целевой процесс не имеет определенных средств защиты ).

(Глава 1, Потоки планирования в пользовательском режиме , курсив добавлен).

Какие «определенные защиты» я могу добавить к своим процессам, чтобы другие процессы не вызывали ReadProcessMemory и WriteProcessMemory? Включена ли эта защита по умолчанию?

Означает ли это, что я могу написать схематичную программу, которая очищает память от других приложений без необходимости администратора?

1 Ответ

0 голосов
/ 21 июля 2020

Вы должны работать от имени администратора, чтобы производить запись в память внешнего процесса. Но вам не нужно запускать от имени администратора для чтения.

Да, вы можете писать программы, очищающие внешнюю память процесса.

Все меры защиты, которые вы делаете в пользовательском режиме, можно легко обойти из пользовательского режима.

Если вы хотите запретить людям использовать ReadProcessMemory в вашем процессе, вам необходимо создать драйвер ядра, который удаляет дескрипторы, открытые OpenProcess ().

В качестве более простой защиты пользовательского режима вы можете перечислить все открытые дескриптор процесса и закрытие вашего процесса, когда для вашего процесса будет обнаружен дескриптор с разрешениями, которые вам не нравятся (из процесса, который выглядит рискованно). Все еще лишь незначительное раздражение для тех, кто обладает навыками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...