C# アプリケーションの逆コンパイルを防ぐ方法 [終了]
-
16-09-2019 - |
質問
C#とMySQLを使用してクライアントサーバーアプリケーションを開発する予定です。他のソフトウェア ユーティリティと同様に、この製品を店頭で販売する予定です。私たちは、使いやすさとバンドルされた機能の点で競合他社よりも何らかの優位性を持っている当社の製品が逆コンパイルされることを懸念しています。
ソフトウェアの逆コンパイルを防ぎ、製品のビジネス ロジックをそのままにするにはどうすればよいでしょうか?
Reflector やその他の逆コンパイラーについては、コードがコピーに対して非常に脆弱になるという話を聞きました。
当社の顧客ベースは企業ではなく医療従事者であり、彼ら自身はそうしないかもしれませんが、競合他社がライセンスをコピー/無効にしたり、コード/機能を複製したりすることで、市場での当社製品の価値が低下する可能性があります。
これを防ぐための提案は大歓迎です。
解決
.NET アセンブリをクライアント マシンに展開する場合は、リフレクターや同様のツールを使用して、常に何らかの逆コンパイルが可能です。
ただし、この状況は、アプリケーションをネイティブ C++ で作成した場合に遭遇する状況と大きく変わりません。逆コンパイルはいつでも可能です。それが不可能な場合は、プロセッサもそれを理解できません。
熟練したクラッカーを倒すことは決してできません。彼らはあなたのセキュリティを、その挑戦だけで解決すべき知的パズルとして扱います。
問題は、ライセンス慣行を打ち破るのがどれほど難しいか、そして 投資収益率.
スプレッドシートを開き、考えられるシナリオを検討してください。危険はおそらくあなたが思っているよりも少ないでしょう。
「使いやすさ」などの要素は、どのユーザーでもソフトウェアに表示されるため、簡単にコピーできると考えられます。しかし、ほとんどの開発者 (私自身を含む) は典型的なユーザーとはまったく異なるため、優れたユーザー エクスペリエンスはまれです (また、うまくコピーされることはめったにありません)。
クラッカーの仕事を難しくすることに集中することをお勧めします。なぜなら、それを不可能にすることは決して不可能であり、ただ利益が得られないだけだからです。
試してみる可能性の 1 つ:インストール プロセスの一部として、アセンブリをネイティブ コードにプリコンパイルすることができます。Paint.NET はパフォーマンス上の理由からこれを行います。これを完了したら、元のアセンブリを破棄して、最適化されたネイティブ コード エディションを使用できると思います。
他のヒント
私だったら、難読化しようとは思わないでしょう。私は...するだろう:
- 心配せず、継続的に改善し、常に上位を目指してください。
しかし第二に
- 「秘密」サービスを Web 経由で提供することを検討してください。これがどれほど重要であり可能性があるかを判断するのはあなた次第です。ただし、エンドユーザーはコードを持っていないため、逆コンパイルは「防止」されます。
私はこれに見えた最後の時間は、 Spices.Net難読化ツールのように見えました市場で最高のもの。
いいえ、私は彼らのために動作しません。 :)
私は smartassembly を使用します。使用するのは簡単であり、また戻ってもあなたは、内蔵のクラッシュレポートを送信する機能を持っています。
他の人が言及した難読化ツールはおそらく非常に優れています。
あなたが考えなかったかもしれない別のアプローチは、C++ など、マシンコードに完全にコンパイルされた言語を使用して、コア ビジネス ロジックの一部をコーディングすることです。
これを行う利点は、誰かがあなたのコードを逆コンパイルすることがはるかに困難になることです。この欠点は、コードを 2 つの言語で保守する必要があることです。これは状況にとって最適なアプローチではないかもしれませんが、コードの残りの部分が UI の綿毛である一方で、コードのごく一部だけを難読化する必要がある場合には便利です。
たとえば、医療ソフトウェア パッケージは、医師に特定の腺のサイズを伝える目的で、たとえば特定の腺のエッジ検出を実行している可能性があります。ビットマップ画像から腺のサイズを計算するアルゴリズムは、C++ で書かれた DLL に含まれます。
.NETコードの周りのC ++ラッパーについてのご質問にお答えします。私はそれがうまくいくと思ういけない、あなたがアプリケーションを展開するときに、ビジネス・ロジック・コードを含む最終C ++ DLLと.NET DLLが別々のエンティティとビジネスロジックに手に入れたいものになりますので、まだだけ選び出すことができるだろう.NET DLLと内部を覗くます。
あなたは Remotesoftサラマンダープロテクターを検討する必要があります それは、高レベルの言語に逆コンパイルすることを不可能にするという点で、これは何よりもはるかに優れています。
もちろん、専門家である誰もがあなたのソフトウェアとの十分な時間を費やし、それはいくつかを逆コンパイルしているため、それを把握、それはすべてのセットを隠し、メソッドを取得することができます。
だから、彼らはピークを得ることができますが、それはそれについてです。彼らはそれを割れ誰の確率を低下させ、残りを把握する必要があります。
希望はこのことができます。
長い時間後にこのスレッドでの書き込み。私たちは、難読化を逆コンパイルを防ぐのに便利です Intellilockすると呼ばれるソフトウェアを購入しても、強力なを持っていますライセンシングモジュールます。
私たちは、それがIntellilockとして、より予防コントロールを持っているにもかかわらず、ネット炉の行きませんでした私たちの目的は十分に提供された。
難読化ツールは、コードを混乱させるが、プロテクターが保護されます。 あなたはネットプロテクターを使用することができます: NetWinProtectorする
Intellilockは、難読化の観点からだけでなく、ライセンスにも私たちの目的を果たしています。サポートがマーク件までではないようしかし、私は製品をお勧めしません。私たちは、私たちが直面している問題のための時間で回答を得たことはありません。私たちは、検索や私たち自身の研究、さらにはいくつかの目標を達成するために、ビジネス要件を変更しなければならなかった。
この答えを経て、私は任意のソフトウェアを促進または降格しようとするが、ちょうど私たちが使用している製品についての人々に認識させるたいので、彼らは賢明な決断を下すことができないのです。