Сообщение от devote
|
ну вот, хоть один разумный вариант)))
|
не говори ГОП пока не перепрыгнешь
Сорри но чем createElement или .appendChild от toString отличается ? что мешает подменить и их ?
<html>
<head>
</head>
<body>
<!-- здесь прячется зловред -->
<script>
//тело зловреда спрячем полностью в замыкании;
(function(){
// метод crack общий для window и всех фреймов,
// даже если frame создаст фрейм, это непоможет
function crack(target){
var realCreateElement=target.document.createElement;
target.Function.prototype.toString=function(){
return 'trololo';
}
target.Object.prototype.toString=function(){
return 'trololo';
}
target.document.createElement=function(param){
var result=realCreateElement.apply(target.document,arguments);
if (param== 'iframe'){
target.document.documentElement.appendChild( result );
crack(result.contentWindow);
}
return result;
};
}
crack(window);
})();
</script>
<!-- А здесь мы обманули всех при помощи фрейма -->
<script>
// 1. создаём фрейм.
var frame = document.createElement("iframe");
document.documentElement.appendChild( frame );
// 2. тырим из него toString
var Func_toString = frame.contentWindow.Function.prototype.toString; // для проверки функций
var Obj_toString = frame.contentWindow.Object.prototype.toString; // для проверки объектов
alert (Func_toString.apply("isu98") );
alert (Obj_toString.apply("isu98") );
</script>
</body>
</html>