Ⅰ. はじめに
タイトルの通り「JavaScript難読化ツールの紹介と比較」です。
強力な難読化ツールは基本的に有料です。
※2017/07/28 追記
こだわる人用
ChromeやFireFoxの開発者ツールのブレークポイントを制限する方法 - 備忘録
※2022/05/29追記
deobfuscator
https://github.com/ben-sb/javascript-deobfuscator
Ⅱ. 比較(無料版)
# | 名前 | 難読化 |
---|---|---|
1 | JavaScript obfuscator | 良 |
2 | </> Javascript Obfuscator | 良 |
3 | jjencode | 悪 |
4 | Closure Compiler | 悪 |
5 | /packer/ | 悪 |
6 | YUI Compressor | 悪 |
7 | aaencode | 悪 |
8 | emojify-webpack-plugin | ? |
9 | JSFuck | 悪 |
1. JavaScript obfuscator
私が調べた物の中で一番完成度が高い物でした。
復元が困難になります。
JavaScriptbeautifier を利用すると元の形に近いところまで復元されますが、完全な復元まで一手間がかかります。
2. </> Javascript Obfuscator
JavaScriptbeautifier を利用すると元の形に近いところまで復元されます。
3. jjencode
https://github.com/jacobsoo/Decoder-JJEncode
デコーダが存在します。復元が容易です。
4. Closure Compiler
Google がOSSとして公開しています。
圧縮や最適化がメインのようです。
難読化しても JavaScriptbeautifier を利用すると復元が容易です。
5. /packer/
JavaScriptbeautifier を利用すると復元が容易です。
6. YUI Compressor
名前の通り圧縮がメインです。
難読化がメインではありません。
JavaScriptbeautifier を利用すると復元が容易です。
7. aaencode
JavaScriptのコードがアスキーアートに変換されます。
aaencode の派生として (」・ω・)」うー!(/・ω・)/にゃー!encode があります。
JavaScriptbeautifier を利用しても元の形に戻りませんが、
aadecode を利用すると元の形に戻ります。
データ量が膨れ上がるので実用的ではありません。
8. emojify-webpack-plugin
JavaScriptを絵文字化するライブラリ。
webpackで使える。
試してないので難読化の強度は不明。
9. JSFuck
aaencode のようなもの。
複号ツール
JavaScriptbeautifier
REstringer
https://github.com/PerimeterX/Restringer
https://www.perimeterx.com/tech-blog/2022/defeating-javascript-obfuscation/
relative/synchrony
おまけ
SourceMapがある場合に利用できる復元ツール
- macrat/source_downloader
https://github.com/macrat/source_downloader