-3

私は CheatEngine で遊んでいましたが、クライアント側のアプリケーションですべての文字列を表示できることがわかりました。チート エンジンが実行時に文字列を認識しないようにするにはどうすればよいでしょうか。私は知っているあらゆる種類のアプローチを試しましたが、文字列があるときはいつでも CheatEngine が表示できます。これを防ぎたい、または少なくとも CheatEngine が代わりに暗号化された文字列を視覚化するようにします。

4

2 に答える 2

4

あなたが求めていることは、正しく達成するのが非常に困難です。

SecureString多くの人が、このクラスを使用して文字列をメモリ内で安全に保つことができると指摘するでしょう。安全な文字列を使用するには、多くの注意事項があります。

  1. 安全に作成する必要があります。がすでにある場合はstring、各文字をループして SecureString にコピーするだけです。ただし、元の文字列がまだ存在するため、何も達成されません。後でガベージ コレクションが行われる可能性がありますが、ガベージ コレクションによって文字列のメモリがゼロになるわけではありません。アンセーフ コードまたはプラットフォーム呼び出しを使用して、CLR 内の文字列をゼロにすることができます。ただし、文字列がインターンされている場合、プログラムが壊れる可能性があります。
  2. SecureString安全に作成でき、安全な文字列のソースがゼロになっていることを確認できたとしましょう。でできることはあまりありませんSecureString。それらを使って何かを行うことができる API は多くありません。ある時点で、それらをプレーンな古い文字列に戻し、その文字列を使用してゼロにする必要があります。基礎となる API が、そのコピーを作成するなど、安全でないことを行う場合、コピーがどこにあるかを知ることができません。そして、単純な古い文字列がメモリに存在する短い期間、プロセスのメモリを常に監視しているエンジンがそれを取得できます。

ここで私が実際に推進しているのは、ボックスの管理者権限を持つ人からプロセスのメモリを保護することは多かれ少なかれ不可能であり、.NET Framework がその問題を複雑にしているということです。CLR はユーザーに代わってメモリを管理するように設計されているため、明示的なメモリ管理のニーズに反する可能性があります。

于 2014-12-18T14:06:42.300 に答える
2

SecureStringクラスを使用してみてください!

機密を保持する必要があるテキストを表します。テキストは使用時にプライバシー保護のために暗号化され、不要になるとコンピューターのメモリから削除されます。このクラスは継承できません。

于 2014-12-18T13:47:13.543 に答える