32

C#とMySQLを使用してクライアントサーバーアプリケーションを開発することを計画しています。他のソフトウェアユーティリティと同様に、製品を棚に置いて販売する予定です。私たちは、使いやすさとバンドルされた機能の点で競合他社よりもある種の優位性を持っている製品の逆コンパイルについて心配しています。

ソフトウェアの逆コンパイルを防ぐにはどうすればよいのでしょうか。そうすれば、製品のビジネスロジックは損なわれません。

コードをコピーに対して非常に脆弱にするReflectorやその他の逆コンパイラについて聞いたことがあります。

私たちの顧客基盤は企業ではなく、それ自体はそうしないかもしれないが、競合他社はライセンスをコピー/無効にしたり、コード/機能を複製したりして、私たちの製品の価値が市場で下がる可能性があります。

これを防ぐための提案は大歓迎です。

4

10 に答える 10

28

.NETアセンブリをクライアントマシンにデプロイする場合、リフレクターや同様のツールを使用して、ある種の逆コンパイルが常に可能になります。

ただし、この状況は、ネイティブC++でアプリケーションを作成した場合に発生する状況と実質的に同じです。物事を逆コンパイルすることは常に可能です-それが不可能な場合、プロセッサもそれを理解できませんでした。

エキスパートクラッカーを倒すことは決してありません-彼らはあなたのセキュリティを、挑戦だけで解決される知的パズルとして扱います。

問題は、ライセンス慣行と投資収益率を打ち負かすことがどれほど難しいかということです。

スプレッドシートに腰を下ろし、考えられるシナリオを確認します。危険性はおそらくあなたが思っているよりも少ないでしょう。

「使いやすさ」などの要素は、すべてのユーザーが観察できるようにソフトウェアに表示されます。したがって、コピーは簡単だと思います。ただし、ほとんどの開発者(私自身を含む)は一般的なユーザーとはまったく異なるため、優れたユーザーエクスペリエンスはまれです(そして、うまくコピーされることはめったにありません)。

クラッカーの仕事をもっと難しくすることに集中することをお勧めします。それは決して不可能にすることはできず、ただ非営利だからです。

試してみる1つの可能性:インストールプロセスの一部として、アセンブリをネイティブコードにプリコンパイルすることが可能です。Paint.NETは、パフォーマンス上の理由からこれを行います。これを実行したら、元のアセンブリを破棄して、最適化されたネイティブコードエディションを使用できると思います。

于 2009-08-16T10:22:42.290 に答える
7

それが私なら、難読化しようとはしません。私は...するだろう:

  1. それについて心配する必要はなく、継続的に改善し、前にとどまることを目指します

しかし第二に

  1. Webを介して「秘密の」サービスを提供することを検討してください。これがどれほど重要で可能かを決めるのはあなた次第です。ただし、エンドユーザーにはコードさえないため、逆コンパイルは「防止」されます。
于 2009-08-16T10:25:57.243 に答える
6

Googlefor.NET難読化ツール。あなたはこれに役立つたくさんの製品を見つけるでしょう。また、StackOverflowですでに尋ねられている関連する質問があります。

ここにあるいくつかの:

編集:難読化解除ツールを検索しているときに、オープンソースツールDe4Dotに出くわしました。このツールは、ほとんどの商用ツールによって作成された難読化されたdllの逆コンパイルをサポートし、かなり良い仕事をします。

于 2009-08-14T05:54:24.797 に答える
1

Intellilockは、ライセンスだけでなく難読化の面でも私たちの目的を果たしてきました。しかし、サポートが基準に達していないため、私はこの製品をお勧めしません。私たちが直面している問題に間に合うように返事をもらえませんでした。いくつかの目標を達成するには、自分で検索して調査するか、ビジネス要件を変更する必要がありました。

この回答を通じて、私はソフトウェアを宣伝または降格するつもりはありませんが、私たちが使用している製品について人々に知らせて、賢明な決定を下せるようにしたいと思っています。

于 2012-12-19T05:32:15.763 に答える
0

前回これを調べたとき、Spices.NetObfuscatorは市場で最高のもののように見えました。

いいえ、私は彼らのために働いていません。:)

于 2009-08-14T05:56:02.500 に答える
0

私はsmartassemblyを使用しています。使い方は簡単で、組み込みのクラッシュレポートを送り返すこともできます。

于 2009-08-14T05:56:27.867 に答える
0

他の人が言及した難読化ツールはおそらく非常に優れています。

考えていなかったかもしれない別のアプローチは、C++などのマシンコードに完全にコンパイルされた言語を使用してコアビジネスロジックの一部をコーディングすることです。

これを行うことの利点は、誰かがあなたのコードを逆コンパイルするのをはるかに難しくすることです。これの欠点は、維持する2つの言語のコードがあることです。これは状況に最適なアプローチではないかもしれませんが、コードのごく一部だけを難読化する必要があり、残りのコードはUIの綿毛である場合に役立ちます。

例として、あなたの医療ソフトウェアパッケージは、医師にその腺のサイズを伝える目的で、たとえば特定の腺のエッジ検出を実行している場合があります。ビットマップ画像から腺のサイズを計算するためのアルゴリズムは、C++で記述されたDLLに含まれています。

于 2009-08-14T06:09:45.577 に答える
0

.netコードのC++ラッパーに関する質問に答えるため。アプリケーションをデプロイすると、ビジネスロジックコードを含む最終的なc ++dllと.netdllが別々のエンティティになり、ビジネスロジックにアクセスしたい人は、 .netdllと内部をのぞきます。

于 2009-08-14T08:45:03.253 に答える
0

Remotesoft Salamander Protectorを検討することをお勧めします。 これは、高水準言語への逆コンパイルを不可能にするという点で、他の何よりもはるかに優れています。

もちろん、専門家なら誰でもあなたのソフトウェアに十分な時間を費やして、それがいくつかを逆コンパイルするのでそれを理解することができますが、それはすべてのセットとgetメソッドを隠します

だから、彼らはピークを迎えることができますが、それはそれについてです。彼らは残りの部分を理解する必要があります。これにより、誰かがそれをクラックする可能性が低くなります。

お役に立てれば

于 2010-05-03T22:51:08.473 に答える
0

久しぶりにこのスレッドに書き込みます。逆コンパイルや難読化の防止に役立ち、強力なライセンスモジュールを備えたIntellilockというソフトウェアを購入しました。

Intellilockが私たちの目的を十分に果たしていたため、より多くの予防制御を備えているにもかかわらず、.NetReactorには行きませんでした。

于 2010-05-29T11:19:53.277 に答える