JSReverser-MCP:把JavaScript逆向流程标准化装进Claude

admin 2026-06-12 05:00:56 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: JSReverser-MCP是一个将JavaScript逆向分析工作流标准化的MCP服务端,通过ChromeDevToolsProtocol接管浏览器,为Claude等MCP客户端提供40多个工具。项目基于六大方法论原则,包含脚本定位、Hook采样、断点调试、请求分析等九大模块,支持从浏览器实时采样到纯Node算法还原的完整闭环。工具已成功应用于京东h5st、快手hx-falcon、抖音a-bogus等实际案例,支持本地运行和AI增强,提供标准化任务目录结构确保证据沉淀。 综合评分: 85 文章分类: WEB安全,逆向分析,安全工具,安全开发,红队


cover_image

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 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;← 任务元信息
├── runtime-evidence.jsonl &nbsp;← 运行时 Hook 证据
├── network.jsonl &nbsp; &nbsp; &nbsp; &nbsp;← 网络请求记录
├── scripts.jsonl &nbsp; &nbsp; &nbsp; &nbsp;← 脚本采集结果
├── env/
│ &nbsp; ├── env.js &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ← 宿主对象 shim
│ &nbsp; ├── polyfills.js &nbsp; &nbsp; ← 代理诊断层
│ &nbsp; ├── entry.js &nbsp; &nbsp; &nbsp; &nbsp; ← 运行入口
│ &nbsp; └── capture.json &nbsp; &nbsp; ← 环境快照
├── run/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ← 运行结果
└── report.md &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;← 结构化报告

注意:真实任务目录(带真实参数)默认本地私有,不提交 Git。仓库里只提交 _TEMPLATE。这个边界设计是合理的——工具层面开源,任务产物层面不共享敏感逆向结果。


快速上手

依赖 Node.js 18+:

git&nbsp;clone&nbsp;https://github.com/NoOne-hub/JSReverser-MCP
cd&nbsp;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 \
&nbsp; --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》

评论:0   参与:  0