瑞数6补环境的总结
大家好呀,我是你们的好兄弟【星云牛马
】,今天给大家带来的是瑞数6的补环境的总结,补环境肯定是需要一些基础补环境知识的,所以建议没有基础的小伙伴可以加入学习群进行学习,有基础的伙伴加入交流起来。
QQ
群:714283180
1.过debugger
要知道,debugger
的形式还是很多的,不能一味照抄代码,要随机应变,
1.1通过hook
Function.prototype.constructor
判断是否有debugger
字样返回空方法
即可
let origin = Function.prototype.constructor
Function.prototype.constructor = function(p){
if (p.indexOf('debugger')!==-1){
return function(){}
}else{
return orgin.apply(this,arguments)
}
}
1.2通过hook
``eval也是一样,判断是否有
debugger字样返回
""`即可,具体要仔细分析,谨慎处理,防止误伤有用代码。
let oreval = eval
eval = function(code){
if (code.indexOf('debugger')!==-1){
return ""
}
return oreval.apply(this,arguments)
}
2.补环境
对于新手而言,网上补环境的源码还是很多的,白嫖一份基础的补环境的源码来,在基础上自己进行加工创造,总比从0开始的好呀。
其实补环境总结起来就是树状补充,我们用常见的dom
的createElement
函数来说:
createElement:function(arg){
console.log('createElement 函数被调用了,参数列表:',arguments)
if(arg === "a"){
let my_a = {}
return my_Proxy(my_a,"my_a")
}
if(arg === 'div'){
return my_Proxy({},"my_a")
}
if(arg === "form"){
return {}
}
},
你得实现链式的代理,补充上去的对象都是有可能继续进行更深层级的属性的检测的,比如上面的补充了元素的创建,那么创建后返回的my_a对象有可能继续被检测,所以需要给my_a也挂上代理看看是否有进一步的检测。
通过这种策略是吧,不断不断的补充,只要你不嫌麻烦,每一个都挂上代理,你就会发现,你补充的环境比谁都多,但有可能还不一定好用,哈哈,真实的例子,因为你补充的很多,层级很深,执行到的检测的代码更多,需要保证都有正确性,不然就会发现补得多但不一定有效。
瑞数这边的补环境总结我建议看这位跃迁
前辈的文章: https://blog.cthousand.cn/2023/09/17/%E5%8D%8A%E8%87%AA%E5%8A%A8%E8%A1%A5%E7%91%9E%E6%95%B04%E7%8E%AF%E5%A2%83%E5%85%A8%E6%B5%81%E7%A8%8B/
他的总结很到位了,基本上你都补了的话,是属于相对比较全的能过瑞数的环境了。
2.1瑞数后缀问题