web-dev-qa-db-ja.com

バイナリコード保護とアンチリバースエンジニアリングのための包括的なソリューションはありますか?

誰もが包括的なバイナリ強化とアンチリバースエンジニアリング機能を備えた優れた製品を知っていますか?あるいは、この種のバイナリコード保護を実行する製品を比較する独立したレビューを見た人はいますか?包括的なソリューションを提供するものは1つまたは2つしか見つかりませんでした。

  1. Arxan GuardIt http://www.arxan.com/software-protection-products/index.php
  2. PikeWerks http://pikewerks.com

これらのうち、Arxanさえ、その保護メカニズムの点で最も包括的なようです。私が探している機能の種類は次のとおりです。

  • リバースエンジニアリングに対する保護
  • bORE攻撃からの保護(どこでも実行されるとブレーク)
  • 改ざんに対する保護
  • バイナリ変更に対する保護

これらの機能を提供するために、製品は以下のより大きなカテゴリーで多くの異なる技術を実装します。

  • 静的および動的なバイナリ難読化
  • 仮想マシン
  • 静的およびランタイム暗号化
  • チェックサムとタイミング
  • アンチデバッグ
  • 認証

たとえば、静的バイナリ難読化を実装するには、基本的な定数やエクスポートの名前の変更からパスのチャッフィング、偽のコードの挿入など、さまざまな手法を提供する必要があります。参考として、Andrew Griffithの Binary Protection Schemes に関する論文 felinemenace.org を参照してください。

PikeWerksについてはあまり詳しくありませんが、Arxanの製品がビルド環境に便利に統合されているように聞こえるので、カスタムコードは不要です。さらに、defendだけでなく、detectおよびreact攻撃します。

*更新*Linux、x86、x64、Java、C、およびC++のプラットフォーム要件をリストしておく必要がありました。

18
Weber

バイナリをクラッカーから保護するために投資するほど:

  • プロジェクトコストの少ない方が顧客の付加価値に投資されます
  • 製品が高価になり、正当な顧客を追い払う
  • 市場投入までの時間が長いほど、保守性の低い競合他社がより速く実行できるようになります

仮想マシンは、IT部門が現在実行されている方法の一部です。 VMでの実行を避け、市場の一部への製品の販売を避けます。

改ざん防止/認証はおそらくOSの機能で処理する必要があります。Windows、Mac OS、および多くのスマートフォンプラットフォームですでにサポートされていることは知っています。私の主な専門分野はOS Xです。OSXには「キル」フラグがあり、署名されていないプロセスが自発的に自殺する可能性があります。アプリケーションは独自の署名をテストできます。ただし、アプリがクラックされた場合、テストも変更または削除されていると想定できます。

難読化/暗号化の手法は無意味です。ある時点で、CPUは実際に実行する必要のある命令を確認する必要があります。現時点では、これらの命令をダンプして「クリーン」なバイナリを作成できます。

9
user185

以前のすべての回答の要約-100%の保証でアプリケーションを保護することは不可能です。ソフトウェアが良い場合は、遅かれ早かれクラックされ、保護が難しい場合は、カード化され(違法に購入されますが、合法的なライセンスが付与されます)、ソフトウェアを支払うことなくソフトウェアを実行する方法が見つかります。 IDA Proを見てください。このソフトウェアの作成者は、自分のソフトウェアを保護する方法を本当に知っていると思いますが、インターネット全体でクラックされたバージョンを見つけることができます。したがって、プログラムの販売を開始したい場合は、クラッカーと開発者の間の永遠の競争に備えてください。クラッカーと開発者は、保護を変更/改善するために次のリリースをどうするかを考えています。

バイナリ保護の哲学的側面がない場合、プロテクターによるいくつかの方法が通常使用されます。

  • ハードウェアへのリンク。
  • CRCチェック。
  • 元のエントリポイントの非表示。
  • さまざまなアンパックトリック-異常なアンパックアルゴリズムの適用;
  • インポートと他のセクションに損傷を与える;
  • デバッガーのバグを介したさまざまなアンチデバッグトリック。

