构建 AI 逆向 MCP - 使用 MCP 辅助 JS 逆向

构建 AI 逆向 MCP - 使用 MCP 辅助 JS 逆向

前言

谷歌出了一个 chrome-dev-mcp,能够自动化浏览器操作。我发现这个 MCP 能抓包,于是想:能不能用于 JS 逆向分析?

但实际用下来发现,常规逆向需要的能力它都不支持:

  • ❌ 搜索代码
  • ❌ 追踪调用栈
  • ❌ 打断点调试
  • ❌ Hook 函数
  • ❌ 查看变量值

那能不能给它打补丁?当然可以。

Chrome DevTools Protocol(CDP)本身支持这些能力,只是谷歌的 MCP 没有封装。于是我基于 CDP 扩展了一套逆向专用工具:

扩展能力对应工具
代码搜索search_in_sourcesfind_in_script
调用栈追踪get_request_initiator
断点调试set_breakpointset_breakpoint_on_text
单步执行step_intostep_overstep_out
变量查看get_paused_infoevaluate_on_callframe
函数 Hookhook_functiontrace_function
XHR 拦截break_on_xhr

现在,AI 可以像人一样操作 DevTools 进行逆向分析了。

项目地址https://github.com/zhizhuodemao/js-reverse-mcp

下面是完整的工具集和使用指南。


一、什么是 MCP

MCP(Model Context Protocol)是 Anthropic 推出的模型上下文协议,允许 AI 直接调用外部工具。

传统逆向流程

1

人工操作浏览器 → 复制数据 → 粘贴给 AI → AI 分析 → 人工验证

MCP 辅助流程

1

AI 直接操作浏览器 → 自动分析 → 自动验证 → 输出结果

二、JS 逆向 MCP 工具集

2.1 页面管理

工具功能
list_pages列出浏览器所有页面
select_page选择要操作的页面
new_page新建页面并导航
navigate_page页面导航(URL/前进/后退/刷新)
take_snapshot获取页面 DOM 快照
take_screenshot页面截图

2.2 网络分析

工具功能
list_network_requests列出所有网络请求
get_network_request获取请求详情(Headers/Body/Response)
get_request_initiator获取请求调用栈 - 定位发起请求的代码
break_on_xhrXHR/Fetch 断点 - URL 匹配时暂停

2.3 脚本分析

工具功能
list_scripts列出页面加载的所有 JS 脚本
get_script_source获取脚本源码(支持行范围/字符偏移)
find_in_script在指定脚本中搜索字符串
search_in_sources全局搜索所有脚本

2.4 断点调试

工具功能
set_breakpoint设置行断点(支持条件断点)
set_breakpoint_on_text按代码文本设置断点 - 适合混淆代码
remove_breakpoint移除断点
list_breakpoints列出所有断点
pause立即暂停执行
resume继续执行
step_into单步进入
step_over单步跳过
step_out跳出当前函数

2.5 运行时分析

工具功能
get_paused_info获取暂停状态(调用栈/作用域变量)
evaluate_on_callframe在断点处执行表达式 - 查看变量值
evaluate_script在页面执行 JS 代码
inspect_object深度检查对象结构

2.6 Hook 与追踪

工具功能
hook_functionHook 函数 - 记录调用/参数/返回值
unhook_function移除 Hook
list_hooks列出所有 Hook
trace_function追踪函数调用 - 不暂停,只记录
monitor_events监听 DOM 事件

2.7 存储与控制台

工具功能
get_storage获取 Cookie/localStorage/sessionStorage
list_console_messages列出控制台消息
get_console_message获取控制台消息详情

三、实战场景

3.1 定位加密函数

目标:找到生成 w_tsfp 参数的代码

1

2

3

4

5

6

7

1. list_network_requests → 找到携带 w_tsfp 的请求

2. get_request_initiator → 获取调用栈,定位发起代码

3. get_script_source → 查看相关脚本

4. set_breakpoint_on_text → 在关键代码处设断点

5. 刷新页面触发断点

6. get_paused_info → 查看调用栈和变量

7. evaluate_on_callframe → 检查加密前后的值

