免責事項: 私は Red Gate で働いています。
SmartAssemblyは、あなたが求めていることを実行します。あなたのポイントのために順番に:
1) 制御フローの難読化、メソッド/フィールドの名前変更、リソースと埋め込み文字列の圧縮/暗号化、およびメソッドを含むクラスからの分離を行います。
2) 自動化されたエラー レポートは、未処理の実行を自動的に検出してレポートします (スタック トレース、すべてのローカル変数の値、およびいくつかの一般的なシステム情報も取得して送信します)。
3) 難読化されたスタック トレースがマシン上で再度デコードされるため、明確に表示されます。
4) これが何を意味するのか 100% わかっているわけではありませんが、改ざん防止機能により、アプリに変更が加えられた場合、アプリがまったく実行されなくなります。独自のソース コードを変更したくない場合は、ビルド後のプロセスとして実行されるため、ソースに変更を加える必要はありません。
難読化で発生する可能性のある問題に関しては、最も一般的なのはリフレクションが原因であり (その結果、WPF はしばしば問題を引き起こします)、データ バインディングも多くの問題を引き起こします。ほとんどの難読化ツールでは、リフレクションに問題がある個々の型とメソッドを除外できるようにする必要がありますが、明らかにそれらの型とメソッドは保護されません。
他にも難読化ツールがあります。PreEmptive の dotfuscator と呼ばれる難読化ツールを使用している人を何人か知っています。