Защищает ли объявление переменной «private» в C # память в Windows от доступа сканера памяти? - PullRequest
5 голосов
/ 21 июля 2010

Мой напарник всегда говорит мне, что если мы объявляем что-либо как "публичное", то это опасно, потому что тогда любая программа может получить доступ к этой памяти, и что решение состоит в том, чтобы использовать "приватный" модификатор доступа.

Мне интересно, правда ли это на самом деле.

Ответы [ 3 ]

9 голосов
/ 21 июля 2010

То есть , а не , на самом деле, правда.

Модификаторы доступа предназначены только для организации вашего кода. Они защищают его только в том смысле, что вы защищаете свой стакан от опрокидывания, устанавливая его в недоступном для кошки месте.

2 голосов
/ 21 июля 2010
Модификаторы доступа

public и private имеют отношение только к видимости этих структур (классов, методов или переменных) для других классов в том же приложении.Защита памяти между процессами и пользователями обеспечивается операционной системой.В случае Windows это гарантирует, что процессы / потоки не уровня администратора (и системного кольца) не имеют доступа к памяти, которая явно не используется совместно (например, совместно используемая память) с открытыми разрешениями.Фактически, Windows позволяет процессам предоставлять очень определенные права на определенные области памяти, но это не предусмотрено в определении языка C #.Вам нужно было бы получить доступ к системным API-интерфейсам, чтобы контролировать такие виды доступа к определенным блокам памяти;по умолчанию все блоки памяти защищены ОС.

Теперь, если сканер памяти работает в режиме ring-0 или с определенными повышенными привилегиями, вы ничего не можете сделать в своем процессе, чтобы заблокировать этот доступ.1005 *

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

Модификаторы C # не влияют на адресность памяти - этим управляют архитектура процессора и ОС.

...