前言
由于跟瑞数真的是体力活所以接下去的文档一些参数定义和虚假的控制流我就不做赘述直接无视。瑞数参数加密的逻辑比较复杂在追的时候记得看好调用栈确保知道自己在第几层控制流,需要着重注意的地方我会标注没有细说的地方有兴趣的可以追进去看看。记得调试的时候给重点参数数组追加watch
正文
300行 690号控制流:
65: var _$jM = _$8U(); var _$jM = _$AY(_$FV(22) + _$ow._$v0);纯数学计算
292: 无关控制流
232:无关控制流
173: _$jM[_$$2[1]](0, 4)
302行
return (_$So(16) + _$12(4) + _$33(0) + 1) & 0xFF;没啥技术含量的赋值记得结果是127就好
303行 671号控制流
428:728号控制流别进去了结果是[0,0] _$k8 = _$_2(728);
430
404
10
249
257
168
37
75
353定义一个时间戳
304行 773号控制流
127:控制流套控制流
477:
115:3750行判断window.self=window.top写死true 将cookie enable写入cookie
35: 将mousedown时间绑定到document上,补环境之前好像补过了不用管
259:将mouseup时间绑定到document上
236 mousemove
349 keydown
529 touchstart
393 touchmove
528 touchend
33 click
367 input
419 scroll
151 load
11 7t = document.addeventListener;
257:
31 绑定 driver-evaluate对象到document上
287:绑定webdriver-evaluate对象到document上
378:绑定selenium-evaluate对象到document上
441:绑定error对象到window上
286: 绑定load对象到window上
225:设置了一个定时器
174:
222:又是控制流:
122:获取window.navigator对象
77:3637行校验navigator.battery字段,检测电池属性不需要补环境本身就是undefined
3639行检测getbattery方法此处需要补环境补下then方法然后走进下面的控制流(直接写死成then后面的方法也行)
353跳出
61 绑定load对象到window上
240:再进控制流
156检测环境是不是qq浏览器和MicroMessenger?
406
161
353跳出
49再进第三层套娃控制流
128实例化对象
function _qN(Xo) {
this._Xw = $Xo || 1f;
this._AI = {};
if ($85[5O[250]]) {
try {
this._RB =window[openDatabase](_$5O[52], ‘’, _5O[52], 1024 * 1024);
} catch (_Ha) {}
}
}此处实例化时调用openDatabase对象注意补环境否则后面会出错
25 对实例化对象进行相关操作
353跳出循环
368又是控制流
399 localstorage操作
141
447
532
69 jm=undefined跳出
26 进控制流没啥意义直接出来吧
515控制流还是没啥意义出来吧
501
291
406
200
489 控制流
514直接出去了
452
386控制流
372 第四层套娃
221第五层套娃
399
141
447
532
69 跳出来
333
232
69跳出来
219
232
390时间绑定反正window的load已经绑定了不知道几个方法了
353 出去了终于
353又出去了
353又出去了
305行回到主流程
1910行document.getElementsByTagName("script“)记得补一下
1912行script.getAttribute(‘r’)===m写死true
1913行document.parentElement.removeChild好像前面补过了不过直接删了吧
_Xx._yF = Xx[_Xx.yF](_Ha);四位随机数组的第一位生成位置
主流程308行
跳转到1947行进入方法后在跳转到1641行这边是一个赋值操作我们依然跟进去
接下去的方法名称可能不同但是内部实现逻辑基本相同
第一个方法只是简单的数学计算
接下去的方法看着比较复杂但是内部实现依然是数学操作有耐心的可以进去看看
没有直接扣代码也行
第一处进过计算我们得到 FSSBBIl1UgzbN7N80T
第二处方法我们得到一个长字符串
怎么样是不是很激动
没错如果页面不进行复杂操作这个cookie已经可以作为cookie返回
不过
观察已经生成的cookie可以得知真是cookie显然比这长多了