C#ソースコードを確実に変換できるツールを使用できます。
Roslynは1つですが面白い方法ですが、プログラムを修正してオブジェクトコードを生成することができます。それはうまくいくはずです。
その他Program Transformation Systems (PTS)ソースコードを変更することでこれを行うことができます。 PTSは、ソースコードを読み取り、コンパイラのデータ構造(例えば、AST)を構築し、ASTを修正し、修正されたASTからソースコードを再生成することができる。そうすれば、難読化されたコードを見ることができます。後でC#コンパイラでいつでもコンパイルできます。良いPTSは、あなたがこのような形で対象言語の構文の面でコード変換を記述できるようになる:
if you see *this pattern*, replace it by *that pattern*
rule <name> <patternvariables> "thispattern" -> "thatpattern";
はPTSを使用したとして、以下に表現し、あなたは間違いなく、任意作ることができます関数と変数の名前変更、コードフローのスクランブリング、データフローのスクランブリングなど、ソースコードの変更。たとえば、あなたが混乱を追加するには、このルールを使用する場合があります。
rule scramble_if_then(c: condition, b: block): statement -> statement
" if (\c) \b " -> "int temp = \c?4:3;
while (temp>3) {\b; temp--; }";
この規則は、愚かな/少しシンプルですが、私はそれはあなたが読みやすいソースコード変換を書くことができるポイントを作ると思います。このようなルールが多数ある場合、特にルールが洗練された変換を行う場合は、コードをたくさんスクランブルします。
DMS Software Reengineering Toolkitを使用してname-scrambling obfuscatorsを実装しています(これにはC#用も含まれます)。
Mono.Cecilの使用を検討してください。 – SLaks