1
1

More than 1 year has passed since last update.

ゼロ幅を利用した難読化

Last updated at Posted at 2021-03-24

はじめに

この記事は前回書いた記事「ゼロ幅を利用した隠し文字埋め込み」の発展です。ゼロ幅についてはそちらをご覧ください。
また、この記事は紹介だけのため難読化プログラムはありません。

仕組み

まずは以下のソースコードの出力結果がどうなるかわかりますか?

var a = 1;
var a‌‍‍‌‌ = 2;
var a‌‍‍‌‌‌‌‍ = 3;

if (a == 1 && a‌‍‍‌‌ == 2 && a‌‍‍‌‌‌‌‍ == 3) {
  console.log("ok");
} else {
  console.log("no");
}

割と有名なのでご存じの方も多いかもしれませんが、初めて見た方は no じゃないの?って思われるかもしれません。

しかし結果は
image.png
ok と出力されます。

F12でコンソールを開いて上のコードを張り付ければわかると思います。
image.png

ゼロ幅は表示されないだけで文字としては存在しています。
つまり、a = 1 と a = 2 と a = 3 は別の変数として認識されます。

これを利用してソースコードの難読化が可能です。

終わりに

難読化のコードは時間がないので省略しました。時間ができれば追加したいと思います。

小ネタ

上記のソースコードの (a == 1 && a == 2 && a == 3) はゼロ幅を用いなくても true にすることができます。
良ければこちらもどうぞ
a == 1 && a == 2 && a == 3を成立させる

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1