js补环境之proxy

proxy的作用

proxy可以对目标函数或者对象进行拦截、调试。
它不直接操作对象,而是像代理模式,对对象的代理对象进行操作,同时,可以添加一些需要的额外操作。

proxy在js逆向中的使用

以下代码是对js中navigator对象挂上代理

function vmProxy(object) {
    return new Proxy(object, {
        set(target, property, value) {
            //if (target.toString().includes("global")) {
            //     debugger;
            // }
            console.log("set: ", target, property, value);
            return Reflect.set(...arguments);
        },
        get(target, property, receiver) {
            if (target[property] == undefined) {
                // if (property.toString().includes("setTimeout")) {
                //     debugger;
                // }
                // if (property.toString().includes("setInterval")) {
                //     debugger;
                // }
                console.warn("[*] get: ", property, target[property])
            } else {
                console.log("get: ", property, target[property])
            } ;
            return target[property];
        }
    });
}
navigator = {}
navigator = vmProxy(navigator)

使用如图

给navigator挂上代理后,执行js文件,在控制台可见,代码中有获取userAgent这个属性。所以在补环境中最好补上,以防止对ua的校验


image.png

结论

我们使用 Proxy 对全局遍历window、document、navigator等常见环境检测点进行代理,拦截代理对象的读取、函数调用等操作,并通过控制台输出,这样的话我们就能够实现检测环境自吐的功能,后续我们再针对吐出来的环境统一的进行补环境,这样就会方便的多

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容