吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2395|回复: 45
上一主题 下一主题
收起左侧

[Web逆向] 【JS逆向】瑞数6逆向简单分析

  [复制链接]
跳转到指定楼层
楼主
dandelion2sunny 发表于 2024-12-4 23:55 回帖奖励

本文不提供具体网址哈,简单分析一下6代第一次cookie的生成,注意是简单分析
首先在页面写个油猴脚本hook住cookie

var cookie_cache = document.cookie;
Object.defineProperty(document, 'cookie', {
    get: function() {
        debugger;
        console.log('Getting cookie');
        return cookie_cache;
    },
    set: function(val) {
        debugger;
        console.log('Setting cookie', val);
        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 + "; ";
        }
        this._value = val;
        return cookie_cache;
    },
});



在如图所示的地方打上断点后再次刷新页面进入静态js的eval函数执行前
这里只要再按一下F11即可进入vm,不过我们先看下静态js生成的$_ts

这里的$_ts里,cd是页面script里的cd,cp[1]和cp[3]是根据页面nsd生成的850个参数名和vm代码的每隔一段距离的字符的charCodeAt的和,简单点来说就是对代码做了校验。

下面说下eval里代码第一次cookie的生成逻辑
插桩点:搜索 <= 63,在此处插桩打印日志



这里简单说下vm的函数里有功能不会变的函数,分别是数组转字符串,字符串转数组、字符串转数字、数字转数组、两组数组进行操作获得新数组...

首先对把cd转化成数组,如果你观察过多组cd转化的数组,会发现转化后的数组都是0开头

cd转化后的数组(假设是arr),根据前两位(假设是[0,175]开头),首先对arr.slice(2).slice(0,175)得到preArr,arr.slice(177)得到suffixArr
前面截取的这段数组preArr通过一系列操作得到一个8位数组。
后面的suffix通过和这个8位数组异或得到新数组。

后面的操作通过对这个新数组的截取来继续进行

根据插桩日志往前看,在cookie生成之前先是一个176位的数组,176位数组之前是144位数组,再之前是96位数组,然后是95位,最后定格在117位数组的生成。
逆推分析出大概流程后,需要先分析这个117位数组的产生

[1,0,33,128],这是117数组的前四位,前两个数字写死,第三个33是eval.toString()的长度,128是1<<7,这些都可以通过分析插桩日志获得

后面对ua,随机数,固定值,屏幕分辨率,时间,特定函数toString()(完整、截取),suffixArr截取的几段数组 (一般是[95,36]开头,4位长度) fromCharCode 生成的函数名 的函数(例如_$aa在vm代码里对应的函数 里面大概率会有一个 [xxx] xxx是一个数字) 映射对应的值 进行了校验(填充到117数组里),最后填充一些数组长度值和一些默认值生成117位数组。


117位数组生成后,需要将它转化成95位长度的数组

这里的tempArr我是写死的,似乎生成的逻辑不会改变(不确定,暂时没发现什么问题)
生成95位数组后,截取suffixArr的一部分(11,43)32位长度数组对前16位进行异或得到新的95位长度数组
后续的插桩在 = {},(这里页面搜索有19个,位置不固定,没法给出确定的位置)

按照这个方法走下去,对日志进行分析,最终就能得到176位的数组,其实在拿到117位数组的时候,后面的都不是什么难事了,最好自己动手去实现一遍,感觉无聊逆一逆rs还挺消磨时光的。
117数组里比较困难的点在于对代码的检查,这里不同的人有不同的办法,不过可以在静态文件里找方法(毕竟要检查的代码都拿到了...)

小弟第一次在52发文章,对编辑器也不是很熟悉,也不敢讲的太详细,写的不好的地方还请见谅。简单说了下我对rs6第一次cookie生成的分析过程(其实啥也没说hhh)。刚开始调试的时候还需要写AST来还原一下那段异常难看的三元,后面弄多了直接就在三元上开干了(捂脸)
个人感觉rs6应该不存在严格意义上的纯算(),至少应该抠代码()。还有就是,可能我分析的这个网站或者说我这个做法,不一定适合其他网站哈,不过同一个版本的分析流程应该或许大概差不多(吧)。

祝你成功~ 加油!

免费评分

参与人数 11吾爱币 +10 热心值 +9 收起 理由
Voccoo + 1 我很赞同!
pHz + 1 我很赞同!
allspark + 1 + 1 用心讨论,共获提升!
lin5789 + 1 热心回复!
beihai1314 + 1 + 1 我很赞同!
gouzi123 + 1 + 1 我很赞同!
ioyr5995 + 1 + 1 我很赞同!
MateoTwo + 1 我很赞同!
littlewhite11 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
melooon + 1 + 1 我很赞同!
laozhang4201 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
Qq76761043 发表于 2024-12-5 06:47
感谢楼主分享!~
3#
linix 发表于 2024-12-5 07:53
4#
Tick12333 发表于 2024-12-5 08:05
5#
kongson 发表于 2024-12-5 08:36
感谢楼主分享,好评
6#
tjuci300384 发表于 2024-12-5 08:59
小白 还是先好好学简单点的吧
7#
saberlion77 发表于 2024-12-5 09:12
感谢大佬分享
8#
Ka957 发表于 2024-12-5 09:15

感谢楼主分享
9#
liuxu0319 发表于 2024-12-5 09:27
感谢博主分享!
10#
gusong125 发表于 2024-12-5 10:08
感谢大佬分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 20:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表