主页
window.keyss=["cookie"];//设定拦截的内容,

let ProxyMaker=function (a){
    return new Proxy(a, {
        get: function(target, property, receiver) {
            //这里对key值监听,如果有符合条件的,自动debugger断点。
            if(window.keyss.indexOf(target[property])>=0 ){console.log(property+" property has been accessed");debugger}
            
            return target[property];
        },
        set: function(target, property, value, receiver) {
            ////这里对key值写入监听,可以在此处加入相应的条件,让他达到断点的作用。
            //console.log(target+"'s "+property+" property has been modified");
            return target[property] = value;
        },
        has: function(target, property) {
            //console.log(target+"'s "+property+" property has been checked");
            return Reflect.has(target, property); // 10x to @Bergi
        }
    });
}

使用方法:
比如原本网页中的js代码长这样

var a={key:['cookie','document'],v:[10]}
function _$xah(){
    var _$t,_$x;
    while((_$t>0?_$t--:_$t=a['v'][0])>0){

       if(_$t==5){
            _$x=globalThis[a['key'][1]][a['key'][0]];//读取了cookie,在现实中实现可能更加复杂。
        }
       if(_$t<4)return _$x;
    }

}

//因为关键字都在专门的key列表里面。

先提前在网页粘贴执行关于ProxyMaker的代码。
然后断点进入到能够到_$xah函数这里,这里到这个函数里面,肯定是能够访问到变量a的,这个时候在控制台执行a['key']=ProxyMaker(a['key'])

这个时候,再放行继续执行,当读取的a['key']下的值的时候,读取的值如果是cookie,则进行了debugger的断点操作。

小tips:对于js的静态资源,很多网页都是基本静态js,每次刷新网页都不会变,可以使用REDIRECTOR插件,把js的文件放到本地来,这样操作的好处是什么?可以把原本的js文件中,防止debugger的方法给删除,这样就可以破解原本网页的仿debugger的行为了。

版权属于:WANYL
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
0

目录

来自 《js变量读取or修改监听》
评论

WANYL

博主很懒,啥都没有
125 文章数
0 评论量
11 分类数
126 页面数
已在风雨中度过 3年357天20小时21分