首页 > 社交 > 科普中国

反混淆刷题平台 Web 第二题:js 混淆,动态 cookie

常驻编辑 科普中国 2022-11-11 猿人   爬虫   控制台   函数   提示   位置   参数   代码   未定义   程序   动态   内容   详细
IOU拜客生活常识网

IOU拜客生活常识网

根据之前的经验,看看是不是哪又有个格式化检测导致进入到这个循环里,果不其然,在第 55 行:IOU拜客生活常识网

IOU拜客生活常识网

这里是对 removeCookie 处的代码进行了格式化检测,同样将函数体部分写成一行即可:IOU拜客生活常识网

'removeCookie': function() {return 'dev';},

接着运行,又提示 _0x3c9ca8 未定义,ctrl + f 局部搜索找到函数定义位置扣下来即可,运行后又提示 _0x1316f4 未定义,这个扣下来之后记得将后面的自执行的括号删掉,接着会提示 _0x12a78e 未定义,扣下来的时候同样记得删掉末尾的括号,再接着就没什么特别需要注意的了,差哪个函数补哪个就行了,到后面提示 navigator 未定义,简单地补浏览器环境即可,node 环境下 window 设置为 global:IOU拜客生活常识网

var window = global; 
window.navigator = {};

自然不会这么轻易的结束了,运行后又会提示 _0x184fb0 未定义,跟之前一样,搜到扣下来即可,后面就是漫长的补函数的过程,没别的技巧,就是需要耐心,手都 cv 酸了,直到出现如下报错:IOU拜客生活常识网

IOU拜客生活常识网

报错提示 history 未定义,这是个浏览器对象,显示在 console.log 处报错,在 console.log 行打断点调试,运行到这里时会跳转到虚拟机中,其中代码如下:IOU拜客生活常识网

IOU拜客生活常识网

history.pushState 是向浏览器的会话历史中添加记录,当使用 console.log 输出结果的时候,就会执行 history.pushState,但是我们并没有 history 环境,所以会报错,补了 history 环境后运行程序发现一直卡着,仔细看代码才发现有个 while 循环,最离谱的是里面的 for 循环设置了 1100000 次,几乎可以说是在不间断检测,等不得等到猴年马月去了,这里直接将 console.log 赋值给一个变量替换掉即可,记得放到前面:IOU拜客生活常识网

var result = console.log;

至此,终于结束了!成功打印出 m 参数的值:IOU拜客生活常识网

IOU拜客生活常识网

这个题倒是不难,逆向下来思路也很清晰,但是扣代码的过程繁杂且坑不少,还是很值得大家上手去练习的。IOU拜客生活常识网

完整代码

bilibili 关注 K 哥爬虫,小助理手把手视频教学:https://space.bilibili.com/1622879192IOU拜客生活常识网

GitHub 关注 K 哥爬虫,持续分享爬虫相关代码!欢迎 star !https://github.com/kgepachong/IOU拜客生活常识网

以下只演示部分关键代码,不能直接运行!IOU拜客生活常识网

JavaScript 代码

var window = global; 
window.navigator = {};
var result = console.log;

// 以下部分内容过长,此处省略
// 完整代码关注 GitHub:https://github.com/kgepachong/crawler

function _0x313b78(_0x575158, _0x1fa91a, _0x1cf5de) {
    if (_0x5500bb[$dbsm_0x42c3(QoLq0i, q0Oqqo) + 'ZI'](_0x5500bb[$dbsm_0x42c3(LQOI0Q, QqOI00) + 'sB'], _0x5500bb[$dbsm_0x42c3(Q00oiq, QIioOo) + 'Zv'])) {
        VWQQuv['oOa' + 'hG'](debuggerProtection, Q0LiqQ);
    } else {
        _0x5500bb[$dbsm_0x42c3(i1lQqq, q110Lq) + 'bE'](_0x3c9ca8);
        return _0x1fa91a ? _0x1cf5de ? _0x5500bb[$dbsm_0x42c3(iqqLQO, LoOOOq) + 'Kk'](_0x21cf21, _0x1fa91a, _0x575158) : _0x5500bb['rqu' + 'KQ'](y, _0x1fa91a, _0x575158) : _0x1cf5de ? _0x5500bb[$dbsm_0x42c3(qLQQ1q, I1oOQ1) + 'Mn'](_0x443ca7, _0x575158) : _0x5500bb[$dbsm_0x42c3(qLLoQi, iO0OQo) + 'Mn'](_0x184fb0, _0x575158);
    }
}

function getCookieM(){
    var _0x160e3a = Date.parse(new Date());
    var m = _0x313b78(_0x160e3a) + lOo0QQ + _0x160e3a;
    return m;
}

// var _0x160e3a = Date.parse(new Date());
// var m = _0x313b78(_0x160e3a) + lOo0QQ + _0x160e3a;

// result(m);    

相关阅读:

  • 华夏人类源头,是如何从“古猿”演变成原始文明的
  • 立秋,浅品秋语诗词
  • 浅浅地大胆地聊聊进化论
  • 潮牌速生速死,已收割不动“年轻韭菜”
  • 世界上第一个死亡的人,猿人(宗教说法中是亚当和夏娃)
  • 《铁血战士2》中的头骨是什么?他们还猎杀过什么?
  • 江苏南京江宁区九大旅游景点
  • 史前文明的遗迹?专家发现50万年前刻字的贝壳,至今还不清
  • 嘴巴突出像猿人?医生说:两种“突嘴”形成主要都与这块骨
  • 著名雕塑家刘若望:用热血唤醒消逝的生命
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。