js逆向-进阶rs5代

声明

本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负!

如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦!

前言

目标网站:aHR0cDovL3d3dy5uaGMuZ292LmNuL3dqdy9nZnh3amovbGlzdC5zaHRtbA==
在此十分感谢十一姐本人的指点。

插句个人内容:本人最近正在找工作,工作城市:广州、苏州、北京。如果有合适的机会,希望有大佬可以内推,感激不尽。🙏
js逆向马马虎虎,app会弱一些。感兴趣的大佬可以私信本人要简历。
16adca31e85aa67976a957b7a482e56.jpg

参数分析

没有了解过四代的朋友可以看我之前的一篇文章js逆向-入门 rs 4代,5代相比4代来说,有一些许的变化,但大部分还是类似的。本文只是做一个简单的记录。
其中最明显的就是没有了第一次生成的假cookie,直接就步入正题。

开始之前还是要先固定一份代码到本地,使用Fiddler等工具进行替换。定位依然选择的是hook,然后跟栈寻找入口处,结果如下。
image.png
image.png
image.png

image.png

找到了call的位置就找到了代码的入口,通过观察可以用正则匹配\S{4} = \S{4}\[\S{4}\[\d{2}\]\]\(\S{4}, \S{4}\)定位eval。
一系列的准备工作都已经完成了,记下来就是扣代码复现rs算法了。

跟栈分析

在call的地方打上debugger方便后续调试,然后单步进入eval的代码中。
image.png

直接搜索_$VO();,然后进入到938号控制流中,剩下的就是抽丝剥茧了。
使用watch记录控制流,可以更加方便的知道调试到了哪一步骤。
image.png
单步进入908号,该控制流生成了最终需要的cookie字段。
image.png

然后将缺失的函数补齐即可。
其中372号控制流十分关键,会生成一个137的数组,后续会使用到。
image.png

进入控制流也是慢慢的扣代码,里面的流程比较的多,需要耐心一些,如果遇到一些变量赋值与本地调试不同则需要注意是否在代码开始就已经完成了。
image.png

比较关键的128位数组,后续都会对这个数组进行填充,组合。
持续跟入,在836控制流会有一个关键性的操作,向16位数组中push四位数。

var _$BN = [_$j7._$2R];
_$BN.push(_$j7._$k7);
_$BN.push(_$j7._$wV); 
_$BN.push(_$j7._$dn);  

_$j7 则是window,对于这四个值是不是很眼熟?回想4代中也有个类似的操作,这四位数组是cookie校验的关键,也是随机的。

除此之外,你会发现343号控制流会有一个取值localStorage的操作,里面有四个指纹值分别是$_f0、$_f1、$_ff、_fh1。没有这四个值生成的cookie会比较短,在并发量大的情况下就要考虑随机生成了。
参考资料:某数五代指纹生成位置分析
343号的关键点大致如此,像一些多次调试均固定的值可以固定,对后面影响不大。

继续向下是882号控制流,这个控制流就是一些循环计算,没有什么问题。
紧接着到了908号,依然是一些循环计算,然后就生成了cookie。
调试的流程大致如此,可以发现和4代相比其实差不太多。

大致所需要的控制流,可以参照了解一下。
image.png

验证结果

image.png

总结

rs5代与4代相比,难度提升不是很大,只要有耐心就可以将算法还原。对于ts对象中的值则需要找到规律动态替换再多次验证结果即可。

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值