登录
原创

瑞数四代保姆级分析思路——(2)第一次cookie生成

发布于 2021-09-15 阅读 67
  • 爬虫
  • 逆向
原创

前言

由于跟瑞数真的是体力活所以接下去的文档一些参数定义和虚假的控制流我就不做赘述直接无视。瑞数参数加密的逻辑比较复杂在追的时候记得看好调用栈确保知道自己在第几层控制流,需要着重注意的地方我会标注没有细说的地方有兴趣的可以追进去看看。记得调试的时候给重点参数数组追加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行这边是一个赋值操作我们依然跟进去
image.png

接下去的方法名称可能不同但是内部实现逻辑基本相同
image.png
第一个方法只是简单的数学计算
image.png接下去的方法看着比较复杂但是内部实现依然是数学操作有耐心的可以进去看看
没有直接扣代码也行
第一处进过计算我们得到 FSSBBIl1UgzbN7N80T
第二处方法我们得到一个长字符串
image.png
怎么样是不是很激动
没错如果页面不进行复杂操作这个cookie已经可以作为cookie返回
不过
image.png
观察已经生成的cookie可以得知真是cookie显然比这长多了

到此完成进度50%,下一篇我们讲分析真实cookie的生成逻辑

评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

0

举报