文章总结: JSReverser-MCP是一个将JavaScript逆向分析工作流标准化的MCP服务端,通过ChromeDevToolsProtocol接管浏览器,为Claude等MCP客户端提供40多个工具。项目基于六大方法论原则,包含脚本定位、Hook采样、断点调试、请求分析等九大模块,支持从浏览器实时采样到纯Node算法还原的完整闭环。工具已成功应用于京东h5st、快手hx-falcon、抖音a-bogus等实际案例,支持本地运行和AI增强,提供标准化任务目录结构确保证据沉淀。 综合评分: 85 文章分类: WEB安全,逆向分析,安全工具,安全开发,红队
JSReverser-MCP:把 JavaScript 逆向流程标准化装进 Claude
原创
JunYi JunYi
毅心安全
2026年6月9日 15:29 广东
在小说阅读器读本章
去阅读
🕵️ JSReverser-MCP:把 JavaScript 逆向流程标准化装进 Claude
作者:NoOne-hub | 项目地址:github.com/NoOne-hub/JSReverser-MCP | ⭐ 95 Stars
各位好,今天介绍一个让我看了直呼”方法论到位”的国人项目。
不夸张地说,JS 逆向是前端安全里最耗时、最依赖经验的工种之一。一个签名参数,定位源码可能要翻几十个压缩文件,Hook 采样、断点调试、补环境、首次偏差定位……每个步骤都要在不同工具窗口间反复跳。JSReverser-MCP 做的事情就是:把这整套流程标准化,装进 MCP 协议,让 Claude/Cursor/Codex 帮你跑完整条链路。
95 Stars,27 Forks,90 次提交,v2.0.3(2026 年 3 月),Apache-2.0 开源。项目的贡献者列表里赫然写着两个名字——作者 NoOne-hub(LiHua),以及 claude(Claude AI)。这是真正意义上的”人机协作写出来的工具”。
架构图
它到底是什么?
一个把 JavaScript 逆向分析工作流标准化的 MCP 服务端,底层通过 Chrome DevTools Protocol(CDP)直接接管已经打开的浏览器,暴露 40+ 个工具给 MCP 客户端(Claude、Cursor、Codex)调用。
关键词是”标准化”。作者在 README 里第一段就说了:
目标不是只做页面调试,而是把页面观察、运行时采样、本地复现、补环境和证据沉淀串成一套可复用工作流。
这句话说明了为什么这个项目和普通”调试脚本”不一样——它在解决的不是”怎么调试一次”,而是”怎么把每次逆向的结论复用起来”。
六大方法论原则,先理解再用
作者给整个工具定义了 6 个核心方法论,这是工具设计的哲学基础,值得每个用 JS 逆向的人认真看一遍:
Observe-first(先观察):在浏览器里先确认请求、脚本、函数和依赖来源,再做任何操作。别一上来就打断点。
Hook-preferred(优先 Hook):用最小侵入式观测代替断点暂停。Hook 函数参数比暂停执行成本低得多,也更适合异步场景。
Breakpoint-last(断点是最后手段):只有 Hook 采样信息不足时,才进入暂停式调试。很多人习惯上来就打断点,这个原则纠正的就是这个坏习惯。
Rebuild-oriented(以本地复现为目标):不是在浏览器里验证完就完了,要把证据和脚本导出到本地,让算法在 Node 里独立跑起来。
Evidence-first(证据先于结论):每一步产出都要沉淀为 task artifact 文件,而不是只存在于对话里。对话会被刷新,artifact 不会。
Pure-extraction-after-pass(补环境通过后再提纯):先让脚本在 Node 跑通,再去做算法层面的纯化提取。不要跳过页面证据直接猜环境。
这 6 条原则你仔细想想,其实就是资深 JS 逆向工程师多年踩坑之后的经验总结,只不过现在被显式写出来作为 AI 的执行规范。
九大能力模块,每一个都有真实使用场景
模块一:脚本定位(页面观察入口)
list_scripts 列出当前页面所有已加载的脚本,这是逆向的第一步——先搞清楚目标函数在哪个文件里。get_script_source 读取指定脚本源码,find_in_script 在单个脚本里搜索字符串或变量名,search_in_scripts 则在所有已缓存脚本里批量搜索。
实战场景:你知道目标请求带了一个 sign 参数,但不知道在哪生成的。search_in_scripts("sign=") 或者搜索 "generateSign" 这类字符串,可以快速把候选文件缩小到 1-2 个。
模块二:Hook 运行时采样(最常用的核心能力)
这是整个工具里使用频率最高的部分。
hook_function 直接 Hook 全局函数或对象方法,记录每次调用的参数和返回值。不需要打断点,不需要暂停页面,就在后台静默采样。trace_function 按源码函数名做调用追踪,适合跟调用链。create_hook + inject_hook 是可复用的 Hook 定义机制,你写好一个 Hook 模板,下次换目标可以直接复用。
实战场景:你想知道 window.CryptoUtil.encrypt 在某个请求前是否被调用了、传入了什么参数。直接 hook_function("window.CryptoUtil.encrypt") 注入,然后正常操作页面触发请求,采集到的参数值就是签名输入的原始数据。这比打断点要稳定得多,特别是在高频请求或异步场景下。
模块三:断点调试控制
set_breakpoint 支持按脚本 URL + 行号设置,set_breakpoint_on_text 更聪明,按代码文本自动定位行号(不用手动在混淆代码里数行数)。step_over / step_into / step_out 对应单步跳过、进入函数、跳出函数,resume 继续执行,pause 手动暂停。还有一个特别有用的 break_on_xhr——在特定 URL 的请求发出前中断,让你直接看到参数生成的”现场”。
这一组工具之所以是”最后手段”,是因为断点会暂停整个页面 JS 执行,对于设置了 debugger 保护或时间检测的页面,暂停本身就会触发反调试逻辑。优先用 Hook 非暂停式采样,断点留给 Hook 无法覆盖的场景。
模块四:请求链路分析
list_network_requests 列出页面所有网络请求,帮你找到目标接口。get_network_request 获取单个请求的完整详情——请求头、响应体、载荷。get_request_initiator 是这组里最有价值的工具:它能追溯某个请求是被哪段代码触发的,直接定位到发起调用的 JS 行。配合 break_on_xhr 可以进一步在请求发出前暂停,查看调用栈和当前作用域变量。
模块五:页面状态管理
get_storage 支持一次性读取 cookie、localStorage、sessionStorage 三种存储——鉴权 Token 通常在这里,evaluate_script 在当前 frame 内执行任意 JS 表达式,做小范围运行时验证,list_console_messages 读取 console 输出(Hook 和 trace 的日志会打到这里),check_browser_health 是起手验证:确认浏览器连接可用、目标页面可控。
模块六:WebSocket 观察
专门处理长连接场景,比如直播弹幕、实时推送、交易数据流。list_websocket_connections 拿到所有 WS 连接的 wsid,analyze_websocket_messages 按帧特征做消息分组(先识别不同消息类型),get_websocket_messages 查看具体消息内容。二进制帧场景下,先分流再细看是标准动作。
模块七:本地复现与补环境
这是整个工作流里的”工程化”环节,也是区分”单次逆向”和”可复用工程”的分水岭。
export_rebuild_bundle 导出本地复现工程,产出标准目录:env.js(基础宿主对象和最小 shim)、polyfills.js(代理诊断层、watch、safeFunction)、entry.js(运行入口和目标脚本加载)、runtime-evidence.jsonl(运行时证据)。
diff_env_requirements 根据 Node 运行时报错对比当前缺失的环境能力,告诉你还差哪些 shim 没补。record_reverse_evidence 把关键观察结果写入 task artifact,这是”Evidence-first”原则的技术落地——每一条重要发现都有文件记录,不依赖 AI 对话上下文。
模块八:深度代码分析(AI 增强核心)
understand_code 是强依赖外部 AI 的功能,结合静态分析 + LLM 做代码语义理解、业务逻辑提取和安全风险分析。面对几千行的混淆代码,AI 能比人更快识别出模式。
deobfuscate_code 本地 AST 规则始终可用(支持 VM 结构识别、编码型混淆降级、字符串还原等),配置外部 AI 后,复杂语义清理质量会进一步提升。risk_panel 聚合代码分析、加密检测和 Hook 信号,输出综合风险视图,适合安全研究场景的整体评估。collect_code 支持按优先级控制采样量,防止 Token 爆炸。
模块九:会话与登录态管理
这个模块解决了逆向过程中最烦人的问题之一——登录态失效。
save_session_state 把当前页面的 cookie 和 storage 状态保存为内存快照,restore_session_state 把快照恢复到当前页面,dump_session_state 导出为 JSON 文件(可以持久化保存),load_session_state 从文件或字符串重新载入。
实际意义:目标站点的 session 有效期通常只有几小时,逆向到一半 Token 过期就很麻烦。有了这组工具,可以在 Token 有效期内保存完整状态,换天继续分析同一个任务。
模块补充:页面自动化
navigate_page 跳转/刷新页面,click_element 触发点击,type_text 输入文本,take_screenshot 截图留存可视化证据,query_dom 查询节点状态。这组工具的定位是”做最小必要的页面操作,复现触发条件并辅助取证”,不是替代 Playwright 做完整 E2E 自动化。
已沉淀的三条真实案例链路
仓库里已有公开脱敏的完整逆向案例,这是这个项目最有参考价值的部分之一:
京东 h5st 参数:这是京东 API 请求里的核心签名参数,包含时间戳、设备指纹、随机数和 HMAC 签名的混合体,反混淆难度较高。案例文件:scripts/cases/jd-h5st-pure-node.mjs,是补完环境后的纯 Node 还原版本。
快手 hx-falcon 风控参数:快手的风控参数,falcon 是其反爬和鉴权系统的核心组件。案例文件:scripts/cases/ks-hxfalcon-pure-node.mjs。
抖音 a-bogus 参数:抖音 API 的签名参数,a-bogus 在国内 JS 逆向圈子里讨论度非常高,有大量公开研究。案例文件:scripts/cases/douyin-a-bogus-pure-node.mjs。
这三条链路展示了工具从”浏览器实时采样”到”纯 Node 算法还原”的完整闭环。案例只保留抽象方法和流程,敏感值脱敏,符合项目的安全边界规范。
AI 增强层:三个 Provider,选一个接入
外部 AI 是可选增强,支持 OpenAI、Anthropic(Claude)、Gemini 三个 Provider,配置入口是环境变量:
# Codex config.toml 示例
[mcp_servers.js-reverse]
command = "node"
args = ["/ABSOLUTE/PATH/JSReverser-MCP/build/src/index.js"]
[mcp_servers.js-reverse.env]
DEFAULT_LLM_PROVIDER = "anthropic"
ANTHROPIC_API_KEY = "your_key"
ANTHROPIC_MODEL = "claude-3-5-sonnet-20241022"
不配 AI 也能运行——Hook、断点、网络、WebSocket、复现导出这些核心能力全部不依赖外部 AI,完全本地。只有 understand_code(代码语义理解)强依赖,deobfuscate_code 可选增强,risk_panel 可选增强。
Gemini 还支持没有 API Key 时走本地 CLI(GEMINI_CLI_PATH),对于不想注册 API 账号的用户是个不错的 fallback。
标准任务目录结构
每个逆向任务都有一个标准化的目录结构,这是”Evidence-first”原则的工程实现:
artifacts/tasks/<task-id>/
├── task.json ← 任务元信息
├── runtime-evidence.jsonl ← 运行时 Hook 证据
├── network.jsonl ← 网络请求记录
├── scripts.jsonl ← 脚本采集结果
├── env/
│ ├── env.js ← 宿主对象 shim
│ ├── polyfills.js ← 代理诊断层
│ ├── entry.js ← 运行入口
│ └── capture.json ← 环境快照
├── run/ ← 运行结果
└── report.md ← 结构化报告
注意:真实任务目录(带真实参数)默认本地私有,不提交 Git。仓库里只提交 _TEMPLATE。这个边界设计是合理的——工具层面开源,任务产物层面不共享敏感逆向结果。
快速上手
依赖 Node.js 18+:
git clone https://github.com/NoOne-hub/JSReverser-MCP
cd JSReverser-MCP
npm install
npm run build
接入 Claude Code(最简单):
claude mcp add js-reverse node /ABSOLUTE/PATH/JSReverser-MCP/build/src/index.js
接入 Cursor:Command 填 node,Args 填绝对路径。
使用前,打开 Chrome 并开启远程调试端口:
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 --no-first-run
然后在 Claude 里问:
“帮我分析 https://example.com 上的 sign 参数是怎么生成的”
AI 会自动按照六步工作流:先 check_browser_health 确认连接,list_scripts 枚举脚本,search_in_scripts 定位候选代码,hook_function 采样,最后 export_rebuild_bundle 导出本地工程。
适用场景与安全边界
接口分析与安全研究:理解目标站点的签名、加密、鉴权机制,评估其安全性和潜在攻击面。
前端安全审计:risk_panel 可以识别前端代码中的密钥硬编码、弱加密算法、敏感信息暴露等风险。
前端工程排障:第三方 SDK 行为分析、线上环境运行时错误追踪、加载脚本的依赖关系理解。
逆向方法论学习:六步工作流本身就是非常好的学习框架,结合三个公开案例,适合正在学 JS 逆向的安全研究员参考。
综合评价
亮点:方法论设计相当成熟,六大原则和七步流程不是凑数的,是有真实工程经验背书的。9 大模块覆盖了 JS 逆向全链路,没有明显短板。三条真实案例沉淀(京东/快手/抖音)说明工具经过了真实目标验证,不是纸上谈兵。任务目录结构标准化设计让结果可复用,是对”只会用一次”工具的有意识升级。AI 依赖设计合理——核心能力不依赖 AI,AI 是可选增强层。
不足:95 Stars 的社区规模还很小,文档虽然详细但需要一定时间摸索。CDP 直连 Chrome 的方式在某些浏览器安全策略下可能受限。对于设置了强反调试(如 ob 混淆 + 时间检测 + 自毁代码)的目标,Hook-preferred 策略有时也不够用,需要 OB 专项反混淆管线。
这个工具代表了”MCP + 安全研究”这个方向目前最有深度的实践之一。如果你在做 JS 逆向或前端安全研究,非常值得深度研究一遍它的设计思路,即使你不直接用这个工具,这套方法论本身也是宝贵的参考。
⚠️ 本文仅供安全研究与授权测试参考。JS 逆向分析必须在合法合规的范围内进行,研究目标的签名/加密机制需符合当地法律法规及目标平台服务条款。未经授权的爬取、绕过访问控制或数据抓取行为可能违法。
觉得有价值的话点个在看,下期继续。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:毅心安全 JunYi JunYi《JSReverser-MCP:把 JavaScript 逆向流程标准化装进 Claude》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论