JavaScript難読化にも使えるEmscripten

JavaScript難読化にも使えるEmscripten

C/C++をJavaScriptに変換できるコンパイラ「Emscripten」というものがあります。

最近使ってみて思った。「これ難読化したいときにも使えるやん」

flashゲームの時代が終わり、最近はブラウザゲームといったらJavaScriptメインで作られているものが多いです。ただ、JavaScriptは人が読めるので簡単にコードをとられてパクられる可能性があります。

対策としてコードを難読化するJavaScript Obfuscatorというツールもありますが、JavaScript1年くらいやってれば割と解読できたりします。(というか難読化設定ちゃんとしないとワンクリックで解読可能)

JavaScript Obfuscatorはかなり優秀な難読化ツールですが、完璧ではないですね。

これと比較すると今回話題にしている「Emscripten」は超絶解読むずいと思います。

Emscriptenは難読化にも使える

実際のコード見てもらえればわかりますがエグイです。JavaScript Obfuscatorも読みづらいですが、Emscriptenで出力されたコードはもう頭おかしくなるレベル(個人の感想)

出力されたコードの一部です。エグイですよね。

あれ?ワイの書いたコードどこいった?っていうレベルで変換後は原型とどめていませんw

超強力な難読化が可能。JavaScriptをよく知っている人でも解読するのは容易ではない。

C / C++からJavaScriptへ変換するコンパイラのため、C / C++でコードを書く必要がある。そのため、JavaScript Obfuscatorのように気軽に使用できるものではない。

もともとEmscriptenは難読化をすることが目的ではないので難読化ツールのように気軽に使えるものではありません。

ただ、難読化に使おうと思えば可能、ということです。

JavaScriptを難読化する

先ほども書いた通り、Emscriptenを使うならC / C++でコードを書く必要があります。

**じゃあどうやって既存のJavaScriptを難読化するの?**っていうことですが、さすがにC/C++にフル移植するのは無理があるので「絶対に知られたくないアルゴリズムやコードだけC/C++で書く」という手段をとります。

リアルタイム対戦するようなブラウザゲームなら、サーバーから受け取るデータのデコードや送信するデータのエンコードアルゴリズムなどをC/C++で書く、とかですね。

チート対策にもなるし、スパムなど迷惑行為の防止にもなります。

まとめ

決して敷居が低くないEmscriptenですが、使えれば最強の難読化ツールではないかと思います。

なんならEmscriptenで難読化した後、そのままJavaScript Obfuscatorで難読化すればさらに強力です。