0

crc(Cyclic Redundancy Check)を使用してc ++出力ファイル(peファイル)を編集から保護するにはどうすればよいですか?

                            **Best Regards**
4

2 に答える 2

1

CRC を使用すると、ファイルが誤って変更されたかどうかを効果的に確認できますが、コピー防止やゲームのチート防止には効果的ではありません。

通常、プログラムにある種の CRC チェックがある場合、チェックを行うコードを見つけて、アセンブリ命令を条件付き分岐から無条件分岐に変更します。通常、CRC が失敗した後、プログラムはメッセージを表示して終了するため、これは非常に簡単に見つけることができます。メッセージが発生したときにブレーク ポイントを配置し、スタック内のすべてのフレームを調べます。次に、スタック内の各ポイントにブレーク ポイントを配置し、プログラムを再度実行して、CRC チェックを実行するポイントを確認します。

これは特に難しいことではなく、選択したソフトウェアに同じ変更を適用する小さなプログラムがバンドルされていることがよくあります。

于 2009-11-03T11:23:20.083 に答える
1
  1. コードに静的変数が必要です。変数は、16 進エディタ (DEADBEEF など) で簡単に見つけられる値に初期化する必要があります。
  2. CRCアルゴリズムが必要です(Googleで検索してみてください)
  3. トリッキーな部分。exeの最初と最後へのメモリ内のポインターを取得する必要があります。コードの場所の pe ファイル ヘッダーを解析し、コードの先頭からコードの末尾まで crc アルゴリズムを実行できます。次に、値を取得します。
  4. もちろん、静的変数の値で計算値を確認する必要があります。
  5. 値の挿入 - ビルドの頻度によっては、ツールをプログラミングしたい場合があります。いつでもプログラムを実行して、比較にブレークポイントを設定できます。次に、値を書き留めて、実行可能ファイルに 16 進数で編集します。または、pe-header も解析し、同じ関数 (今回はファイルで) を使用してパッチを適用するスタンドアロン プログラムを作成します。これは複雑になる可能性があります。読み込み中。
于 2009-11-03T12:29:59.347 に答える