目标:追踪 Cookie 的设置过程

1

2

3

4

5

1. hook_function → Hook document.cookie setter

2. 刷新页面

3. list_console_messages → 查看 Hook 日志

4. 从日志中获取调用栈

5. get_script_source → 定位生成逻辑

3.3 XHR 断点调试

目标:在特定 API 请求时暂停

1

2

3

4

5

1. break_on_xhr → 设置 URL 匹配断点(如 "/api/sign"

2. 触发请求

3. get_paused_info → 获取完整调用栈

4. step_into/step_over → 单步调试

5. evaluate_on_callframe → 查看签名参数

3.4 VM 字节码分析

目标:追踪 VM 执行过程

1

2

3

4

5

1. search_in_sources → 搜索 VM 解释器特征

2. find_in_script → 定位具体位置

3. set_breakpoint → 在 VM 循环处设断点

4. get_paused_info → 获取 PC、寄存器等状态

5. trace_function → 追踪关键函数调用

四、AI 对话示例

4.1 定位加密入口

1

2

3

4

5

6

7

8

用户:帮我找到这个页面 w_tsfp 参数的生成位置

AI:

1. 调用 list_network_requests 找到相关请求

2. 调用 get_request_initiator 获取调用栈

3. 分析调用栈,定位到 probe.js 第 XXX 行

4. 调用 get_script_source 获取上下文代码

5. 输出:w_tsfp 在 RC4 加密后通过 btoa 编码,入口函数是 ...

4.2 动态调试

1

2

3

4

5

6

7

8

9

用户:在 RC4 加密函数处设断点,我想看加密前的明文

AI:

1. 调用 search_in_sources 搜索 "RC4" 或特征代码

2. 调用 set_breakpoint_on_text 设置断点

3. 提示用户刷新页面

4. 断点命中后调用 get_paused_info

5. 调用 evaluate_on_callframe 获取参数值

6. 输出:加密前明文是 {"loadts":...,"fingerprint":...}

4.3 批量 Hook

1

2

3

4

5

6

7

8

9

10

11

用户:Hook 所有可能的加密函数,看哪个被调用

AI:

1. 调用 hook_function 依次 Hook:

   - btoa

   - atob

   - JSON.stringify

   - encodeURIComponent

2. 提示用户操作页面

3. 调用 list_console_messages 查看 Hook 日志

4. 输出:btoa 被调用,参数是 RC4 加密后的数据...

五、优势总结

5.1 效率提升

传统方式MCP 方式
手动打开 DevToolsAI 直接操作
复制粘贴数据自动获取
人工搜索代码search_in_sources
反复设断点调试AI 自动迭代
手写 Hook 代码hook_function 一键 Hook

5.2 适合场景

  • 混淆代码分析:AI 可以快速搜索、设断点、查看变量
  • VM 逆向:自动追踪执行流程,记录状态变化
  • 加密算法定位:Hook + 调用栈分析,快速定位入口
  • 批量测试:自动化执行多轮测试

5.3 局限性

  • 需要浏览器配合(DevTools Protocol)
  • 某些反调试可能检测 CDP 连接
  • 复杂异步逻辑仍需人工判断
  • AI 理解能力有限,核心决策仍需人工

六、搭建指南

6.1 环境要求

  • Chrome/Chromium 浏览器
  • Node.js 运行时
  • Claude Desktop 或支持 MCP 的客户端

6.2 核心原理

1

Claude ←→ MCP Server ←→ Chrome DevTools Protocol ←→ 浏览器

MCP Server 封装 CDP 协议,暴露为 AI 可调用的工具函数。

6.3 关键能力

  1. 页面控制:导航、刷新、截图
  2. 网络拦截:请求列表、调用栈追踪
  3. 脚本调试:断点、单步、变量查看
  4. 代码注入:Hook、Trace、执行任意 JS

七、最佳实践

  1. 先观察再动手:用 list_network_requests 了解请求模式
  2. 善用搜索search_in_sources 比手动翻代码快
  3. 断点要精准set_breakpoint_on_text 比行号更可靠
  4. Hook 优先:先 Hook 观察,再设断点深入
  5. 保存上下文:让 AI 记录关键发现,避免重复分析
  6. 分步验证:每一步都验证结果,避免错误累积

MCP 让 AI 从"分析助手"变成"操作助手",显著提升逆向效率

Read more

前端引入的JS加载失败页面功能无法使用?JS加载失败的终极解决方案

前端引入的JS加载失败页面功能无法使用?JS加载失败的终极解决方案

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解 🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用 🍎 《前端技术》专栏以实战为主介绍日常开发中前端应用的一些功能以及技巧,均附有完整的代码示例 ✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧 💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程 🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整 👍《Spring Security》专栏中我们将逐步深入Spring Security的各个

Web 服务与 I/O 模型

一、Web 服务介绍 1.1.1 Apache prefork 模型(预派生模式) * 核心机制:主控制进程派生多个独立子进程,使用select模型,最大并发 1024;每个子进程单线程响应用户请求 * 资源特性:占用内存较多,但稳定性极高 * 配置特点:可设置进程数的最大值和最小值 * 适用场景:访问量中等的场景 * 优缺点 * ✅ 优点:极致稳定,故障隔离性好 * ❌ 缺点:每个请求对应一个进程,资源占用高,并发能力弱,不适合高并发场景 1.1.2 Apache worker 模型(多进程 + 多线程混合模式) * 核心机制:主进程启动多个子进程,每个子进程包含固定线程数;线程处理请求,线程不足时新建子进程补充 * 资源特性:相比 prefork 内存占用更少,支持更高并发

openTCS WEB接口实战:从基础调用到自定义指令开发

1. 为什么你需要关注openTCS的WEB接口? 如果你正在接触AGV、RGV或者四向车这类自动化搬运设备的调度系统,那你大概率听说过openTCS。它是一个开源的交通控制系统,简单说,就是给这些“小车”当大脑的。我之前做项目,经常遇到一个头疼的问题:调度系统的功能很强大,但怎么才能让我们的前端页面或者别的系统(比如WMS仓库管理系统)方便地去指挥它呢?难道每次都要后端写一堆复杂的桥接代码吗? 这就是openTCS WEB接口的价值所在。在早期的版本里,和openTCS交互主要靠RMI(远程方法调用),这玩意儿基本就把你锁死在Java技术栈里了,前端同学想直接调个接口看看车辆状态?门都没有。后来官方终于补上了WEB API这块短板,用标准的HTTP协议暴露了一系列接口,这下子世界就开阔了。你的前端Vue/React项目、Python写的数据分析脚本、甚至手机APP,都能通过发送HTTP请求,直接获取车辆位置、下发移动指令、查询订单状态。这不仅仅是技术栈的解放,更是系统架构的松绑,让调度核心和业务应用能更清晰、更灵活地解耦。 所以,无论你是想做一个炫酷的实时监控大屏,还是要集成复

【Js逆向 python】Web JS 逆向全体系详细解释

【Js逆向 python】Web JS 逆向全体系详细解释

Web JS 逆向全体系内容 互联网技术安全提示与职业操守 做渗透测试,必须严格遵守以下原则: 1. 合法授权:仅在书面授权的范围内使用逆向技术,禁止未授权测试; 2. 最小影响:避免使用高风险参数(如sqlmap工具的 --risk=3、--os-shell),防止目标服务崩溃; 3. 数据保护:枚举到的敏感数据(如用户密码)需严格保密,测试后立即删除; 4. 留痕清理:测试结束后,协助目标清除测试留下的日志、文件等痕迹。 免责声明 1. 本文所述所有渗透测试技术、工具、命令及实战案例,仅适用于已获得目标系统 / 网络所有者书面授权的测试场景(如企业内部安全评估、甲方委托的红队测试、个人合法拥有的实验环境)。 2. 任何组织或个人若未取得明确书面授权,擅自将本文内容用于对第三方系统 / 网络的扫描、探测、攻击等行为,均属于非法网络活动,涉嫌违反《中华人民共和国网络安全法》《中华人民共和国刑法》(第