これらはすべてバイパスすることができます。さらに、ソフトウェアの速度が低下し、新しいバグや不安定性の問題が発生する場合があります。

開発者が通常ソフトウェアに適用するもの:

  • コードの混合(スクランブル)、難読化。
  • アプリケーションの暗号化。
  • 擬似コードの使用法。
  • eHを介してポップする意図的なエラー。

この場合も、これらの保護をバイパスすることができます。ただし、暗号化は、今日より賢明で最良のソリューションのように見えます。ただし、安全に実装するのは難しい場合があります。さらに、ソフトウェアの速度が大幅に低下する可能性があります。

そして最後に保護ソフトウェア。私が良いと聞いたことから:

上記の各ソフトウェアについて詳しく説明することはしません。自分で行う必要があります。これらの保護者の1人のライセンスの購入を検討している場合は、保護に関する考えられる問題について、あなたの努力を十分に検討してください。

6
anonymous

私はInishTechのSLPサーバーを使用しています。 http://www.inishtech.com これは、以前はMicrosoftによって開発され、サードパーティ企業に分離されました。

SLPは、Windowsプラットフォームで実行されているソフトウェアを保護し、すべてではないにしても多くの懸念に対処するテクノロジーです。私は彼らの営業担当と連絡を取り合っており、彼らは小規模な開発者、スタートアップ、ソフトウェアのカスタム展開のための費用対効果の高い計画をいくつか持っています。

また、基本コードの保護と組み合わせて、ソフトウェアライセンス、メータリング、購入前の試用も処理します。

4

これらのことを強制するための保証された方法はないと言いましょう。私の推奨は、カスタムアルゴリズムをクライアントに出荷せず、管理下にあるサーバーに保管することです。

2
Woot4Moo

あなたが特定したこれらの製品は、彼らがするだろうと彼らが言うことをしますが、Woot4MooとGraham Leeが言ったことは本当です。リバースエンジニアリングを防ぐことはできません。これは哲学的な議論ではなく、単純な現実です。これまでのところ、最善を尽くす人々は悪者であるように見えますが、誰もが期待できることはすべて攻撃を遅くすることです。

あなたはそれから抜け出そうとしていますか? IPを保護するだけの場合は、忘れてください。コアメカニズムが極秘である場合は、アプリをパブリックドメインに配置しないでください。単に悪者を減速させようとしているのであれば、すでに述べたアプリの1つを使用してください。

しかし、覚えておいてください-ハッキングされないことを信じないでください。また、関係者にそのようなことを約束しないでください:-)

2
Rory Alsop

あなたがやろうとしていることは、解決するのが難しい問題ではなく、解決するおそらく不可能問題です。自分の操作環境を完全に制御できるユーザーにプログラムを提供する場合、プログラムの実行方法を制御することはできません。難しいだけでなく、不可能です。

あなたは彼がすることをより困難にすることができますが、これらの戦術とテクニックのそれぞれはコストがかかり、他の回答で議論されているように、消費者にとってソフトウェアの全体的な価値を非常に現実的に減少させます。

代わりに、心配している場合は、有料の顧客をシステムに接続する付加価値サービスに焦点を当てる必要がありますあなたコントロールではありません。ソフトウェアを外部のアカウント(サーバー上のアカウントなど)に関連付けることでユーザーが付加価値を得る場合、そのリンクを使用して、有料の顧客を明確に特定することができます。

2
tylerl

他のポスター、@ Graham、@ Rory、@ Amsなどに強く同意してください...
これは、それをより困難にし、偶発的な海賊行為を防止するだけです。誰かが本当にあなたのコードを手に入れたいのなら、彼らはそうするでしょう。最悪の場合、デバッガーを接続して、復号化されたマシンコードを取得できます。

私は別の非常に良いものを追加します: Red-GateのSmartAssembly

0
AviD