こんにちは。
今回はJavascriptのコードを難読化させる方法についてシェアしたいと思います。
Closure Compiler
最初に紹介するのは、Googleのオンラインのツール「Closure Compiler」です。
Javascriptコードを下記のようにコンパクトにしてくれます。コンパクトにすることによって読みにくくすることが出来ます。
変換前
function hello(name) {
alert('Hello, ' + name);
}
hello('New user');
変換後
function hello(a){alert("Hello, "+a)}hello("New user");
使い方
Closure Compilerにアクセスします。
下の画面が表示されるので、左側の入力欄にコードを貼り付けます。入力欄の上にある「Compile」というボタンをクリックします。そうすると、右側に難読化されたコードが表示されます。そのままコードを選択することも出来ますが、「default.js」というリンクをクリックし、コードを別ページで表示させ、選択した方が簡単だと思います。
JavaScript Obfuscator Tool
オンラインで難読化することが出来るツール「Javascript Obfuscator Tool」です。
下記の様に変換されます。Closure Compilerに比べるとより難読化されています。
変換前
function hello(name) {
alert('Hello, ' + name);
}
hello('New user');
変換後
var _0x5356=['17kHplDB','103771uBgfHa','8rLlSps','397nGIorp','1hcBkZq','12346ckNNqX','905287mgCIPs','1236333DqtJUI','82Jjzzhb','Hello,\x20','197438GXsvZJ','1149578ljaqiS','2225UQdtpS','New\x20user'];var _0x68e4=function(_0x598714,_0x4435e8){_0x598714=_0x598714-0x1b8;var _0x5356dc=_0x5356[_0x598714];return _0x5356dc;};var _0x1f675a=_0x68e4;(function(_0x17cc9b,_0x1e7226){var _0x2b7542=_0x68e4;while(!![]){try{var _0x371668=parseInt(_0x2b7542(0x1bb))+parseInt(_0x2b7542(0x1c2))*parseInt(_0x2b7542(0x1c4))+parseInt(_0x2b7542(0x1bc))*parseInt(_0x2b7542(0x1c1))+parseInt(_0x2b7542(0x1bf))*parseInt(_0x2b7542(0x1c0))+parseInt(_0x2b7542(0x1c5))+parseInt(_0x2b7542(0x1c3))*-parseInt(_0x2b7542(0x1b8))+parseInt(_0x2b7542(0x1be))*-parseInt(_0x2b7542(0x1ba));if(_0x371668===_0x1e7226)break;else _0x17cc9b['push'](_0x17cc9b['shift']());}catch(_0x7dac3b){_0x17cc9b['push'](_0x17cc9b['shift']());}}}(_0x5356,0x9b3e1));function hello(_0x4fc221){var _0x426e4d=_0x68e4;alert(_0x426e4d(0x1b9)+_0x4fc221);}hello(_0x1f675a(0x1bd));
使い方
サイトにアクセスすると下記の画面が表示されます。
Copy & Paste JavaScript Codeをクリックして下の入力欄にコードを貼り付けます。次にObfuscateのボタンをクリックするとコードが難読化されます。難読化されたコードはOutputのタブをクリックすれば表示されます。
また真ん中のタブの「Upload JavaScript File」をクリックすれば、Javascriptのファイルを直接アップロードすることも出来るのでコードを貼り付ける必要はありません。
Javascript Obfuscator
先ほどのサイトと名前が似ていますが、同じくオンラインツール「Javascript Obfuscator」です。
下記の様に変換されます。先ほどの「JavaScript Obfuscator Tool」より短いですね。
変換前
function hello(name) {
alert('Hello, ' + name);
}
hello('New user');
変換後
var _0x755c=["\x48\x65\x6C\x6C\x6F\x2C\x20","\x4E\x65\x77\x20\x75\x73\x65\x72"];function hello(_0xb464x2){alert(_0x755c[0]+ _0xb464x2)}hello(_0x755c[1])
使い方
サイトにアクセスすると下記の画面が表示されます。
右側にコードを貼り付け、難読化のボタンObfuscateのボタンをクリックします。そうすると、右側に難読化されたコードが表示されます。コードは右側のファイルボタンをクリックすると選択でき、コピーできます。
難読化のボタンと選択のボタンが若干広告が被っているのが難点でしょうか。
左上のChoose Fileをクリックすることで、Javascriptのファイルを選択することで、コードを画面に貼り付ける必要は無くなります。
デスクトップ版もあるみたいですが、登録しないといけないようです。
「JSObfuscator」Visual Studio Codeの拡張機能
Visual Studio Codeの拡張機能です。
変換後の内容は大きいので省略します。
使い方
難読化したいファイルを開いて、キーボードのShift + Ctrl + Pを同時に押します。
下記のように、画面上に入力欄が表示されるので「JSObf」と入力します。2つの選択項目が出るので、「Current File(現在のファイル)」を選れぶとファイルの難読化が実行されます。
出来上がったファイルは同じフォルダ内で、「ファイル名.obfuscated.js」という名のファイルで出力されます。
ファイルの大きさ
標準設定でのファイルの大きさの比較です。
「Closure Compiler」は元のファイルサイズよりも小さくなりますが、難読化という点では物足りない所があります。
難読化出来てる残りの3つのツールの中では、「JavaScript Obfuscator」が一番ファイルサイズが小さくなりました。
一番期待していた「JSObfuscator」は、元のファイルの5倍の大きさになってしまいました。
そこで、 「Closure Compiler」で出力されたコードを「Obfuscator」を使って難読化すると元のファイルよりも2倍ぐらいの大きくなってしまうので、ツールを併用するのは無駄な気がします。
まとめ
Closure Compilerはコードを縮めた処理なので、読もうと思えば読める格好なので、「JavaScript Obfuscator Tool」、「JavaScript Obfuscator」がおすすめです。
また、難読化した後は、コードが正常に実行されるかを確認して下さい。プログラムの内容によっては、難読化することで、プログラムが正常に機能しない場合があるので注意して下さい。
「役に立った!」と思れましたら、下のSNSボタンで記事のシェアをしていただけると嬉しいです!
コメント