HObfus vs Hacker

[ Level: 1 ] Next >>

[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 であること。