AkashDaniel Ответов: 2

Как очистить или удалить значение переменной навсегда из памяти компьютера?


Я создал переменную в c#
Теперь я хочу очистить все эти переменные из памяти компьютера.

Существует exe-файл под названием Dumpit.exe, он используется для извлечения данных из памяти компьютера, когда я использую Dumpit, он извлекает все мои данные из памяти компьютера.
Теперь я хочу защитить свои данные, поэтому я хочу удалить свои данные из памяти компьютера навсегда.

Есть ли какой - нибудь способ сделать это?

Что я уже пробовал:

Я попробовал сборщик мусора но это тоже не работает

Patrice T

В чем тут дело?

AkashDaniel

Для защиты данных
Существует приложение под названием Dumpit.exe,он используется для извлечения дампа памяти.Он извлек все мои данные, хранящиеся в компьютере memory.so я хочу навсегда удалить эти данные из памяти компьютера, чтобы обезопасить свои данные.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

AkashDaniel

Хорошо теперь я отредактировал свой вопрос

2 Ответов

Рейтинг:
2

johannesnestler

Защита данных и освобождение от оперативной памяти-это совершенно разные вещи. Я думаю, что вы не хотите использовать свои данные во время работы приложения - поэтому его память всегда будет находиться в оперативной памяти (или даже на жестком диске через подкачку). Вы можете использовать шифрование и SecureStrings для защиты/скрытия ваших данных.


Рейтинг:
0

OriginalGriff

Это сложно, во многих случаях очень сложно или даже почти невозможно.

Первая проблема заключается в том, что не все переменные могут быть изменены. Строки, например, неизменяемы: они не могут быть изменены после создания. При попытке изменить строку:

string s = "hello";
s = s + " world!";
Создается новая строка, достаточно длинная для пересмотренной версии, копируются исходные данные, а затем к ним добавляется новый сегмент. Исходное содержимое строки никоим образом не изменяется (и если вы не сохранили вторую ссылку на него), к нему даже нельзя получить доступ снова.

Таким образом, в C# есть переменные, которые вы не можете изменить или удалить, и это означает, что вы не можете "очистить все эти переменные из памяти компьютера". Даже если вы заставили сборщик мусора избавиться от них, это не удаляет содержимое из памяти, а просто помечает пространство как "доступное", и когда этот конкретный фрагмент памяти используется повторно, значение будет по крайней мере частично перезаписано. И у вас нет никакого контроля над этим вообще: распределитель памяти будет использовать память так, как ему кажется подходящим в данный момент, Вы не можете заставить его использовать любой свободный сегмент.

И это становится еще хуже, потому что Windows (как и большинство современных ОС) использует виртуальную память, а это означает, что если она начинает "исчерпывать" реальную физическую память, она "пролистывает" часть ее на диск, чтобы освободить ее, а это означает, что в любой момент во время выполнения вся ваша память приложения может быть записана на диск и "вытащена", когда это нужно вашему приложению. И то, что вы абсолютно не контролируете, вы даже не знаете, что это происходит!

Таким образом, вы не можете сделать это, вы не можете контролировать его, и вы можете найти его "просто сидящим там" на вашем жестком диске через месяц! (Хуже того, часто можно восстановить последние 5 или 6 наборов данных, записанных на магнитный носитель, даже после того, как они были перезаписаны!)


BillWoodruff

+5 очень полезное объяснение того, почему наши грехи никогда не прощаются :)

AkashDaniel

Хахаха