.NETツールの難読化手順紹介二つ目。
今回は「Eazfuscator.NET」の使い方を解説していきます。
↓元記事
ツールのダウンロード
まずは以下のサイトにアクセスします。
https://www.gapotchenko.com/eazfuscator.net
画面上部に表示されているメニューの中から、「Downloads」をクリックします。
ダウンロードページに移行すると、
「Download Setup」
という分かり易いボタンがありますので、そちらをクリックしてインストーラをダウンロードして下さい。
以下のファイルが保存された事を確認して下さい。
※バージョン表記は場合によって異なります
インストール
前項でダウンロードしたmsiファイルを実行すると、以下の画面が表示されます。
ここでは「Next」を選択。
続いて利用規約が表示されるため、内容を確認して問題無ければ「I accept ~」にチェックを入れて「Next」を選択。
インストール先を選択して更に「Next」。
そして最後に「Install」をクリックする事でインストールが開始されます。
インストールが完了すると以下の様な画面が表示されます。
これは良くある「使い方」の説明で、左下にも表示されている通り全5ページで簡単に解説してくれます。(もちろん全て英語)
まぁ特に確認するまでも無かったので、「Skip tour」で飛ばしても構わないと思います。そこはご自由にどうぞ。
インストール後はデスクトップ上に以下の様な歯車?ウイルス(物理)?のアイコンが作成されています。
プログラム一覧の中にも「Eazfuscator.NET」という名前でフォルダが作成されていますので、そちらからでも実行可能です。
使い方
では早速、先ほどインストールしたソフトを起動してみます。
基本的には特に何も設定する必要は無く、このまま右側の緑色のスペースに実行ファイルをドラッグ&ドロップすれば難読化してくれます。
”ダブルクリック”すればファイル選択ダイアログが表示されるので、そこから実行ファイルを選択しても結果は同じです。表記にも「double click to open」と書いているので問題無いとは思いますが、”ダブルクリック”なので一応注意して下さい。
また、左側の赤いスペースはプロジェクトファイルに対応しています。
実行ファイルを投入して難読化処理を開始すると、この様に進捗画面が表示されます。
難読化対象の規模にもよると思いますが、そんなに時間は掛かりません。今回のサンプルプログラムでは10秒弱という所でした。
そして難読化後のファイルについてですが、実は元のファイルに「上書き」される形で保存されてしまうので、処理前には忘れずに元ファイルのバックアップを取っておきましょう。
設定画面
起動時のホーム画面を見てもらうと、右上に小さいアイコンが並んでいるのが分かると思います。
左から「ヘルプ」、「インフォメーション」、「オプション」となっており、一応設定画面というのも存在します。
直訳すると、上から
■新しいバージョンを自動的に確認する
■フェイルセーフなプロジェクト統合
難読化されたプロジェクトはEazfucator.NETがインストールされていなくても構築することができます。
明らかに、難読化は行われず、後者の場合がそうです。
■難読化をグローバルに無効にする
このオプションがチェックされていると、ビルド中に難読化は実行されません。Eazfucator.NETを使用するすべてのプロジェクトが影響を受けます。このオプションを使用することはお勧めできませんが、デバッグ目的には役立ちます。
このオプションをアクティブな状態のままにしておくと、知的財産権の漏洩につながる可能性があります。
という事らしい。
一番上は分かる。アップデートの自動確認は普通ですよね。
二つ目からよく分からない。「Eazfucator.NET」・・・ってこの難読化ソフトですが、これがインストールされていなくても構築(実行じゃなくて?)できます。ってどういう事だろう。
元の文章にもbuiltって単語が使われているので、これはプロジェクトファイル難読化処理の方で使われるオプションなのかなと予想。
三つ目も何言ってるのかちょっと分からないですが、こっちも多分プロジェクトファイルの難読化に影響するオプションだと思う。「プロジェクトに組み込んでおくと本来はビルド時に難読化も一緒にやってくれるけど、自動的にさせない様にするよ。難読化させたい時は任意でやってね」って事かな。
コンパイル済みの実行ファイルを難読化処理したい場合は、このオプションは特に触らなくても良い気がします。
難読化処理結果
難読化は特に設定も行わず、ただコンパイルした実行ファイルをドラッグ&ドロップするだけという非常にシンプルな操作でした。
これで一体どの様な難読化が行われたのかを確認してみます。
まずは難読化前のコードから。
全開のBabel紹介ではFizzBuzzコードでしたが、あまりにもシンプルで変化が分かり難かったと思い簡単なクラスを用意してみました。
上記ソースコードの難読化後がこちら。
構文自体は大きく変わっていないので流れは把握できますね。
ただし何を出力しようとしているのかはサッパリ分からない状態になりました。
問題は左のツリー部分ですね。今回一番苦労したのは、このクラスがどこにあるのかを探す事でした。
上の画像を見て頂けると分かる通り、クラス名やメソッド名が消えています。かつダミークラスが大量に生成されているので、1つずつ中身を確認する必要があり結局数十分掛けて探す羽目になりました。
私は作った人間なので処理の内容から難読化後の場所を探す事ができましたが、これ知らない人がみたら見つけられないだろー・・・と思いましたね。
もちろん今回のサンプルコードは単純な物なので一つずつ中身を見ていけば分かると思いますが、もっと複雑なものだった場合は「どれが本物の処理か」という所で行き詰まるんじゃないでしょうか。
クラス/メソッド名の置き換え+ダミークラスの追加は中々強力な組み合わせだと思いました。
最後に難読化処理後の実行ファイルが正常に動作したかどうかのテスト画面。
うむ。問題無し。
その他
ちなみにフリー版では使用期限があり、起動時に以下の様に残りの使用可能日数を表示してくれます。
※日本語部分は分かり易くするためにこちらで追加したものです。
また、こちらはフリー版のため難読化した実行ファイルは他のPCで動かす事ができません。あくまで難読化レベルを確認するためのものですので、処理後のファイルを配布したい場合は有料ライセンスを購入しましょう。
個人で使用する場合は$399となる様です。
ちょっとお高い気もしますが、まぁ難読化ソフトの値段を色々見ていると良心的な価格だと思います。
という事でEazfuscator.NETについては以上となります。
次回はまた別の難読化ソフトについて解説していきます。