JavaScriptのコードを難読化してみた

  • 投稿者:
  • 投稿カテゴリー:security

難読化(obfuscation)のメリット

・ソースコードを公開したくないとき
・ブラウザの開発ツール等でコードを改ざんされたくないとき
・変数名など隠したいとき
・ソースコードが短くなれば、実行時間が短くなる可能性がある

難読化してみる

時刻を表示するtime.htmlを用意する。アクセスすると以下のように表示される。

<!DOCTYPE html>
<html>
<head>
<title>Sample Time</title>
</head>
<body>
<script>
dd = new Date();
document.write(dd.toLocaleString());
</script>
</body>
</html>

JavaScript Obfuscator Toolを利用して、難読化してみると以下のようになる。

つまりコードを以下のように変更しても、動作は変わらない。

<!DOCTYPE html>
<html>
<head>
<title>Sample Time</title>
</head>
<body>
<script>
var _0x9adb=['toLocaleString','write'];(function(_0x3eb3cc,_0x9adbd8){var _0x2896f9=function(_0x35d42c){while(--_0x35d42c){_0x3eb3cc['push'](_0x3eb3cc['shift']());}};_0x2896f9(++_0x9adbd8);}(_0x9adb,0x16b));var _0x2896=function(_0x3eb3cc,_0x9adbd8){_0x3eb3cc=_0x3eb3cc-0x0;var _0x2896f9=_0x9adb[_0x3eb3cc];return _0x2896f9;};dd=new Date(),document[_0x2896('0x0')](dd[_0x2896('0x1')]());
</script>
</body>
</html>

解除してみる

Online JavaScript BeautifierというWEBサイトを利用する。
解除できるコードもあったが、今回はうまく解除できなかった。

参考

javascript難読化について(雑記)
JavaScriptの難読化・圧縮を行うClosure Compiler
サンプルで学ぶJavaScript入門 – とほほのWWW入門