別の質問、つまりBest .NET obfuscation tools/strategyでは、ツールを使用して難読化を簡単に実装できるかどうかを尋ねます。
私の質問は、難読化は効果的ですか? この回答に返信するコメントで、誰かが「ソースの盗難が心配なら...難読化は本物のクラッカーにとってほとんど些細なことだ」と言っていました。
私は Dotfuscator の Community Edition からの出力を見てきました。難読化されているように見えます。私はそれを維持したくありません!
難読化されたソフトウェアを単純に「クラッキング」するのは比較的簡単かもしれないことを理解しています。なぜなら、クラッキングしたいもの (通常はライセンス保護) を実装しているソフトウェア内の場所を見つけ、それをスキップするジャンプを追加するだけだからです。
しかし、心配がエンドユーザーや「海賊」によるクラッキングだけではない場合: 心配が「ソースの盗難」である場合、つまり、あなたがソフトウェア ベンダーであり、あなたの心配が別のベンダー (潜在的な競合相手) である場合は、逆-ソースをエンジニアリングして、それを自社の製品に使用したり、製品に追加したりできます...単純な難読化は、そのリスクに対する適切または不十分な保護の程度を示していますか?
最初の編集:
問題のコードは、エンド ユーザー マシン (リモート サービスではなくユーザー コントロール) で実行される約 20 KLOC です。
難読化が本当に「本物のクラッカーにとってほとんど些細なこと」である場合、それが効果的でない理由(「どれだけ」効果的でないかだけでなく)についての洞察が欲しいです。
2回目の編集:
私は、誰かがアルゴリズムを逆にすることを心配していません。それよりも、アルゴリズムの実際の実装(つまり、ソース コード) を自分の製品に転用することを心配しています。
20 KLOC の開発に数か月かかると考えた場合、すべての難読化を解除するには、これより (数か月) かかるでしょうか?
何かを「盗む」ために難読化を解除する必要さえありますか? それとも、正気の競合他社が、難読化されたまま製品に大規模に組み込み、メンテナンスの悪夢であることをそのまま受け入れ、メンテナンスがほとんど必要ないことを望んでいるでしょうか? このシナリオが可能である場合、難読化された.Netコードは、コンパイルされたマシンコードよりも脆弱ですか?
難読化の「軍拡競争」のほとんどは、「ソースの盗難」を防ぐことよりも、人々が何かを「クラッキング」することさえ防ぐこと (たとえば、ライセンス保護/強制を実装するコードフラグメントを見つけて削除すること) を主に目的としていますか?