检测内存读取和更改变量?

时间:2013-08-19 15:38:22

标签: c# security memory

我有一个简单的控制台应用程序,变量X = 10.然后我有一个循环,要求用户更改变量和输出。我附加一个调试器并编辑程序的内存区域以更改变量X.我该怎么做才能防止用户使用内存编辑器编辑这个X变量,并且无论如何检测(在我的程序中)调试器或内存编辑器,当访问变量X时,在其他地方移动变量X,当变量X被更改时,向用户发送一条消息,你不应该这样做?这只是我的一个教育实验。

例如,在下面的代码中

        byte X = 10;
        X = byte.Parse(Console.ReadLine()); // scan memory looking for X to change
        Console.ReadKey(); // Change X before the output
        Console.WriteLine("X = " + X);

X可以在程序输出之前轻松编辑,即使使用其他一些花哨的指针技巧,在使用简单的外部程序输出之前仍然可以轻松编辑。

1 个答案:

答案 0 :(得分:3)

没有。从根本上说,如果你有一个具有足够访问权限的用户可以在另一个进程的内存中进行搜索,那么你可以做很多事情。

然而,根据我的经验,这很少是一个问题。

如果你的确实问题,你可以通过仅以加密形式维护值来减少攻击空间 - 然后为未加密的数据提供“工作空间”,这只是可信任的解密后立即 ,并在使用后擦除。它并没有完全消除攻击向量,但它可以减少它。