吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 445|回复: 18
上一主题 下一主题
收起左侧

[Web逆向] 【JS逆向】某建筑webpack逆向分析

  [复制链接]
跳转到指定楼层
楼主
littlewhite11 发表于 2024-11-20 20:44 回帖奖励

逆向目标

  • 网址:aHR0cHM6Ly9qenNjLm1vaHVyZC5nb3YuY24vZGF0YS9jb21wYW55
  • 目标:响应数据解密

抓包分析

随便翻个页,会发起一个请求,可以看到响应是加密的。

逆向分析

既然已经知道是响应加密了,那就直接开始逆向。点开启动器,按照经验(1.响应加密,2.xhr请求),那就先去响应拦截器搂一眼,一般是从xxx.request点进去即可。

下断,翻页,成功断住,一气呵成。

然后我们就需要找响应拦截器,其实逐个点进去看看都可以的,本案例就在下图箭头的地方,直接进去。

xxx.interceptors.response.use这就是响应拦截器的一个标志,那t.data应该就是密文,b应该就是解密函数。

直接下断,成功断住。

然后我们直接单步进去b函数,经常玩逆向的朋友其实到这就已经秒了,这不一眼AES嘛。

确实如此,其实逆向到这,拿到key,拿到iv,就可以找个加解密网站看是不是标准的AES了,经验证,算法没有被魔改。

但是!!!我们这篇文章的主题是webpack,我们就不按套路出牌,否则以后遇到webpack,加解密算法不明显的时候,该不会抠还是不会抠。

经常搞webpack的朋友都清楚,代码该怎么抠,无非就是找加载器,补齐缺失的模块,导出关键函数,最后进行加解密。

我们先分析一下代码逻辑,在解密的时候主要用到了d对象,而d又是n.n(u),很显然第一个n就是加载器,因为前面很多对象都通过n(xxx)赋值,而xxx就是模块名称。

加载器找到了,可以在u = n("3452")中下断,因为d的赋值用到了u,然后刷新页面,进去加载器,发现加载器实际是函数s

然后我们把加载器拿下来(箭头所指部分),注意,先不要拿模块,模块就是这个自执行函数传入的大对象,我们先传空。

代码拿下来之后,回到加载器中分析一下逻辑,e为模块名,a为存储模块的地方,先判断有没有,有的话直接返回,没有的话就走后面的逻辑,去t对象里面拿,而t就是自执行函数的传参,包含了所有模块。

所以,我们抠模块的时候,直接从t对象拿就行。

下面有两种选择:

  • 运行代码,缺哪个模块补哪个,直到成功解密
  • 半自动抠webpack

我选第二种,那么怎么半自动抠模块呢,首先我们要清楚需要构造一个怎样的字符串,才适合我们的加载器调用。

{"模块名": 模块函数, ...},这应该没有异议吧。或者你构造成数组也没问题,不过数组是怎么调用的,要自己去看看webpack的相关知识了。

那我就直接将字符串挂到window上了,下面是流程:

  1. 回到u = n("3452")断点,刷新页面,重新断住
  2. 将字符串挂载到window上,window.module_str = '{'
  3. 在加载器的if (a[e])处下条件断点,,window.module_str += `"${e}":${t[e].toString()},`,false
  4. 在目标对象后面下断(可以在这p = n("5c96")),确保成功加载了d对象
  5. 将断点跳到p = n("5c96")
  6. 执行window.module_str += '}'
  7. 执行copy(window.module_str)
  8. 将自执行函数的空对象换成我们复制的对象

OK,到这里,我们就成功把加载器和解密相关的模块都抠下来了,接下来就是导出我们需要的东西。

我就直接在自执行函数最后将加载器挂到window(global)上了。 剩下的就是网页上怎么解密的,我们就怎么解密就行了。

解密结果:

成功!!!

免费评分

参与人数 5威望 +1 吾爱币 +23 热心值 +4 收起 理由
GaoWALT + 1 + 1 我很赞同!
c293943 + 1 我很赞同!
allspark + 1 + 1 用心讨论,共获提升!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
moonlight2046 + 1 谢谢@Thanks!

查看全部评分

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

推荐
百度三文鱼 发表于 2024-11-20 22:49
虽然大佬讲的清楚,但是作为前端菜鸡,还是没懂,加载器是啥,模块是啥,怎么导,怎么扣,最后怎么合成一个可执行的代码块,找的资料都是分片的,不能快速上手,有时候就是抓个加密算法,着急抓狂
沙发
SVIP9大会员 发表于 2024-11-20 22:23
3#
 楼主| littlewhite11 发表于 2024-11-20 22:28 |楼主
4#
SVIP9大会员 发表于 2024-11-20 22:29
littlewhite11 发表于 2024-11-20 22:28
写文章有利于巩固知识

挺佩服的,你的js思路很清晰,今天评分给你送过了,明天接着给你送!
5#
 楼主| littlewhite11 发表于 2024-11-20 22:31 |楼主
SVIP9大会员 发表于 2024-11-20 22:29
挺佩服的,你的js思路很清晰,今天评分给你送过了,明天接着给你送!

其实我还处于菜鸡阶段
6#
kirito010 发表于 2024-11-20 22:38
感谢分享
8#
 楼主| littlewhite11 发表于 2024-11-20 22:56 |楼主
百度三文鱼 发表于 2024-11-20 22:49
虽然大佬讲的清楚,但是作为前端菜鸡,还是没懂,加载器是啥,模块是啥,怎么导,怎么扣,最后怎么合成一个可执行 ...

我的建议是,可以看一看webpack是怎么构成的,原理懂了之后你就通透了
9#
DUANXI 发表于 2024-11-20 23:24
大佬厉害
10#
tomjin 发表于 2024-11-20 23:38
支持,感谢分享思路
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-21 11:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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