原理

通过油猴插件重写操作Cookie的get和set操作

通过指定Cookie名动态进入derbugger模式

代码

// ==UserScript==
// @name        Hook Cookie
// @namespace   http://tampermonkey.net/
// @version     0.1
// @description try to take over the world!
// @author      You
// @include     *
// @grant       none
// @run-at      document-start
// ==/UserScript==

(function () {
    'use strict';
    var cookie_cache = document.cookie;
    Object.defineProperty(document, ' cookie', {
        get: function () {
            return cookie_cache;
        },
        set: function (val) {
            console.log('Setting cookie', val);
            // 填写cookie名
            if (val.indexOf('cookie名') != -1) {
                debugger;
            }
            var cookie = val.split(";")[0];
            var ncookie = cookie.split("=");
            var flag = false;
            var cache = cookie_cache.split("; ");
            cache = cache.map(function (a) {
                if (a.split("=")[0] === ncookie[0]) {
                    flag = true;
                    return cookie;
                }
                return a;
            })
            cookie_cache = cache.join("; ");
            if (!flag) {
                cookie_cache += cookie + "; ";
            }
            return cookie_cache;
        }
    });
})();

 

以百度搜索为例,定位cookie中H_PS_645EC的生成方式,将H_PS_645EC填写金cookie名的位置

js逆向破解之Hook Cookie

保存脚本并打开开关,清空cookie后重新刷新页面,成功断下,且值已经生成了

js逆向破解之Hook Cookie

往上跟踪堆栈就可以定位到生成代码,然后就可以提取关键代码去调试了

当我们不修改cookie名他会把所有的cookie打印出来

js逆向破解之Hook Cookie

 

转自:https://zhuanlan.zhihu.com/p/231651573?ivk_sa=1024320u

分类:

技术点:

相关文章: