はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【C#】「ConfuserEx2」を用いてコードを難読化をする(Windows,プリセット毎の実験結果付き)

概要

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

ダウンロード

以下のGitHubから最新のConfuserEx.zipをダウンロードして展開すればOKです。

github.com

下準備

今回はVisual Studio 2019クラスライブラリを作成し、Dllを出力して難読化を行ってみます。

結構昔に書いたFizzBuzzのコードを実験用として用意しました。
【C#】FizzBuzz問題のイカした解答を考えてみる - はなちるのマイノート

また.NET Standard2.1を利用しています。

出力したDll

使い方

ConfuserEx.exeを起動する

ダウンロードしてきたフォルダ内に含まれるConfuserEx.exeを実行します。

ConfuserEx.exe

Projectタブを選択&Dllをドラッグアンドドロップ

ProjectタブにDLLをドラッグ&ドロップすると、Base DirectoryOutput Directory等が設定されます。

Dllを選択する

Settingsタブに移動&ルールを追加する

Settingsタブに移動し、Global 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.

Protections · mkaring/ConfuserEx Wiki · GitHub

どういうprotectionを適応するか設定する

Protect!タブに移動&実行する

最後にProtect!タブに移動し、Protect!ボタンを押せば完了です。

Protectを実行する

出力結果の確認をする

ILSpyを用いて逆コンパイルをして結果を調べてみます。
github.com

None


Minimum


Normal


Aggressive


Maximum

Maximumだとエラーを吐いてしまいました。

さいごに

Presetを強めれば強めるほど、行数も長くなっていってますね。

またMaximumまでいくと、ILSpyではエラーを吐いて解析できませんでした。