10

...逆アセンブリを参照してもパスワードがすぐに公開されないようにします(静的変数として宣言されています)。例として、zip ファイルが添付されているプログラムを想像してみてください。このファイルは、アセットのために開く必要がありますが、詮索好きな人には簡単にアクセスできません。

そのジッパーを完全に隠したり保護したりすることは不可能であることはわかっていますが、少なくともカジュアルなスヌーパーを阻止するためにどのような手段が利用できるのか興味があります.

ありがとう!

4

9 に答える 9

26

プログラムが Windows プログラムの場合は、「このプログラムは DOS モードでは実行できません」を使用してください。パスワードとして。その文字列は、ほぼすべての Windows 実行可能ファイルに含まれています。

おそらく、プログラムの他の場所にあるキーを使用してパスワードを XOR するのと同じくらい安全であり、それを維持するための頭痛の種はほとんどないからです。

于 2011-03-15T19:29:26.607 に答える
12

要するに、いいえ、クラッカーは、zip ファイルを開く関数にブレークポイントを設定し、そこにある RAM からパスワードを取得するだけです。

于 2011-03-15T19:02:48.470 に答える
11

いいえ、しかしそれを難し​​くするためにできることがあります。

パスワードを一連の数字として保存し、それらにいくつかの計算を行って実際のパスワードを生成し、パスワードの一部をアイコンなどのリソースに保存します。

于 2011-03-15T19:01:25.240 に答える
6

実際のパスワードの代わりに、パスワードの XOR 暗号化バージョンを静的変数として保存します。使用する必要がある場合は、単純な XOR 復号化を適用して実際のパスワードを取得するだけです。

http://en.wikipedia.org/wiki/XOR_cipher

于 2011-03-15T19:02:15.007 に答える
5

1 つの解決策は、静的パスワードを別の定数または別の文字列と xor することです。これによりパスワードが分散されますが、元に戻すには多くの部分を組み合わせる必要があります. コンパイルされたバイナリの文字列には、pw 文字列が表示されません。

#include <stdio.h>

char pw[8] = {124, 109, 127, 127, 123, 99, 126, 104};

int main(int argc, char** argv) {
  for (int i = 0; i < 8; i++) {
    pw[i] = pw[i] ^ 12;
  }
  printf("%s\n", pw);  // => 'password'
}

簡単な検査からデータを保護する方法はたくさんありますが、決定的な敵対者はまったく別の問題です (DRM を行っている人々に尋ねてください)。

于 2011-03-15T19:00:59.867 に答える
1

プログラムの一部のデータから派生した別のパスワードでパスワードを xor することができます。たとえば、構造体/クラスの先頭に対する (パックされた構造体/クラス内の) フィールドの相対位置、またはおそらくいくつかの「定数」データを使用できます。 (現在の世紀とミレニアムは、次の 89 年間、まったく一定です :-) )、またはあるコードページから別のコードページへのいくつかの文字の変換、またはおそらくいくつかの数値の float または double への変換 (おそらく、いくつかの単純な除算のような2/3, 3/5, 5/7 の double をパスワードとして使用. 必ずコンパイラにそれらを最適化しないよう "強制" してください (おそらく、いくつかの文字列の長さなど、他の "測定可能な" ものから数値を導き出します)) . 特に最初のものはおそらく最も簡単に隠すことができます。フィールドの相対位置を「測定」することは非常に一般的です。

于 2011-03-15T19:18:07.260 に答える
0

では、なぜそれを保存するのですか?最初に xor アルゴリズムに基づいて暗号化する 2 番目のパックされたアプリケーションを作成してみませんか? そうすれば、パスワードを保存する必要はまったくありません!

もちろん、この方法は少し難しくなりますが、この方法を使用するだけでなく、それを機能させるために必要なことを学ぶことには大きなメリットがあると言えます。

于 2011-03-15T19:03:28.990 に答える