目录
- [一、为什么要整理这套 JS 逆向路线?](#一、为什么要整理这套 JS 逆向路线?)
- 二、系列文章导航(持续更新)
-
- [基础篇:JS 语言、运行环境与工程化](#基础篇:JS 语言、运行环境与工程化)
- [密码学专题篇:编码、哈希、对称加密、RSA 与国密](#密码学专题篇:编码、哈希、对称加密、RSA 与国密)
- 核心能力篇:调试、Hook、扣代码与混淆
- [实战方法篇:验证码、Webpack 与 AI 逆向](#实战方法篇:验证码、Webpack 与 AI 逆向)
- 补环境篇:手动补环境、iv8、复杂验证码与模型训练
- 高级专题篇:AST、JSVMP、WASM、JSRPC、视频流与字体反爬
- 真实案例池:按专题持续追加,独立于主线编号
- 三、这套专栏适合哪些人?
- 四、专栏内容如何组织?
- 五、总体学习地图
- 六、主线学习路线怎么走?
-
- [1. JS 基础与运行机制](#1. JS 基础与运行机制)
- [2. 密码学与编码专题](#2. 密码学与编码专题)
- [3. Chrome DevTools 调试](#3. Chrome DevTools 调试)
- [4. Hook、扣代码与本地复现](#4. Hook、扣代码与本地复现)
- [5. 混淆识别与 AST 自动化](#5. 混淆识别与 AST 自动化)
- [6. Webpack 与现代前端工程化逆向](#6. Webpack 与现代前端工程化逆向)
- [7. 补环境、浏览器指纹与运行时方案](#7. 补环境、浏览器指纹与运行时方案)
- [8. 验证码、WASM、JSVMP、JSRPC、视频流与字体反爬](#8. 验证码、WASM、JSVMP、JSRPC、视频流与字体反爬)
- 七、案例索引应该如何维护?
- [八、这套博客和普通 JS 逆向文章有什么区别?](#八、这套博客和普通 JS 逆向文章有什么区别?)
-
- [1. 不是碎片技巧,而是一条系统路线](#1. 不是碎片技巧,而是一条系统路线)
- [2. 基础知识会始终站在逆向视角讲](#2. 基础知识会始终站在逆向视角讲)
- [3. 会结合靶场和真实案例](#3. 会结合靶场和真实案例)
- [4. 会覆盖 JS 逆向的新技术和新趋势](#4. 会覆盖 JS 逆向的新技术和新趋势)
- [5. 不是只给结果,也会记录思路](#5. 不是只给结果,也会记录思路)
- [九、有了 AI 之后,为什么还要系统学习 JS 逆向?](#九、有了 AI 之后,为什么还要系统学习 JS 逆向?)
- 十、学习建议
- 十一、更新规则
- 十二、结语
本文是《JS 逆向系统进阶》专栏的总纲与导航页。专栏会按照 主线学习 + 专题扩展 + 案例索引 的方式长期更新:主线文章负责建立系统能力,专题文章负责深入某一类技术点,案例文章负责沉淀靶场和真实场景中的分析经验。
这份学习地图覆盖 JavaScript 基础、密码学、浏览器 调试、Hook、扣代码、补环境、验证码、Webpack、AST、AI 辅助逆向、JSVMP、WASM、JSRPC、视频流分析、字体反爬与真实案例复盘。
免责声明与使用边界:本系列内容仅用于合法授权的学习研究、安全分析、风控防护理解与技术交流。文章中可能会结合靶场、公开页面或真实产品案例讲解分析思路,也可能提供用于复现实验流程的示例代码,但所有内容都应在合法授权、合理频率和不影响目标服务正常运行的前提下使用。请勿将本文中的方法、脚本或思路用于未授权访问、批量采集、账号撞库、绕过业务风控、破坏 验证码 体系、规避平台规则、侵犯数据权益或影响线上系统稳定。涉及真实案例时,敏感参数、账号信息、Cookie、Token、接口细节和可直接滥用的部分会尽量做脱敏或抽象处理。如相关网站、产品方、权利方或网站所有者认为文章内容涉及侵权、敏感信息披露或不适宜公开展示,可通过 CSDN 私信、评论区或作者主页提供的联系方式联系我;核实后我会及时删除、替换或进一步脱敏相关内容。读者因不当使用造成的任何法律责任、业务风险或经济损失,均由使用者自行承担,与作者无关。
一、为什么要整理这套 JS 逆向路线?
JS 逆向并不是一个只靠单点技巧就能长期推进的方向。真实网站里的前端加密、参数签名、Cookie 生成、浏览器指纹、Webpack 打包、验证码流程、补环境、反调试、WASM、JSVMP 等问题,往往不是单独出现,而是以不同组合叠在一起。
很多资料会围绕某个站点、某个参数、某段加密逻辑展开,实战感很强,但知识点之间容易断开:这个案例能跟下来,换一个技术栈、换一种防护组合,就又需要重新摸索。
所以这个专栏更适合被看作一张长期更新的学习地图,而不是一份一次性写完的清单。
它的核心目标是把 JS 逆向拆成三类内容:
text
主线学习: 建立 JavaScript、密码学、调试、Hook、扣代码、混淆、补环境、AST 等基础能力
专题扩展: 围绕验证码、Webpack、AI 辅助、JSVMP、WASM、JSRPC、视频流、字体反爬继续深入
案例索引: 把靶场案例、真实站点案例、补环境案例、验证码案例等按专题沉淀,方便持续追加
主线文章会保留固定编号,方便从基础到进阶连续阅读;案例文章则按专题归档,方便后续持续追加。对读者来说,更重要的是知道:现在卡住的问题属于哪个能力模块,应该回到哪一篇主线文章补基础,又可以通过哪些案例继续练手。
一条更适合长期学习的能力链可以这样理解:
text
JavaScript 基础
-> 密码学与编码
-> 浏览器调试
-> Hook 与扣代码
-> 混淆识别与还原
-> Webpack 与现代前端工程化
-> 验证码流程分析
-> 补环境与浏览器指纹
-> AST 自动化反混淆
-> AI 辅助逆向
-> JSVMP、WASM、JSRPC、视频流与字体反爬
-> 真实案例复盘与工程化沉淀
这篇文章会作为 CSDN 专栏的总纲和导航页使用。后续新增文章时,会优先追加到对应专题或案例分类中,而不是为了维持某套固定编号去反复重排目录。
二、系列文章导航(持续更新)
这一节会作为后续 CSDN 系列文章的总导航。
基础篇:JS 语言、运行环境与工程化
- 《JS 逆向系统进阶》00:为什么要系统学习 JS 逆向?总纲与路线导航 👉 查看文章
- 《JS 逆向系统进阶》01:JS 运行原理、作用域、闭包与 this 绑定 👉 查看文章
- 《JS 逆向系统进阶》02:原型链、属性描述符、Proxy、Promise 与 ES6+ 核心语法 👉 查看文章
- 《JS 逆向系统进阶》03:BOM、DOM、浏览器环境与 Node.js 逆向应用 👉 查看文章
- 《JS 逆向系统进阶》04:错误处理、模块化、包管理与 XHR/fetch/WebSocket 通信 👉 查看文章
密码学专题篇:编码、哈希、对称加密、RSA 与国密
- 《JS 逆向系统进阶》05:密码学逆向基础,位运算、端序、分组与通用排查流程 👉 查看文章
- 《JS 逆向系统进阶》06:编码解码专题,Hex、Base64、URL encode 与 CryptoJS WordArray 👉 查看文章
- 《JS 逆向系统进阶》07:哈希与摘要专题,MD5、SHA-256、HMAC、SM3 与可验证推导 👉 查看文章
- 《JS 逆向系统进阶》08:对称加密专题,AES、DES/3DES、RC4、SM4 与 mode/padding/key/iv 👉 查看文章
- 《JS 逆向系统进阶》09:非对称加密与签名专题,RSA、SM2、PEM/Base64/DER 与 Python 细节 👉 查看文章
核心能力篇:调试、Hook、扣代码与混淆
- 《JS 逆向系统进阶》10:Chrome DevTools 调试,断点、调用栈、Network 与反调试 👉 查看文章
- 《JS 逆向系统进阶》11:JS Hook 与 Proxy,从函数替换到补环境沙箱 👉 查看文章
- 《JS 逆向系统进阶》12:扣代码工作流,依赖追踪、本地复现与 Python 调用 JS 👉 查看文章
- 《JS 逆向系统进阶》13:混淆原理,字符串加密、控制流平坦化、死代码与反调试 👉 查看文章
实战方法篇:验证码、Webpack 与 AI 逆向
- 《JS 逆向系统进阶》14:验证码入门,图片识别、简单滑块与 Cookie/Session 状态绑定 👉 查看文章
- 《JS 逆向系统进阶》15:Webpack 模块逆向方法论,打包结构、require 劫持与签名模块定位 👉 查看文章
- 《JS 逆向系统进阶》16:AI 辅助逆向,混淆代码分析、Hook 生成与自动化工作流 👉 查看文章
补环境篇:手动补环境、iv8、复杂验证码与模型训练
- 《JS 逆向系统进阶》17:补环境入门,浏览器对象、原型链、属性描述符与检测点 👉 查看文章
- 《JS 逆向系统进阶》18:iv8 浏览器运行时,不手动补环境的通杀思路 👉 查看文章
- 《JS 逆向系统进阶》19:复杂验证码进阶,滑块缺口、行为轨迹与验证接口分析 👉 查看文章
- 《JS 逆向系统进阶》20:验证码模型训练,数据集制作、标注、训练与部署 👉 查看文章
高级专题篇:AST、JSVMP、WASM、JSRPC、视频流与字体反爬
- 《JS 逆向系统进阶》21:AST 基础,Babel 解析、遍历、作用域与代码生成 👉 查看文章
- 《JS 逆向系统进阶》22:AST 解混淆实战,字符串还原、死代码删除与控制流恢复 👉 查看文章
- 《JS 逆向系统进阶》23:JSVMP 初识,虚拟机混淆、指令分发与还原思路 👉 待更新
- 《JS 逆向系统进阶》24:WASM 逆向入门,wasm 加密模块、导入导出与调试方法 👉 待更新
- 《JS 逆向系统进阶》25:JSRPC 实战,复杂站点低频数据场景下的浏览器远程调用方案 👉 待更新
- 《JS 逆向系统进阶》26:m3u8 与视频流分析,播放链路、分片请求与合法下载场景 👉 待更新
- 《JS 逆向系统进阶》27:字体反爬,字体映射、CSS 偏移与 Canvas 渲染识别 👉 查看文章
真实案例池:按专题持续追加,独立于主线编号
SpiderDemo 靶场案例
-
SpiderDemo:请求头检测挑战,TLS 指纹与缓存头校验 👉 待更新
-
SpiderDemo:摘要算法入门,MD5 / SHA / HMAC 还原 👉 待更新
-
SpiderDemo:对称加密实战,DES 与 AES 复现 👉 待更新
-
SpiderDemo:调试拦截与非对称加密,无限 debugger 绕过 + RSA 签名 👉 待更新
-
SpiderDemo:OB 混淆下的盐值 MD5 还原 👉 待更新
-
SpiderDemo:OB 混淆 + 反调试 + signature 签名,手动分析、补环境、RPC 与 AST 取舍 👉 待更新
验证码案例
-
案例:数英验证码,图片验证码识别、Session 绑定与翻页采集 👉 待更新
-
案例:计算型验证码,接口流程、验证码识别与自动提交 👉 待更新
-
案例:动画 GIF 验证码,真假图片帧定位与识别 👉 待更新
-
案例:中大网校登录,RSA 加密、Cookie / Session 陷阱与登录流程复现 👉 待更新
真实站点密码学案例
-
案例:新华社客户端,3DES 双向加解密与 JS / Python 复现 👉 查看文章
-
案例:全国新书网,AES/CBC 双向加解密与 JSON 序列化坑点 👉 查看文章
-
案例:福建公共资源交易平台,MD5 签名 + AES 响应解密 👉 查看文章
-
案例:青岛市政府信箱,RSA + AES 混合加密 👉 待更新
-
案例:内蒙古 12345 政务热线,SM2 国密加密 + AES 响应解密 👉 待更新
-
案例:中国理财网信息披露平台,RSA 私钥签名与 SHA256withRSA 👉 待更新
-
案例:中国观鸟记录中心,RSA 请求加密 + MD5 签名 + AES 响应解密 👉 待更新
Webpack 案例
-
案例:蜂鸟竞技 LOL 赛程,SHA256 签名与 Webpack 模块逆向 👉 待更新
-
案例:国家医保服务平台,SM4 加密 + SM2 签名 + SHA256 请求头的 Webpack 进阶案例 👉 待更新
补环境入门案例
瑞数与强环境检测案例
-
案例:瑞数手动补环境,Cookie 生成、Trace 分析与环境检测点拆解 👉 查看文章
-
案例:瑞数 iv8 通杀,一轮/两轮模式与框架化调用 👉 查看文章
-
案例:某东 h5st,浏览器指纹、环境参数与签名链路分析 👉 待更新
-
案例:抖音 ab / a_bogus,浏览器指纹、动态参数与补环境取舍 👉 待更新
-
案例:Akamai / BotManager,强风控脚本与环境检测思路 👉 待更新
原型链补环境案例
-
案例:知乎,基于构造函数、原型链和属性描述符的补环境实践 👉 待更新
-
案例:小红书 x-s / x-t,原型链补环境与请求签名分析 👉 待更新
-
案例:腾讯滑块,验证码参数、环境对象与行为验证链路 👉 待更新
-
案例:某团 mtgsig,签名模块、WASM/环境检测与原型链补环境 👉 待更新
WASM、JSVMP 与混合防护案例
-
靶场:WASM 逆向入门,先用可控案例讲清 wasm 加密模块定位和调试 👉 待更新
-
案例:荔枝网,WASM 结合补环境的真实站点分析 👉 待更新
-
靶场:JSVMP 入门,虚拟机调度、指令还原和日志辅助分析 👉 待更新
-
案例:JSVMP 结合补环境,复杂混淆与浏览器环境共同作用的处理思路 👉 待更新
验证码与纯算案例
上面主线文章尽量保持固定编号,真实案例池按专题持续追加。后续新增案例时,只需要追加到对应案例池,不需要重新调整主线文章顺序。
三、这套专栏适合哪些人?
这套内容比较适合下面几类读者:
- 有一点 JavaScript 基础,但不知道如何进入 JS 逆向的人。
- 会用 Python 写爬虫,但遇到前端加密、签名、验证码流程就卡住的人。
- 会打开 DevTools,但不熟悉断点、调用栈、XHR/fetch、Hook 的人。
- 能扣简单函数,但遇到浏览器环境、Webpack、混淆、闭包依赖就跑不起来的人。
- 想学习补环境、浏览器指纹、瑞数、京东 h5st、AST 反混淆等进阶内容的人。
- 想把 AI 融入逆向流程,但又不想完全依赖 AI 直接给答案的人。
如果你只想找一段现成代码直接复制,这套系列可能不一定适合你。它更偏向长期能力建设:让你逐步形成定位、分析、复现、验证和自动化处理问题的能力。
四、专栏内容如何组织?
这个专栏后续会按三条线维护:
text
主线学习篇: 解决应该按什么顺序学的问题
专题扩展篇: 解决某个方向如何继续深入的问题
案例索引篇: 解决学完之后怎么练、怎么复盘的问题
主线文章尽量保持稳定,方便读者从基础一路读到进阶。案例文章则不强制绑定固定顺序,因为真实案例的更新会受到资料整理、复现环境、脱敏处理、平台审核和实际研究进度影响。把案例按专题归档,比把所有内容都塞进同一套主线编号更适合长期维护。
换句话说,这个专栏不是线性清单,而是学习地图。你可以从头按主线读,也可以按当前遇到的问题反向查:
- 参数看起来像 MD5、AES、RSA、SM2,先看密码学专题。
- 找不到入口,先看 DevTools、Hook 和调用栈分析。
- 代码扣下来跑不动,先看扣代码、依赖追踪和补环境。
- 打包代码找不到模块,先看 Webpack 模块逆向。
- 混淆代码读不懂,先看混淆原理和 AST 自动化。
- 验证流程不稳定,先看验证码状态绑定、Session、轨迹和接口链路。
- 环境检测很多,先看浏览器对象、原型链、属性描述符和运行时方案。
- 案例太复杂,先回到主线方法论,再选择案例池里相近的专题复盘。
五、总体学习地图
从能力建设角度看,JS 逆向可以拆成下面这条路线:
text
基础层
JavaScript 运行机制、作用域、闭包、this、原型链、属性描述符、Proxy
数据层
编码、哈希、对称加密、非对称加密、签名、国密算法、序列化差异
调试层
Network、Sources、XHR/fetch 断点、调用栈、Scope、Hook、反调试识别
复现层
扣代码、依赖追踪、Node.js 执行、Python 调 JS、本地结果验证
结构层
Webpack/Vite 打包结构、模块定位、模块导出、签名函数搜索
环境层
window、document、navigator、screen、location、cookie、localStorage、canvas、原型链补环境
自动化层
AST 解析、字符串还原、死代码删除、控制流恢复、批量重命名、Hook 模板生成
专题层
验证码、浏览器指纹、iv8、JSRPC、WASM、JSVMP、m3u8、字体反爬、AI 辅助逆向
实战层
靶场练习、真实站点复盘、失败原因定位、工程化脚本整理、案例库沉淀
只看某一个案例,很容易把问题理解成这个站点怎么处理。系统学习的价值,是把它抽象成更通用的问题:
text
入口怎么找?
参数怎么追?
运行时怎么观察?
依赖怎么补?
结果怎么验证?
失败怎么定位?
经验怎么复用?
六、主线学习路线怎么走?
1. JS 基础与运行机制
这一部分先补 JavaScript 本身。重点不是为了准备面试,而是为了理解逆向中反复出现的运行时问题。
需要重点掌握:
- 执行上下文、调用栈、作用域链和闭包。
this绑定、call、apply、bind。- 原型链、构造函数、
class、instanceof。 - 属性描述符、getter/setter、
Object.defineProperty。 Proxy、Reflect、Promise、async/await、事件循环。- BOM、DOM、Node.js、Buffer、模块化和网络通信方式。
这些基础会直接影响后面的扣代码、Hook、补环境和 AST 分析。比如闭包可以隐藏内部状态,this 错误会导致复现结果不一致,原型链和属性描述符不对会被环境检测识别。
2. 密码学与编码专题
JS 逆向里经常遇到编码、摘要、对称加密、非对称加密、数字签名和国密算法。学习这部分不是为了从零发明算法,而是为了能够快速判断代码属于哪一类逻辑。
看到大量位运算、固定常量、S-Box、Base64 字符表、key、iv、mode、padding、sign、encrypt、digest 等特征时,要能判断它可能是标准算法、魔改算法,还是业务自定义混淆。
这个专题建议按下面顺序学习:
- 编码与序列化:Hex、Base64、URL encode、JSON、CryptoJS WordArray。
- 哈希与摘要:MD5、SHA-256、HMAC、SM3。
- 对称加密:AES、DES/3DES、RC4、SM4。
- 非对称加密:RSA、SM2、PEM、DER、公钥、私钥。
- 签名验证:SHA256withRSA、请求头签名、参数排序和时间戳。
3. Chrome DevTools 调试
调试能力是 JS 逆向的核心基本功。不会调试,就只能猜;会调试,才能沿着数据流一步步追踪。
这一部分重点包括:
- Network 面板如何看请求链路。
- Sources 面板如何下断点。
- XHR/fetch 断点、DOM 断点、事件断点。
- 条件断点、日志断点和调用栈分析。
- Scope 变量观察和运行时状态判断。
- 反调试识别与处理思路。
真正分析时,要逐步回答这些问题:参数从哪里来,函数在哪里调用,Cookie 什么时候写入,请求头在哪里设置,验证码状态如何绑定,模块是否懒加载,运行时有没有动态分支。
4. Hook、扣代码与本地复现
Hook 的作用是把黑盒运行过程变成可观察过程。扣代码的目标则是把浏览器里的关键逻辑迁移到本地可验证环境。
这一阶段常见问题包括:
- 入口函数找到了,但依赖函数没扣全。
- 函数依赖闭包变量,单独复制后状态丢失。
- 代码依赖
window、document、navigator、location、screen。 - 浏览器里能跑,Node.js 里报错。
- 加密结果能算出来,但请求仍然不通过。
- 时间戳、salt、nonce、Cookie、Session 等状态参数没有对齐。
这一部分不会只讲复制函数,而是会强调入口定位、依赖追踪、运行时上下文、本地验证和失败排查。
5. 混淆识别与 AST 自动化
混淆不是不可读,只是增加阅读成本。学习混淆的重点不是手动还原每一行,而是识别模式并选择合适的处理方式。
常见方向包括:
- 字符串加密和数组映射。
- 控制流平坦化。
- 死代码注入。
- eval 动态执行。
- JSFuck、OB 混淆、反调试和完整性检测。
- AST 字符串还原、死代码删除、控制流恢复和批量重命名。
当混淆代码规模变大时,AST 的价值会非常明显。比如几千个 _0x1234('0x1a') 形式的字符串解密调用,手工处理不现实,但用 Babel parser、traverse、generator 可以批量还原。
6. Webpack 与现代前端工程化逆向
现代前端大量使用 Webpack、Vite 等打包工具。很多加密函数不是孤立函数,而是藏在模块系统中,被配置对象、工具函数、状态对象共同调用。
这一阶段会重点理解:
- Webpack 打包结构和
__webpack_require__。 - 模块缓存、模块 ID、模块函数。
- 如何搜索关键模块和导出内部函数。
- 如何定位签名模块、加密模块和请求封装层。
- 如何从打包代码中提取可复现的业务逻辑。
看懂模块系统之后,很多原本看起来杂乱的前端代码,会变成相对清晰的依赖关系图。
7. 补环境、浏览器指纹与运行时方案
补环境是 JS 逆向进阶中的核心能力。前期可以从 缺什么补什么 开始快速验证,但后期要逐步过渡到原型链补环境和框架化补环境。
这一部分重点包括:
- 浏览器对象:
window、document、navigator、location、screen、canvas、事件对象。 - 存储与状态:Cookie、localStorage、sessionStorage、动态参数和服务端下发值。
- 检测点:枚举属性、getter/setter、
instanceof、Object.prototype.toString.call()、函数toString伪装。 - 原型链补环境:构造函数、原型对象、属性描述符和对象层级对齐。
- 运行时方案:当补环境成本过高时,考虑 iv8、JSRPC 或浏览器运行时调用。
补环境不是简单堆属性。真正难的是判断缺失的环境是否影响分支、是否影响签名结果,以及如何验证补出来的行为和真实浏览器一致。
8. 验证码、WASM、JSVMP、JSRPC、视频流与字体反爬
这些内容属于更靠后的专题,不建议刚入门就直接硬啃。
验证码要理解的不只是图片识别率,还包括 Session 绑定、状态过期、验证接口、轨迹参数和前端加密。WASM 和 JSVMP 则会把关键逻辑从普通 JS 推到更难分析的执行模型里。JSRPC 适合复杂站点、低频数据、强环境依赖、补环境成本过高的场景。视频流分析会涉及 m3u8、ts 分片、播放鉴权和临时 URL。字体反爬则常常需要结合字体映射、CSS 偏移和 Canvas 渲染识别。
这些专题的共同点是:不能只看单段代码,需要把运行链路、状态变化、环境依赖和验证结果放在一起分析。
七、案例索引应该如何维护?
案例文章最容易越写越多,如果全部塞进主线编号,后续维护会很痛苦。这个专栏更适合采用 主线稳定、案例扩展 的结构。
案例索引可以按专题维护:
- SpiderDemo 靶场案例:用于练基础方法,变量少、目标明确、干扰可控。
- 验证码案例:用于理解识别、状态绑定、轨迹参数和验证接口。
- 真实站点密码学案例:用于练标准算法识别、魔改判断和跨语言复现。
- Webpack 案例:用于练模块定位、签名函数导出和打包代码拆解。
- 补环境案例:用于练浏览器对象、原型链、属性描述符和检测点对齐。
- 强环境检测案例:用于理解复杂风控脚本、浏览器指纹和运行时方案取舍。
- WASM、JSVMP 与混合防护案例:用于练复杂执行模型和混合链路分析。
- 字体反爬、视频流与其他专题:用于沉淀更细分的实战经验。
这样新增案例时,只需要追加到对应分类,不需要重新调整主线顺序。读者也可以按自己的问题直接跳到相近案例,而不是被迫按文章发布时间阅读。
八、这套博客和普通 JS 逆向文章有什么区别?
1. 不是碎片技巧,而是一条系统路线
很多文章只解决一个点:某个参数怎么分析,某个 Cookie 怎么生成,某个验证码流程怎么处理。
这套系列会从 JS 基础、密码学、调试、Hook、扣代码、混淆、Webpack、补环境、AST、AI 辅助、验证码、字体反爬一路组织下来。每一部分都不是孤立的,而是为后面的内容做铺垫。
2. 基础知识会始终站在逆向视角讲
讲闭包,不只是为了知道语法,而是为了理解加密状态为什么藏在函数内部。
讲原型链,不只是为了知道 prototype,而是为了理解补环境为什么要模拟 DOM/BOM 对象层级。
讲属性描述符,不只是为了会用 defineProperty,而是为了理解为什么直接赋值会被检测发现。
讲 Promise 和事件循环,不只是为了写异步代码,而是为了理解请求、定时器、回调和动态参数生成的时机。
3. 会结合靶场和真实案例
靶场适合练基本功,因为变量少、目标明确、干扰可控。
真实案例适合练综合能力,因为它更接近实际环境:代码量大、链路长、状态复杂、失败原因多。
本系列会尽量做到:先用靶场拆方法,再用真实案例练综合。
4. 会覆盖 JS 逆向的新技术和新趋势
后续内容不会只停留在传统扣代码,还会逐步覆盖 AI 辅助逆向、AST 自动化解混淆、JSVMP、WASM、JSRPC、iv8、复杂补环境、验证码模型训练、字体反爬和工程化框架。
JS 逆向一直在变化,专栏内容也应该跟着更新。
5. 不是只给结果,也会记录思路
我更想写清楚的是:为什么这样判断,为什么在这里下断点,为什么这个函数是入口,为什么代码在浏览器能跑但在 Node.js 不能跑,为什么补了某个属性仍然失败,为什么 AI 的解释不能直接相信。
结果很重要,但过程更重要。因为换一个网站之后,能迁移的不是某一段代码,而是分析思路。
九、有了 AI 之后,为什么还要系统学习 JS 逆向?
AI 已经是逆向工作流中非常重要的辅助工具。它可以解释代码、总结函数职责、辅助变量重命名、生成 Hook 初稿、编写 AST 转换脚本、对比 JS 与 Python 复现逻辑,也可以帮助整理调试过程。
但 AI 不是万能答案机。AI 可以根据静态代码推测一段逻辑 看起来像什么,却不一定知道真实运行时发生了什么。
它可能会猜错函数职责,忽略闭包变量,误判 this 指向,看漏动态生成代码,把不可运行的补环境代码说成可运行,或者把标准算法和魔改算法混在一起。
JS 逆向大量依赖运行时观察。很多关键问题不在静态代码里,而在真实执行过程中:请求参数什么时候生成,Cookie 是哪里写入的,验证码状态绑定在哪个 Session,哪个事件触发了加密逻辑,哪个浏览器属性检测导致代码分支变化,哪个模块在运行时被懒加载。
系统学习的价值,是让你更会使用 AI,也更能验证 AI。
不会逆向的人可能只会问:
text
帮我分析这段 JS。
稍微系统学习之后,你可以问:
text
这段代码里 _0x3ab2 可能是字符串解密函数。请帮我判断它是否有缓存逻辑,入口参数格式是什么,
哪些调用点可以用 AST 批量替换成明文字符串。
这两个问题得到的答案质量完全不同。AI 的效果,很大程度取决于你能不能把问题拆清楚。
基础越扎实,AI 越好用。你知道怎么调试,AI 可以帮你总结调用链;你知道 AST 怎么工作,AI 可以帮你写转换脚本初稿;你知道密码学特征,AI 可以帮你快速判断算法可能性;你知道补环境检测点,AI 可以帮你列出可能缺失的对象和属性。
但方向、判断和验证仍然要靠人。
十、学习建议
如果你刚开始学,建议不要一上来就挑战复杂补环境或大型真实站点。可以按下面顺序推进:
- 先补 JavaScript 基础,尤其是闭包、
this、原型链、属性描述符、Proxy。 - 再学密码学和编码,至少能识别常见摘要、加密和编码特征。
- 熟练使用 DevTools,能看请求、下断点、追调用栈。
- 学会 Hook,把黑盒运行过程变成可观察过程。
- 从靶场开始练扣代码,不要直接被真实案例的复杂链路劝退。
- 理解混淆原理,再逐步学习 AST 自动化处理。
- 进入 Webpack、补环境、验证码、字体反爬等专题。
- 把 AI 作为辅助工具,而不是答案来源。
每学一个阶段,都要尽量做到三件事:
text
能解释原理
能调试观察
能本地复现
只看文章不跑代码,很难真正掌握。只复制代码不理解原理,换一个案例就会失效。
十一、更新规则
为了让这篇总纲长期可维护,后续更新会遵循几个原则:
- 标题不绑定年份,避免每年都要把最新改一遍。
- 主线文章尽量保持固定顺序,方便读者按路线阅读。
- 案例文章按专题追加,不强行绑定主线编号。
- 已发布文章替换为真实链接,未发布文章保留 待更新。
- 新增专题优先加入对应分类,确实形成独立方向时再新增小节。
- 真实案例会尽量做脱敏和抽象处理,重点记录分析思路、验证方法和踩坑原因。
这个规则可以避免后续目录越改越乱,也能让这篇文章长期作为 CSDN 专栏入口使用。
十二、结语
JS 逆向不是靠几个 Hook 模板、几段补环境代码、几个案例链接就能真正掌握的技术。它更像一条能力链:
text
基础决定你能不能看懂代码
调试决定你能不能找到入口
Hook 决定你能不能观察运行时
扣代码决定你能不能本地复现
补环境决定你能不能脱离浏览器运行
AST 决定你能不能批量处理混淆
AI 决定你能不能进一步提升效率
案例复盘决定你能不能把经验迁移到下一个问题
这套专栏会按照这条路线持续更新,结合靶场、真实案例、新技术和 AI 辅助逆向,把 JS 逆向从基础知识一路讲到补环境、AST、验证码、字体反爬和工程化实践。
如果你也在系统学习 JS 逆向,可以先收藏这篇总纲。后续主线文章、专题补充和案例复盘都会持续补到导航里,已经发布的内容会替换成真实链接,未发布的内容会保留在对应专题下,方便按需查阅。
在 AI 时代,系统化文章的价值并不会消失。很多时候,先读一篇整理好的路线、方法论或踩坑复盘,再把明确的问题交给 AI,会比直接把大量混淆代码、报错日志和零散上下文全部丢给 AI 更高效。它可以减少反复解释背景、补充上下文和试错验证的成本,也能让你更容易判断 AI 给出的答案是否可靠。
希望这个总纲能帮助你更清楚地知道:现在应该学什么,遇到问题应该回到哪里补基础,又可以通过哪些案例继续练手。