吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1842|回复: 52
上一主题 下一主题
收起左侧

[Web逆向] 【JS逆向】纯异步JS逆向分析

  [复制链接]
跳转到指定楼层
楼主
littlewhite11 发表于 2025-1-1 03:38 回帖奖励

逆向目标

  • 网址:aHR0cHM6Ly93d3cuYXBwbGUuY29tLw==
  • 目标:逆向登录

抓包分析

点击右上角购物袋,选择登录。

首先输入手机号或邮箱,点击箭头,会发起一个init请求,其中a参数需要逆向分析。

该请求的响应在后续请求参数的生成会用到。

然后输入密码进行登录,会发起一个complete请求,其中的m1和m2参数需要逆向。

闲话不多说,直接开整。

逆向分析

  • a参数逆向

a的跟栈就不多说了,直接从启动器往前看就可以看到

生成逻辑很清晰,跟着逻辑把代码都扣下来即可。

这里有一个很坑的地方:f = r.publicValue其实是会走publicValuegetter函数的,如果你F10是看不到具体生成逻辑的,必须得F9才可以。

然后publicValue属性也是一个对象,其中的bi、buffer、hex属性也是这种玩法,一定要细心,不要被坑了。

参数a细心耐心点就能搞出来。

  • m1、m2参数

还是从启动器进去,下断,发包,跟栈。一直往前跟,就会发现m1和m2是经过异步生成的。

下面就开始讲解这种特征异步的处理方式。

首先我们在异步之前找个地方下断,最好是能断住我们想要的一次请求。我就在下图这个地方下断了,重新请求。

然后就会进到本篇文章所描述的特征点相关的代码,一般是switch (r.prev = r.next),我们直接下断,然后F8,然后单步跟。

这里r.next = 4表明下一次控制流会进入case 4,同时e._getSRPValues的结果就是下一次控制流的r.sent,这个原理我也不太懂,有大佬路过的话可以指点指点,然后我们直接在下一次控制流下断,F8。

可以发现m1和m2已经生成了,那就是我们错过了以下异步逻辑,重新跟。

这一次我们直接跟进去e._getSRPValues,还是一样的特征,该下断的地方都下,然后之后就按照这个逻辑跟了。

由于异步特别容易跟丢,所以我就直接揭开谜底,函数该跟的地方直接说了,下一个需要跟的就是Et

还是一样的特征,下一次有点特别,直接在ze.postMessage下断。

跳到ze.postMessage断点,发现是Worker,这里是postMessage,那我们就找onmessage下断。

可以看到m1和m2已经生成了。

我们网上看一个栈,可以确定就是在这生成的。

按照之前的逻辑m1和m2b1中来,而b1其实就是r.getEvidenceMessage(m)的结果,我们直接清空所有断点,在r.getEvidenceMessage(m)下断,重新发包。

可以看到,参数还没生成,而且h也很熟悉,就是第一个请求的响应。

接下来就是多层Promise了,直接硬刚。

小技巧:我们怎么看哪些函数需要重点跟呢,就是你点进去发现是下面这种形式的,然后基本都会进入一个Promise,跟Promise记得F9,同时,记得在下一次控制流提前下断。

第一次,从r.getEvidenceMessage(m)

第二次,从this.getEvidenceData(r)

第三次,从I函数进

第四次,从e.getHash()

这个promise会进入很多次,后面就不赘述了。

第五次,从与I同层级的A函数进

第六次,从与I同层级的T函数进

第七次,从与I同层级的O函数进

最后,就是在这里生成的m1和m2

扣代码的话就不带着扣了,因为实在是太多了,按照前文所讲的逻辑一步一步跟着扣就可以。

注意点:记住xxx.sent就是上一次控制流的结果,还有就是之前碰到的有bi、buffer、hash属性的对象,要重点关注各自的getter函数

最后直接附上模拟请求结果

成功!!!

账号网址:aHR0cHM6Ly9hcHBzdG9yZS5wYW5iYWlkLmNvbS9zaGFyZS9NVQ==K哥提供

免费评分

参与人数 19威望 +2 吾爱币 +119 热心值 +19 收起 理由
yjn866y + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
allspark + 1 + 1 用心讨论,共获提升!
zzyzy + 1 + 1 谢谢@Thanks!
degas8888 + 1 + 1 我很赞同!
lx230313 + 1 + 1 热心回复!
sbi188 + 1 + 1 我很赞同!
wonder2018 + 1 + 1 用心讨论,共获提升!
aa20221101 + 1 + 1 热心回复!
lingyun011 + 1 + 1 热心回复!
SVIP9大会员 + 1 + 1 我很赞同!
crizquan + 1 + 1 用心讨论,共获提升!
wangxiaoqiqiqi + 1 + 1 用心讨论,共获提升!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
liuxuming3303 + 1 + 1 谢谢@Thanks!
PastorBonus + 1 + 1 谢谢@Thanks!
ytfh1131 + 1 + 1 谢谢@Thanks!
jonathan329 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
laozhang4201 + 1 + 1 热心回复!
涛之雨 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

推荐
zzyzy 发表于 2025-1-3 09:29
大佬,大佬,,,,我把整个js扣下来,然后function e(n) {
        if (r[n])
            return r[n].exports;
        var o = r[n] = {
            i: n,
            l: !1,
            exports: {}
        };
        return t[n].call(o.exports, o, o.exports, e),
        o.l = !0,
        o.exports
    }window.zz = e;到处e后,用python执行js,一直报错onmessage未定义,我重新定义一下,结果publicValue为空,拿不到buffer,这为啥呢
推荐
qiuqiuqiu123 发表于 2025-1-3 10:52
新手一枚,向大佬请教:异步函数如何断点?我之前尝试,没法断住啊,只有到了await等待主线程之后才能断住。是怎么回事呢?
沙发
idxinye 发表于 2025-1-1 03:46
3#
SmileLoveSex 发表于 2025-1-1 06:09
学习到了,谢谢
4#
tnancy2kk 发表于 2025-1-1 08:52
太棒了,感谢分享!
5#
zwtstc 发表于 2025-1-1 11:18
6,感谢分享
6#
wendao_lx 发表于 2025-1-1 12:39
js逆向需要人头脑清醒,受教了,收藏了
7#
nulla2011 发表于 2025-1-1 13:03
学习一下逆向
8#
52pojie19 发表于 2025-1-1 13:12
厉害了大佬
9#
52pojie19 发表于 2025-1-1 13:50
学习了 谢谢大佬呀
10#
hbu126 发表于 2025-1-1 15:27
高手,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-1-4 07:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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