概要
ConfuserEx
は.NET
アプリケーションのためのオープンソースな難読化ツールです。
ConfuserEx is an open-source protector for .NET applications. It offers advanced security to applications written in C#, VB, F#, and other .NET languages.
ConfuserEx is the successor to Confuser project. While Confuser is widely regarded as one of the strongest obfuscators available in .NET, ConfuserEx continues to provide excellent protections to .NET applications.
// DeepL翻訳
ConfuserEx は、.NET アプリケーションのためのオープンソースのプロテクターです。C#、VB、F#、その他の .NET 言語で書かれたアプリケーションに高度なセキュリティを提供します。
ConfuserExはConfuserプロジェクトの後継である。Confuserは.NETで利用可能な最強のオブファスカッターの1つとして広く知られていますが、ConfuserExは.NETアプリケーションに優れた保護を提供し続けています。
サポート
- .NET Framework from 2.0 - 4.8
- .NET Standard
- .NET Core and Mono.
実験環境
Windows10
ConfuserEx 1.6.0
下準備
今回はVisual Studio 2019
でクラスライブラリを作成し、Dll
を出力して難読化を行ってみます。
結構昔に書いたFizzBuzzのコードを実験用として用意しました。
【C#】FizzBuzz問題のイカした解答を考えてみる - はなちるのマイノート
また.NET Standard2.1
を利用しています。
使い方
ConfuserEx.exeを起動する
ダウンロードしてきたフォルダ内に含まれるConfuserEx.exe
を実行します。
Projectタブを選択&Dllをドラッグアンドドロップ
Project
タブにDLL
をドラッグ&ドロップすると、Base Directory
とOutput Directory
等が設定されます。
Settingsタブに移動&ルールを追加する
Settings
タブに移動し、Global settings
を選択してルールを追加していきます。
(Global settings
は全てのファイルに対しての設定、単一ファイルをいじったりする場合はGlobal settings
以外をいじるっぽいです)
以下の画像のような手順でどのようなprotection
を設定するか決めます。
Protections · mkaring/ConfuserEx Wiki · GitHub
細かくProtection
を設定できるようですが、プリセットから選ぶこともできます。プリセットの説明は以下の通り。
Minimum: The protection provides basic security. All applications are advised to use at least this preset.
Normal: The protection provides normal security for public release. All applications are advised to use this preset unless problems occured.
Aggressive: The protection provides better security with observable performance impact. Applications requires strong security are recommended to use this preset.
Maximum: The protection provides strongest security with possible incompatibility. Applications requires extremely strong security are recommended to use this preset.
Protect!タブに移動&実行する
最後にProtect!
タブに移動し、Protect!
ボタンを押せば完了です。
出力結果の確認をする
ILSpy
を用いて逆コンパイルをして結果を調べてみます。
github.com
None
Minimum
Normal
Aggressive
Maximum
Maximum
だとエラーを吐いてしまいました。
さいごに
Preset
を強めれば強めるほど、行数も長くなっていってますね。
またMaximum
までいくと、ILSpy
ではエラーを吐いて解析できませんでした。