1

我有一个带有变量 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 可以在程序输出之前轻松编辑,即使使用其他一些花哨的指针技巧,它仍然可以在输出之前使用简单的外部程序轻松编辑。

4

1 回答 1

3

不。从根本上说,如果您的用户具有足够的访问权限,他们可以在另一个进程的内存中四处寻找,那么您无能为力。

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

如果在您的情况下确实存在问题,则可以通过仅以加密形式维护值来潜在地减少攻击空间-然后为未加密的数据提供“工作空间”,该数据仅在解密后立即被信任,并在使用后被擦除。它并不能完全消除攻击媒介,但可以减少它。

于 2013-08-19T15:41:40.790 回答