
在做前端安全分析和 Web 应用合规测试时很多朋友应该都遇到过这种场景面对一段混淆严重的加密参数生成代码从全局搜索到调用栈回溯一个函数一个函数地跟花了大半天才搞清楚某个参数到底是怎么生成的。这个过程极度依赖个人经验而且大量重复劳动。最近 MCP 和 skills 在 AI 编程领域讨论度很高两者的组合恰好能把这种繁琐的分析流程交给大模型去执行。这篇文章围绕“AI 辅助逆向”这条主线展开完整拆解 MCP 与 skills 的接入方式并通过一个滑块验证码安全分析的案例演示如何让大模型帮你完成代码定位、算法还原和报告输出。全文侧重点是安全研究、漏洞分析与防御加固所有分析都必须基于你已获得授权的系统。如果你只是希望提升自己对前端加密机制的理解这套工作流同样适用。1. 背景与核心概念1.1 从“人工逆向”到“AI 辅助逆向”传统的前端逆向流程大致是下面的链路打开目标页面使用开发者工具观察网络请求。在请求参数里找到疑似加密的字段。全局搜索该字段名定位到 JavaScript 代码。在加密函数处下断点观察参数的输入与输出。把压缩混淆后的代码逐步还原梳理算法逻辑。用脚本模拟生成参数验证结果。这套流程有两个明显痛点第一混淆代码可读性差人眼阅读效率很低第二每个站点的参数生成逻辑都不同大量的“找函数、抠算法”工作无法复用。AI 辅助逆向并不是简单地“把代码粘贴给 ChatGPT 问一问”而是让大模型作为分析中枢通过 MCP 调用浏览器、文件系统、命令执行等工具再依据 skills 里预定义的步骤自动完成从“打开页面”到“输出报告”的完整闭环。1.2 MCP 是什么MCP 的全称是 Model Context Protocol即模型上下文协议是一种开放协议主要解决“大模型如何与外部工具、数据源标准化通信”的问题。可以这样理解大模型本身像一个只有大脑的专家你问他问题他能回答但他不能直接打开网页、读取你电脑上的文件、执行命令。MCP 相当于给这位专家接上了“手”和“眼”让它真正具备操作外部环境的能力。MCP 的架构中通常有三个角色MCP Server提供具体能力的服务端比如浏览器控制、文件读取、Shell 命令执行、数据库查询等。MCP Client负责连接大模型和 MCP Server 的客户端负责转发工具调用请求。Tools、Resources、PromptsMCP Server 对外暴露的三类能力其中 Tools 是最常用的也就是大模型可以主动发起的工具调用。一个简单类比是MCP Server 是“工具箱”大模型是“工人”。工人不会自己变出工具但他可以通过标准接口从工具箱里取用工具干完活再放回去。1.3 Skills 是什么Skills 在不同产品里有不同叫法比如 Claude Skills、Agent Skills、Codex Skills本质上都是同一类东西一份结构化的指令文档用来告诉大模型“在某个特定任务上应该按照什么步骤执行”。Skills 通常包含以下内容任务描述这个 Skill 解决什么问题。触发条件什么情况下应该使用这个 Skill。输入要求任务开始前需要准备哪些信息。执行步骤从开始到结束的具体操作流程。输出格式最终结果应该以什么形式呈现。约束条件哪些操作不能做哪些边界必须遵守。Skills 的核心价值是解决大模型“自由对话很强但稳定执行特定流程很弱”的问题。同样是定位一个加密参数你直接提问模型可能给出五种不同风格的答案但如果你给它一份写好的 Skill它会严格按照步骤执行每一步的输出也更加可控。1.4 Agent Skill 与 MCP 的区别是什么这是很多人一开始容易混淆的地方我平时也经常被问到“MCP 和 skills 到底有什么区别”。两者定位完全不同维度MCPSkills定位接口层解决工具接入问题方法层解决任务流程问题本质一种通信协议和运行时一份结构化指令文档作用让大模型能调用外部工具让大模型知道任务怎么拆解存在形式MCP Server 进程、SDKMarkdown 文件、规则目录协作关系提供“能力”提供“流程”简单总结MCP 解决的是“能不能做到”skills 解决的是“怎么做得更规范”。实际项目里两者经常配合使用比如用 MCP 调用浏览器用 skills 规定“打开页面后先执行什么、再分析什么、最后输出什么”。1.5 为什么 AI 逆向最近特别火AI 逆向热度上升背后是几件事同时成熟了大模型对代码的理解能力越来越强尤其是对 JavaScript 混淆代码的还原能力已经相当可观。MCP 生态快速发展Playwright MCP、自定义 MCP Server 等工具让大模型可以直接操控浏览器。Codex、Claude Code 等 Agent 形态的 CLI 工具快速普及开发者可以在终端里直接和“会动手的 AI”对话。前端安全测试领域有大量重复性代码定位工作天然适合交给 Agent 来做。所以说AI 逆向不是玄学而是工具链成熟之后的必然趋势。2. 环境准备与版本说明2.1 推荐工具链由于每个人的开发环境和目标场景不同下面给出的是一套常见环境的参考方案版本需要根据你的项目实际情况调整。操作系统Windows 10/11、macOS 或 Linux 均可文中的命令以 macOS/Linux 风格为主。运行环境Node.js 18Python 3.9。Agent 客户端Claude Code、Codex CLI、Cursor 或其他支持 MCP 的 Agent 工具。MCP Server可以使用社区已有的 Playwright MCP也可以按本文示例自己写一个 Node.js 或 Python MCP Server。浏览器调试工具Chrome DevTools用于抓包分析和断点调试。测试目标强烈建议使用本地搭建的 Demo 站点或明确获得对方授权的测试环境。2.2 安装基础依赖以 Python MCP SDK 为例安装命令如下pip install mcp如果你使用的是 Node.js 体系也可以通过 npm 全局安装相关 SDKnpm install -g modelcontextprotocol/sdk安装完成后可以检查一下版本python -m mcp --version需要提醒的是MCP 是一个快速迭代的协议不同版本的 SDK 在 API 细节上可能有差异。本文示例代码里的写法以当前主流版本为准如果你用的是更新或更旧的版本请对照官方文档做少量调整。2.3 示例项目结构为了让后面的实战更清晰我先把整体目录结构列出来ai-reverse-lab/ ├── mcp-servers/ │ ├── analyze-mcp-server/ │ │ └── server.py │ └── browser-mcp-server/ ├── skills/ │ ├── analyze-js-function.md │ ├── trace-encrypt-param.md │ └── slider-captcha-review.md ├── config/ │ └── mcp-config.json └── scripts/ └── extract-params.py这个结构里mcp-servers放的是自己编写的 MCP Serverskills放的是给大模型使用的流程指令config放 Agent 的 MCP 配置文件scripts放一些辅助脚本。3. 核心原理解析3.1 大模型通过 MCP 调用工具的完整流程先来看一个标准流程。当你在 Agent 客户端里输入一条指令比如“打开示例页面找到搜索接口的加密参数”大模型并不是直接把结果吐给你而是会经历多轮“思考-调用-观察”的循环大模型分析用户指令判断需要哪些工具。Agent 通过 MCP Client 向 MCP Server 发起工具调用请求。MCP Server 执行具体操作比如打开浏览器、执行 JS、读取文件。MCP Server 将操作结果返回给 Agent。大模型把结果合并进上下文继续推理决定下一步动作。重复循环直到任务完成。这个流程和人类开发者的工作方式很像先看页面再查请求再定位代码再还原逻辑。区别在于大模型可以在一分钟内完成几十轮的“分析-操作”循环效率远超人工。3.2 最小可运行的 MCP Server 示例为了让你真正理解 MCP Server 的原理下面用一个 Python 示例实现一个最小 MCP Server它对外暴露两个工具读取本地文件、执行 Shell 命令并返回输出。# 文件路径mcp-servers/analyze-mcp-server/server.py import asyncio import subprocess import mcp.server.stdio import mcp.types as types from mcp.server import Server from mcp.server.models import InitializationOptions app Server(analyze-mcp-server) app.list_tools() async def list_tools() - list[types.Tool]: return [ types.Tool( nameread_file, description读取指定路径的文本文件内容, inputSchema{ type: object, properties: { path: {type: string, description: 文件绝对路径} }, required: [path], }, ), types.Tool( namerun_command, description在本地 Shell 中执行命令并返回标准输出, inputSchema{ type: object, properties: { command: {type: string, description: 要执行的命令} }, required: [command], }, ), ] app.call_tool() async def call_tool(name: str, arguments: dict) - list[types.TextContent]: if name read_file: path arguments.get(path, ) try: with open(path, r, encodingutf-8) as f: content f.read() return [types.TextContent(typetext, textcontent)] except Exception as e: return [types.TextContent(typetext, textf读取文件失败: {e})] if name run_command: command arguments.get(command, ) try: result subprocess.check_output( command, shellTrue, textTrue, stderrsubprocess.STDOUT, timeout30, ) return [types.TextContent(typetext, textresult)] except subprocess.TimeoutExpired: return [types.TextContent(typetext, text命令执行超时已终止)] except Exception as e: return [types.TextContent(typetext, textf命令执行失败: {e})] return [types.TextContent(typetext, textf未找到工具: {name})] async def main(): async with mcp.server.stdio.stdio_server() as (read_stream, write_stream): await app.run( read_stream, write_stream, InitializationOptions( server_nameanalyze-mcp-server, server_version0.1.0, ), ) if __name__ __main__: asyncio.run(main())这段代码有三个关键部分list_tools()向客户端声明这个 Server 提供了哪些工具以及每个工具的输入参数格式。大模型看到这些信息后才知道什么时候该调用哪个工具。call_tool()实际执行工具逻辑。入参是工具名和参数返回值统一封装成TextContent列表。main()启动 stdio 通信。MCP Server 通常通过标准输入输出与 Agent 客户端通信所以不需要额外开 HTTP 端口。需要特别说明的是run_command工具在真实项目里必须加白名单和路径校验不能把所有命令都暴露给大模型否则风险很大。这一点我会在后面的最佳实践部分展开。3.3 如何设计一份高质量的 Skills 文档一份好的 skills 文档应该让大模型“照着做就能稳定产出”。下面是一个用于定位前端加密参数的 skill 模板你可以直接复制改成自己的版本# Skill: 定位前端加密参数生成逻辑 ## 触发条件 当用户需要分析页面某个请求参数的生成逻辑时使用。 ## 输入 - 目标页面 URL - 需要分析的请求参数名 - 相关的数据包信息可选 ## 执行步骤 1. 使用 browser_mcp 打开目标页面 URL。 2. 在开发者工具中触发需要分析的请求。 3. 从网络面板复制该请求的全部参数。 4. 定位参数名对应的 JS 代码位置。 5. 读取加密函数及其调用链上下文。 6. 每读完一段代码用中文总结其作用。 7. 输出完整分析报告。 ## 输出格式 - 参数名 - 加密函数位置 - 算法流程说明 - 可能的加固建议 ## 约束条件 - 不执行任何未授权操作。 - 不改动线上业务数据。 - 只做分析不做绕过利用。这个模板里的“执行步骤”是最核心的部分。它把模糊的任务拆成了 7 个明确的子步骤大模型按步骤执行每一步都有产出最终结果自然可控。4. 完整实战搭建 AI 逆向辅助工作流4.1 创建项目结构先在你的工作目录里创建项目mkdir -p ai-reverse-lab/{mcp-servers,skills,config,scripts} cd ai-reverse-lab如果你想在 MCP Server 代码里引用外部依赖也可以为analyze-mcp-server单独创建一个虚拟环境或 package.json这里不再赘述。4.2 编写 MCP 配置文件不同的 Agent 客户端对 MCP 的配置方式不一样但核心内容是一致的告诉客户端“有哪些 MCP Server、它们怎么启动”。通用的配置格式如下{ mcpServers: { analyze-mcp-server: { command: python, args: [mcp-servers/analyze-mcp-server/server.py], env: {} }, playwright-mcp-server: { command: npx, args: [playwright/mcplatest], env: {} } } }这里有两个 Serveranalyze-mcp-server我们刚刚手写的 Python MCP Server负责文件读取和命令执行。playwright-mcp-server社区提供的浏览器自动化 MCP负责打开页面、点击元素、读取网络请求。如果你的 Agent 客户端是 Claude Code可以把这段配置合并到项目配置里如果是 Codex CLI则需要按照对应的配置文件格式进行调整。如果配置后工具没有被识别通常需要重启 Agent 进程。4.3 编写核心 MCP Server 代码在上一节已经给出了完整代码这里补充两个工程上更实用的增强点第一给run_command加白名单。假设你只允许大模型执行curl、node和python命令ALLOWED_PREFIXES (curl , node , python , python3 ) if name run_command: command arguments.get(command, ) if not command.startswith(ALLOWED_PREFIXES): return [types.TextContent(typetext, text该命令不在白名单中已拒绝执行)]第二文件读取时限制目录范围防止目录穿越import os ALLOWED_ROOT /path/to/allowed/workspace if name read_file: path arguments.get(path, ) real_path os.path.realpath(path) if not real_path.startswith(os.path.realpath(ALLOWED_ROOT)): return [types.TextContent(typetext, text路径超出允许范围已拒绝读取)]这些限制在实际工程里非常重要。因为大模型生成命令时是不可控的你必须在工具层就做好边界控制。4.4 在大模型 Agent 中注册 SkillsSkills 的注册方式和产品相关。以 Claude Code 为例通常做法是把 skill 文件放入项目的.claude/skills/目录以 Codex 为例则根据官方文档把 skills 文件放在指定目录中。不管哪种方式你都需要让 Agent 能读取到 skills 文件的内容。这里有一个通用方法直接在 Agent 的系统提示词或项目规则里引用 skills 目录比如在项目规则文件中写当需要分析页面加密参数时请严格遵循 skills/slider-captcha-review.md 中的步骤执行。这样写的好处是大模型在任何对话中只要遇到相关任务就会自动读取对应 skill 文件按里面的步骤执行。4.5 运行与验证启动手写的 MCP Serverpython mcp-servers/analyze-mcp-server/server.py用 MCP Inspector 或者其他调试工具连接确认list_tools返回了read_file和run_command两个工具。然后在 Agent 客户端里发起一条测试指令请调用 analyze-mcp-server 的 read_file 工具读取 config/mcp-config.json 的内容。如果 Agent 的返回结果里包含了配置文件内容说明 MCP 链路已经通了。接下来就可以让它结合 browser_mcp 做更复杂的分析任务。5. 典型案例滑块验证码安全分析流程5.1 滑块验证码的组成与防护思路滑块验证码的常见实现包括云片滑块这类商业方案通常由四个部分组成前端 SDK在页面中加载负责渲染滑块区域。交互层监听鼠标拖拽行为采集轨迹数据。请求层提交轨迹、坐标、时间戳等参数并附带加密指纹。校验层服务端根据轨迹相似度、坐标偏差、时间间隔、参数完整性来判断是真人还是机器。从安全研究角度看分析滑块验证码的目标不是绕过它而是搞清楚它的参数采集与校验机制帮助系统找出可以被伪造和绕过的薄弱点。这也是所有安全测试工作的核心思路先模拟攻击找到漏洞再修复加固。5.2 AI 辅助分析的完整步骤下面是一次基于授权测试环境的安全分析过程整条流程都可以交给大模型 Agent 执行步骤 1让 Agent 打开测试页面。使用 browser_mcp 打开 http://localhost:8080/index.html步骤 2让 Agent 触发滑块事件并抓包。在页面上找到滑块元素按下鼠标并拖拽到终点然后读取网络面板中所有请求筛选出包含滑块参数的请求。步骤 3定位参数生成逻辑。请求参数中有一个 enc 字段。请在页面源码里搜索 enc找到它对应的生成函数并读取该函数的上游调用代码。步骤 4让 Agent 分析加密函数。请分析这段加密函数它使用了什么算法输入是什么输出是什么有没有容易被伪造的特征步骤 5输出分析报告。请按照 skills/slider-captcha-review.md 的格式输出报告包括函数位置、算法还原、参数构成和加固建议。整个过程里大模型不只回答问题还会主动调用浏览器、读取文件、分析代码。你只需要在关键节点补充授权信息或者对模型的某些判断做二次确认。5.3 分析报告中应该包含哪些内容一份合规的安全分析报告至少要包含以下模块模块说明参数概览提交参数列表标注哪些参数疑似加密加密函数定位参数对应函数在 JS 文件中的位置算法还原对加密函数的逻辑拆解说明输入输出弱点评估哪些参数容易被猜测、哪些校验可被绕过加固建议服务端二次校验、轨迹可信度判断等测试边界本次测试是否获得授权、测试范围有了这份报告开发团队就能针对性地加固服务端校验而不是只在前端做无意义的加密混淆。5.4 注意分析不等于利用这里必须强调一条安全红线在滑块验证码分析中完整还原轨迹采集和加密逻辑后确实可能写出模拟拖拽的脚本但这属于“验证机制有效性”的测试手段。如果没有获得授权编写、分发或使用这类绕过脚本是明确的违规行为。本文只讨论“如何通过分析发现问题并加固”不提供任何绕过利用代码。6. 常见问题与排查思路在实际搭建 MCP skills 工作流时有几个高频问题这里整理成一张排查表问题现象常见原因解决思路MCP Server 启动报错Python/Node 版本过低或 SDK 依赖缺失检查 Python 3.9 / Node 18重新安装依赖Agent 中工具注册不上MCP 配置文件路径错误或 Agent 未重启检查 mcpServers 配置格式重启 AgentFigma MCP 工具在 Codex 中注册不上工具名冲突或 CLI 版本兼容问题确认 Codex 版本升级到最新版使用唯一工具名大模型始终不调用工具模型本身不支持 function calling换用支持工具调用的模型 APIskills 文件不生效文件放在错误目录或格式不符合要求确认 Agent 的 skills 目录约定检查文档格式中文代码输出乱码文件编码不一致统一使用 UTF-8读取文件时指定 encoding命令执行超时脚本运行时间过长在 call_tool 中增加超时参数或拆分任务读取文件时提示权限拒绝路径校验逻辑过严检查 ALLOWED_ROOT 配置放宽到实际工作目录如果你遇到的问题不在表里建议按下面顺序排查先确认 MCP Server 本身能否独立运行。再确认 Agent 是否成功注册了这个 Server。然后在 Agent 里输入一个最简单的工具调用指令测试。最后才让 Agent 执行复杂任务避免一开始就引入太多变量。7. 最佳实践与工程建议7.1 安全边界必须前置使用这套工作流时最重要的一条准则是只分析你有权分析的系统。建议在你自己的本地 Demo 或者公司授权的测试环境里练习。既然你已经在动手搭建 AI 辅助逆向工作流意味着你有能力影响真实系统的安全那么把边界意识刻进流程里就显得格外重要。7.2 MCP Server 设计规范MCP Server 是对外暴露能力的入口设计时建议遵循以下规范最小权限原则只暴露当前任务真正需要的工具不要一个 Server 实现所有功能。命令白名单凡是命令执行类工具必须校验命令前缀或参数范围。路径校验文件读取、写入类工具必须限制在指定工作目录内。日志审计记录每一次工具调用的时间、参数和返回值方便事后追溯。超时控制对所有外部调用设超时避免 Agent 无限等待。输入限制对传入参数做类型和长度检查防止异常数据导致崩溃。7.3 Skills 编写规范Skills 是让大模型稳定输出的关键编写时要注意一个 Skill 只解决一个问题不要贪多。描述要具体避免“分析一下”“看一看”这类模糊指令。每一步都要有明确的输入和输出。加入错误处理分支比如“如果找不到参数应该怎么继续”。明确安全约束防止大模型在自由发挥时越界。7.4 大模型输出必须人工复核大模型虽然有很强的代码理解能力但它仍然可能“一本正经地胡说八道”。在安全分析场景里这个问题更危险如果你完全信任大模型给出的算法还原结论可能会把错误的判断写进报告影响后续加固决策。所以每次大模型输出关键结论后建议你至少做一次人工复核打开对应代码确认函数名、调用关系和算法逻辑是否与报告一致。7.5 生产环境注意事项如果你计划把这套工作流接入团队内部的测试流程下面几件事要提前规划MCP Server 的部署位置要和生产环境隔离避免误操作污染线上数据。所有命令执行类工具要限制在隔离容器或虚拟机构建。大模型的 API 调用成本要做预算因为复杂的分析任务可能触发几十上百次工具调用。定期更新 MCP SDK 和浏览器自动化组件避免版本过旧导致兼容问题。8. 总结与学习路线这篇文章从概念到实战完整介绍了如何用 MCP 和 skills 搭建一条 AI 辅助逆向的工作流。你现在应该能理解 MCP 与 skills 的定位差异能自己写一个最小 MCP Server也知道如何让大模型按照 skill 文档执行多步骤分析任务。如果你打算继续深入可以参考下面的学习路线先跑通一个最小 MCP Server确认工具调用链路可用。阅读 MCP 官方文档中关于 Tools、Resources、Prompts 的详细说明。自己动手写一个简单 skill比如“分析 JS 函数调用关系”放到 Agent 里测试效果。在本地 Demo 站点上练习滑块机制分析重点理解轨迹采集与校验逻辑。阅读优秀开源项目的 skill 设计学习别人如何拆分任务、定义输出格式。在授权环境中做一次完整的前端安全测试输出合规报告。整个 AI 辅助逆向的生态还在快速发展Claude Code 的 skills 官方文档、各类 MCP Server 社区项目几乎每周都有更新。建议你在实践过程中保持关注官方文档不要依赖某篇文章里的固定写法。工具会变但“让大模型具备工具使用能力”的思路不会过时。如果你在搭建过程中遇到工具注册失败、MCP Server 启动异常、大模型不按 skill 执行这类问题欢迎按本文第六章的排查表先自查一遍。很多问题其实都是配置文件路径、版本兼容和 Agent 未重启造成的不需要太焦虑。