js逆向的另类思路扣代码是怎样的

本篇文章为大家展示了js逆向的另类思路扣代码是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计、网站建设、云梦网络推广、微信小程序、云梦网络营销、云梦企业策划、云梦品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供云梦建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

经常js分析的人来说有些网站检测浏览器指纹是很常见的事,但是我们一点一点分析是很费时间,费脑筋的。

    我们扣代码的结果是我们要调用他的加密或解密或某个值的算法,当我们把他的算法扣下来执行,正常情况下是没问题的,但是如果他计算了浏览器指纹,那基本上你除了完整的分析别无他法,今天我们来讲一个hook劫持。当然我只讲原理,具体你们自己研究琢磨。

    首先介绍一下这个es6的特性:Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。

简单来说就是我们可以完全代理某个对象,基于这个对象的所有操作都会被拦截下来,但是他的内部对象操作拦不下来,比如:

a={b:function(){return "123"}}
a = new Proxy(a, {    get: function(target, key, receiver) {        console.log(target, key, receiver);        return target[key];    },    set: function(target, key, value, receiver) {        console.log(target, key, value, receiver);        target[key] = value;    }});

js逆向的另类思路扣代码是怎样的

当我们调用a.b 就用过代理拦截下来,但是

js逆向的另类思路扣代码是怎样的

当我们:a.b.c我们发现.c并没有拦截到,那是因为.c是属于b对象,并不能嵌套拦截,如果有需要我们可以嵌套:比如

js逆向的另类思路扣代码是怎样的

a={b:{c:function(){return "123"}}}
a = new Proxy(a, {    get: function(target, key, receiver) {        console.log(target, key, receiver);    if(target[key] instanceof Object){        return new Proxy(target[key],{        get:function(a,b,c){          return a[b];        },set:function(a,b,c,d){          a[b] = c;        }      })    }        return target[key];    },    set: function(target, key, value, receiver) {        console.log(target, key, value, receiver);        target[key] = value;    }});

这样的话就可以嵌套,看到这里你们是不是明白了,

假如他有一段代码我们抠出来要看他是不是有指纹计算,我们可以这样写


window = {};window = new Proxy(window, {    get: function(target, key, receiver) {        console.log(target, key, receiver);        return target[key];    },    set: function(target, key, value, receiver) {        console.log(target, key, value, receiver);        target[key] = value;    }});navigator= {};navigator= new Proxy(navigator, {    get: function(target, key, receiver) {        console.log(target, key, receiver);        return target[key];    },    set: function(target, key, value, receiver) {        console.log(target, key, value, receiver);        target[key] = value;    }});

我们伪造window对象然后它里面只要是基于window的操作我们都会拦截下来,然后处理,看到这里大家都明白了,但是我们开个脑洞基于这个proxy的更有趣的玩法,既然他能拦截所有操作,那我们就可以基于这个伪造一个真实的浏览器环境,不过实现起来工作量那就不小了,只能是缺啥补啥。

上述内容就是js逆向的另类思路扣代码是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


新闻名称:js逆向的另类思路扣代码是怎样的
文章URL:http://scyanting.com/article/jsposi.html