HObfus vs Hacker
[1] HObfus
document.write(str);
HObfus が document.write でstrを書き出す。
[2] Hacker
document.write=(str)=>{console.log(str);}
Hacker が、override した document.write で str を盗む。
[3] HObfus
if(!$_isnative("write",document.write)){return false;}
HObfus は、document.write が native であるかチェックする。この際、document.write.toString()を使う。
[4] Hacker
document.write.toString=()=>{return "function write() { [native code] }";};
Hacker が、document.write.toString を override して、
document.write が nativeのように見せる。
[5] HObfus
if(!$_isnative("toString",document.write.toString)){return false;}
HObfusは、document.write.toString が native かどうか調べる。
これ以上、Hackerができることはなく、HObfusの勝ちになる。
結論として、HObfusは以下の2つを確認しなければいけない。
1) document.write が native であること。
2) document.write.toString が native であること。