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 に答える