声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!
逆向目标
网址:aHR0cHM6Ly9jYXJlZXJzLnBkZGdsb2JhbGhyLm5ldC9qb2Jz
参数:anti_content
逆向分析
分析找到目标接口,然后以cURL
格式复制,转 为python
请求
可以看到接口比较简单,只有一个 anti_content
参数
逆向过程
搜索关键字 anti_content
,可以在所有搜索结果处都打上断点,这里我就直接在目标处打上断点
我们翻页调试在断点处断住,然后一步步跟栈进去,最后跟到了下面位置,具体跟栈流程也比较简单,优快云
一大堆相关文章某,这里我们就不多讲了
控制台执行 Vt()
输出结果就是我们要的 anti_content
,我们翻到最上面可以看到就是 webpack
我们把整个 js代码
拷贝到 vscode
,全部折叠代码并搜索具体的加密代码t[n(576, "lD!i")](e, t[n(558, "[k*i")](Vt))
,如下
可以看到里面也是一个
webpack
的加载器,我们直接把这个模块扣出来,并导出加载器
var _qin;
!(function (t) {
var e = {
};
function n(r) {
if (e[r]) return e[r].exports;
var o = (e[r] = {
i: r,
l: !1,
exports: {
},
});
return t[r].call(o.exports, o, o.exports, n), (o.l = !0), o.exports;
}
return (
(n.m = t),
(n.c = e),
(n.d = function (t, e, r) {
n.o(t, e) ||
Object.defineProperty(t, e, {
enumerable: !0,
get: r,
});
}),
(n.r = function (t) {
"undefined" != typeof Symbol &&
Symbol.toStringTag &&
Object.defineProperty(t, Symbol.toStringTag, {
value: "Module",
}),
Object.defineProperty(t