JavaScriptの難読化に Obfuscator が便利だった

JavaScriptの難読化をする目的は主に3つ

  • コードを解読されにくくしたい
  • コメントとかも全消去したい
  • 少しでもコードサイズを減らしたい

そこでよさげなツールがないか探したところ・・・

オンラインでできる Obfuscator というツールを発見!

オンラインで難読化できて超便利でした。

この Obfuscator について色々まとめとこうと思います。

ツールの使い方自体はとても簡単。難読化が捗る

では早速 Obfuscator  の使い方について。

まずツールページはコチラ

▼ JavaScript Obfuscator Tool

▼ コード難読化の画面

Obfuscatorのコード難読化画面。完全にオンラインでJavaScriptコード難読化ができる

 

超簡単なコードを難読化してみます。

▼ 超適当に作ったコード

コード貼り付けしたら【Obfuscate】をクリック

▼ 実際に生成された難読化コードがコチラ

・・・・・・??

これはすごい(語彙力)

あんな単純なのが、ここまで複雑になるとは驚きです。

  • プロパティ・関数を配列とかで冗長化
  • 処理の複雑化(上コードの _0x2530 など)
  • 数値を16進数表記に変換( x=0x2a など)

これは単純なコードなので、まだ解読できます。

 

そこでもっと複雑なコードを書いてみました。

▼ オブジェクトとか関数を含むコード例

▼ 実際にobfuscatorで生成された難読化コード

もはや何の処理をしてるかさえ推定が難しい。

ただマジックナンバー、定数、関数名は完全に隠れない模様。

でも数百行を超えるコードなら 効果ありそうですね。

試しに難読化コードの解除を試みてみた

とはいえ、難読化しても全く安心ではありません。

世の中には 難読化の解除ツール もあります。

そこで今 Obfuscator で難読化したコード

これがどの程度 コード解除 に耐えられるか、検証してみました。

 

ここで使う解除ツールはコレ

▼ Online JavaScript Beautifier

オンラインで手軽に試せるツールです。

 

そして今回検証に使ったのは次のコード

▼ こちらのコード

なんの実用性もないけどサンプルということで、、、

あと class みたいにES2015以降の構文でも難読化OKです。

▼ 上コードが難読化された結果

やはり変数名とかは元のまま。

またクラス名とかも当然ながら隠ぺいなどはされません。

 

そして難読化解除した後の結果がコチラ!

▼ こんな風なコードになった

う~~~ん、この例だと難読化した意味をあまり感じない。

でも素の文字列などは難読化されたままですね、

そこで手元にある1000行くらいのコードで試してみると、、、

  • 変数名・関数名などほぼ記号化
  • 何が書いてあるかも全く分からない
  • コードサイズも気持ち若干減る

こういう結果に。

結論としては、実用レベルなら申し分ないですね。

ここまでのまとめ - 難読化はオンラインで十分

ということで以上がJavaScriptの難読化の効果。

ただし難読化でコードがばれない、という訳ではないので注意!

そもそも見られて困るコードはサーバー側に置きましょう。

以上、JS難読化ツール Obfucator についてでした。ではまた

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください