はじめに
この記事は前回書いた記事「ゼロ幅を利用した隠し文字埋め込み」の発展です。ゼロ幅についてはそちらをご覧ください。
また、この記事は紹介だけのため難読化プログラムはありません。
仕組み
まずは以下のソースコードの出力結果がどうなるかわかりますか?
var a = 1;
var a = 2;
var a = 3;
if (a == 1 && a == 2 && a == 3) {
console.log("ok");
} else {
console.log("no");
}
割と有名なのでご存じの方も多いかもしれませんが、初めて見た方は no じゃないの?って思われるかもしれません。
F12でコンソールを開いて上のコードを張り付ければわかると思います。
ゼロ幅は表示されないだけで文字としては存在しています。
つまり、a = 1 と a = 2 と a = 3 は別の変数として認識されます。
これを利用してソースコードの難読化が可能です。
終わりに
難読化のコードは時間がないので省略しました。時間ができれば追加したいと思います。
小ネタ
上記のソースコードの (a == 1 && a == 2 && a == 3) はゼロ幅を用いなくても true にすることができます。
良ければこちらもどうぞ
a == 1 && a == 2 && a == 3を成立させる