2

そのため、友人がゲームがハッキングされた方法とテクニックがどのように機能したかを教えてくれました。それから彼はその種の攻撃を防ぐための最良の方法は何かと尋ねました。私が知っていた最も簡単な方法は、A)重要な値のビットをシャッフルするB)値をハッシュし、毎回比較することでした(スコアまたはお金を保持するintはめったにチェックされない可能性があります)。

次に、C#での実装を試しましたが、=演算子をオーバーロードできませんでした。これどうやってするの?

元のコード。

class EncryptVal <T>
{
    T v;
    public T operator = (T v2)
    {
        //shuffle bits
    }
    public T operator ()()
    {
        //return unshuffle bits
    }
}
4

6 に答える 6

13

と言うのではなく、 implicitand演算子を探しています。これにより、暗黙的(つまり、割り当てのみ)および明示的(つまり、キャスト演算子がある)にキャストしたときにどのように機能するかを定義できます。explicit=

public static implicit operator Type1(Type2 p) {}
public static explicit operator Type1(Type2 p) {}
于 2009-04-23T12:15:11.487 に答える
10

クラス内の値をカプセル化し、クラスとの間の暗黙的な変換をオーバーロードできます。

public class EncryptVal<T> {

    private T _value;

    private EncryptVal(T value) {
        _value = value;
    }

    public static implicit operator EncryptVal<T>(T value) {
        //shuffle bits
        return new EncryptVal<T>(value);
    }

    public static implicit operator T(EncryptVal<T> value) {
        //unshuffle bits
        return value._value;
    }

}

使用法:

// implicit conversion from int
EncryptVal<int> e = 42;

// implicit conversion to int
int i = e;
于 2009-04-23T12:26:49.773 に答える
2

C#で代入演算子をオーバーロードすることは許可されていません。これがMSDNのドキュメントです。

この動作のために独自の関数を作成する必要があります。

于 2009-04-23T12:14:44.747 に答える
2

プリミティブデータ型のように使用されるクラスを作成することが非常に一般的なC++から来ていると思います。C#では、より明示的に処理を行います。

私はそれをプロパティまたは2つのメソッドとして記述します。例:

class EncryptVal <T>
{
    T v;
    public T Value
    {
      get
      {
        //return unshuffle bits
      }
      set
      {
        //shuffle bits
      }
    }
}
于 2009-04-23T12:15:45.757 に答える
0

値の設定に=を使用しないでください。割り当てをオーバーロードすることはできません。

あなたができることはそれを財産の後ろに隠すことです。

int _encyptedValue;
Public int myInt
{
    get
    {
        return Decrypt(_encryptedValue);
    }
    set
    {
         _encryptedValue = Encrypt(value);
    }
}

あなたはあなたの復号化/暗号化を選択することができます

于 2009-04-23T12:25:10.713 に答える
0

実装部分の暗黙的/明示的演算子のオーバーロードに行きます。

変換は大量の処理を行うため、おそらく明示的なものであり、最終的には失敗する可能性があります。

シャッフルビットは、ゲームに興味を持っているウィッシュフルハッカーがいる場合は確かに長くは続かないであろう難読化テクニックにすぎないように思われることを付け加えておきます。データを保護するには、おそらくより強力な暗号化が必要ですが、より多くのコンテキストが必要です。

于 2009-04-23T12:25:41.990 に答える