17

ソフトウェアのリバース エンジニアリングを防ぐことは不可能であることは承知しています。

しかし、crackmes.deを見てみると、難易度 8 と 9 (1 から 10 のスケール) のクラックミーがあります。これらのクラックミーは、クラック方法に関するチュートリアルを書いている天才的な頭脳によってクラックされています。場合によっては、そのようなチュートリアルが 13 ページ以上になることもあります。
私がクラッカーを作ろうとすると、10分でクラッキングされます。続いて、長さ 20 行の「クラック方法」チュートリアルが続きます。

質問は次のとおりです。

  • 比較的優れた耐クラック保護を行うにはどうすればよいですか。
  • どのテクニックを使用する必要がありますか?
  • どうすれば学べますか?
  • ...
4

6 に答える 6

9

免責事項: 私はソフトウェア保護ツール ベンダー ( Wibu-Systems ) で働いています。

クラッキングを阻止することが私たちのすべてであり、1989 年以来私たちが行ってきたことです。結論: 安全なハードウェア ドングルが正しく実装されている場合にのみ、クラックを防ぐことができます。

最も強力なクラッキング対策は、暗号化 (対称キーまたは公開キー) に依存しています。暗号化は非常に強力ですが、キー ストレージ/生成が同等に強力でない限り、攻撃される可能性があります。自分が何をしているのかわからない限り、優れた暗号化を使用しても、他の多くの方法も可能です。ソフトウェアのみのソリューションでは、アクセス可能な場所、簡単に見つけられる場所、または中間者攻撃に対して脆弱な場所にキーを保存する必要があります。Web サーバーに保存されているキーについても同じことが言えます。適切な暗号化と安全なキー ストレージを使用しても、デバッガーを検出できない限り、クラッカーはメモリのスナップショットを取得し、そこから exe を構築できます。したがって、一度にメモリ内で完全に復号化する必要はなく、デバッガー検出用のコードを用意する必要があります。難読化、デッド コードなどによって長時間速度が低下することはありません。最初からコードを実行することでクラックする必要はありません。彼らはそれよりもはるかに賢いです。セキュリティ検出コードを見つけてそこからクラックする方法については、ネット上のクラッキングのハウツー ビデオを参照してください。

簡単な恥知らずなプロモーション: 当社のハードウェア システムはクラックされたことはありません。リバース エンジニアリング対策のみに使用する主要なクライアントが 1 つあります。だから私たちはそれができることを知っています。

于 2011-04-05T23:06:36.970 に答える
4

Java や C# などの言語は高レベルすぎて、クラッキングに対する効果的な構造を提供していません。難読化によってスクリプト キディを難しくすることはできますが、製品に価値がある場合はいずれにせよ壊れます。

于 2011-04-05T11:29:49.440 に答える
2

このラウンドを少し回して、次のことを考えます。

(1) プログラムが簡単にハッキングされないように、単純な (っぽい) 対策を講じます。たとえば、Java では次のようになります。

  • コードを難読化して、少なくとも敵が難読化されたコードの逆コンパイルに目を通すという適度な手間をかけなければならないようにする
  • カスタムフォーマットで暗号化されたいくつかのクラスをロードするカスタムクラスローダーを書くかもしれません
  • あなたのクラスがどのような情報を公開しなければならないかを見て(例えば、サブクラス/インターフェース情報は難読化できない)、それを回避する方法を考えてください
  • いくつかの小さな重要な機能を、逆アセンブルしにくい DLL/フォーマットに入れる

ただし、努力すればするほど、深刻なハッカーはそれを「挑戦」と見なすようになります。たとえば、コンピュータ サイエンスの学位を取得する平均的な 1 年生が数時間でプログラムをハッキングできないようにする必要があります。

(2) より微妙な著作権/著作権マーカー (たとえば、画像内のメタデータ、サーバーに接続および認証されないすべてのコピーに 1 年後に表示されるポップアップを微妙に埋め込むなど) を配置して、ハッカーが気にしないようにするハッキングされたプログラムがそのまま「機能する」ため、検索/無効にします。

(3) プログラムから利益を上げる可能性が現実的にない国にプログラムを配布し、あまり心配しないでください。どちらかと言えば、これはバイラル マーケティングの一種です。多くの国では、英国/米国で私たちの貴重なものの「著作権侵害」と見なされていることは、政府/法執行機関によって公然と容認されていることを忘れないでください。存在しない著作権の行使に基づいてビジネス モデルを構築しないでください。

于 2011-04-05T11:47:28.407 に答える
0

個人的に私はサーバー側のチェックのファンです。実行するたびにアプリケーションまたはユーザーを認証するのと同じくらい簡単です。ただし、これは簡単に破ることができます。または、コードの一部をサーバー側に配置すると、さらに多くの作業が必要になります。

ただし、プログラムにはインターネット接続が必要であり、サーバーの費用がかかります。しかし、それはそれを比較的良好に保護する唯一の方法です。スタンドアローンのアプリケーションは、比較的速くクラックされます。

サーバー側に移動するロジックが増えると、クラックが難しくなります。しかし、それだけの価値がある場合はそうなるでしょう。Blizzrd のような大企業でさえ、サーバー側のリバース エンジニアリングを防ぐことはできません。

于 2011-04-05T11:47:12.260 に答える