webpack实战

仅用作学习研究

网址:

复制代码
aHR0cHM6Ly93d3cuY2xzLmNuL3RlbGVncmFwaA==

关键字搜索sign: 定位加密位置d

核心加密位置:

javascript 复制代码
sign: p(a({}, r))

在控制台输出一下r 和**a({}, r)**发现一样,

核心就是p函数,即p(r)

p函数如下:

javascript 复制代码
e.exports = function(e) {
            var t = e && s(u(e).map((function(t) {
                return c(t, e[t])
            }
            )));
            return t = r.sync(t),
            t = o(t)
        }

核心加密关键函数在于这里

javascript 复制代码
return t = r.sync(t),
t = o(t)

这里的t就是没有sign的荷载然后序列化

javascript 复制代码
{
    "rn": 20,
    "lastTime": 1764062635,
    "subscribedColumnIds": "",
    "hasFirstVipArticle": "1",
    "os": "web",
    "sv": "8.4.6",
    "app": "CailianpressWeb"
}
javascript 复制代码
app=CailianpressWeb&hasFirstVipArticle=1&lastTime=1764062635&os=web&rn=20&subscribedColumnIds=&sv=8.4.6

关键加密函数

r往上找就能找到

javascript 复制代码
var r = n("KjvB")
  , o = n("aCH8")

很明显这种形式就是webpack

自执行需要刷新整个网页才能断点;

方法太多,在控制台中输入n;点击函数跳转

跳转后的js代码;可以看到很明显的webpack格式

javascript 复制代码
数组参数
function(形参){加载器}([模块1,模块2,...])
键值对(字典)参数
function(形参){加载器}({"k1":"模块1","k2":"模块2"})

把它折叠复制到本地js

很明显它调用的是object格式

所以把\[\]改为{};把关键加密位置代码(r,o)也拿下来

因为不能在函数外部调用内部的函数n(加载器)

我们把它设置为全局,找到加载器位置,函数名为a;

用任意一个方法把它传递出来

javascript 复制代码
window.gu=a;

然后下面调用改为

javascript 复制代码
var r =window.gu("KjvB");
o = window.gu("aCH8");

然后把模块补齐;

找到加载器核心调用位置;一般是:

javascript 复制代码
e[r].call(t.exports, t, t.exports, a)

在前面打印一下索引r;看一下它都调用了哪些模块,然后进行补全。

一个一个输出,进行补全;如下:

加上核心加密位置代码;构建加密完成

构建一个generate_sign函数,用python代码调用

相关推荐
泯泷几秒前
那段文字是谁删的?Yjs 14 正式版之前,一套删除归属方案的实现与边界
前端·javascript·算法
hold?fish:palm8 分钟前
34 合并K个升序链表
javascript·算法·链表
野槐2 小时前
前端项目优化(有了我,会发生...)
前端
幸运小圣3 小时前
PointerEvent 常用属性与事件整理【JavaScript】
开发语言·javascript·ecmascript
aa小小3 小时前
【无标题】
前端
计算机魔术师4 小时前
还在单线程跟 AI 聊天?Claude Code 并行多会话让你一个人干三个人的活
前端
志尊宝4 小时前
Vue3 零基础每日笔记(038):亲手封装 useDebounceFn 与 useThrottleFn——高频事件的流量阀
前端·javascript·vue·html·vue3
JavaGuide4 小时前
对标 MinIO!全新一代分布式文件系统正式发布
前端·后端
风骏时光牛马4 小时前
AI驱动自动化业务工作流搭建实践
前端
码云之上5 小时前
Skill 里的脚本终于能跑了,星悟接 CubeSandbox 的纪实
前端·人工智能·前端框架