news 2026/10/28 22:28:50

AI驱动的调试循环深度解析:AI_JS_DEBUGGER如何用大模型自动选择单步入/步出/步过

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI驱动的调试循环深度解析:AI_JS_DEBUGGER如何用大模型自动选择单步入/步出/步过

【免费下载链接】AI_JS_DEBUGGER

基于Chrome开发者协议(CDP)的AI自动化JavaScript逆向分析工具

项目地址:https://gitcode.com/gh_mirrors/ai/AI_JS_DEBUGGER
点击查看免费下载

AI_JS_DEBUGGER 是一款基于 Chrome 开发者协议(CDP)的 AI 自动化 JavaScript 逆向分析工具,它能把"断点触发 → 收集上下文 → 大模型决策 → 执行步调"做成一个全自动调试循环,由大模型在每一步自动选择单步入(step_into)、单步出(step_out)或单步跳过(step_over),最终自动产出加解密分析报告。这篇文章带你深入拆解这套 AI 调试循环的工作原理。

一、手动单步调试有多痛苦?

做前端 JS 逆向时,常规姿势是:打断点 → 在 DevTools 里手动点"单步跳过/单步进入"按钮 → 一路盯着变量 → 关键参数(如加密密钥 key、iv)一闪而过就错过了。

痛点很直观:

手动调试的痛点AI_JS_DEBUGGER 的解法
不知道该步入还是步过,容易钻进无关函数大模型根据代码语义自动决策步调
人工盯变量,容易漏掉 key/iv 等关键值每次暂停自动抓取作用域变量喂给模型
陷入混淆代码/循环出不来内置"嵌套过深就 step_out"的决策规则
调试完还要人工整理结论自动汇总日志并生成 Markdown 分析报告

核心思路一句话:把"人肉点单步按钮"这件事,交给大模型 + CDP 协议来做。

二、整体架构:三层协作的调试循环

整个循环由三部分组成,源码入口都在仓库里可以找到:

  1. CDP 客户端层:CDPClient 封装了与 Chrome/Edge 的通信,负责启动/连接浏览器、注入 Hook 脚本、发送 CDP 命令(下断点、单步、取变量等)。
  2. 调试循环调度层:continuous_debugging() 是整个 AI 调试循环的主函数,文档注释写得很清楚——"通过AI分析断点处的代码和变量状态,自动决定下一步调试操作(步入、步出或步过)"。
  3. AI 决策层:AIManager.get_debug_instruction() 把调试信息打包成 Prompt 发给大模型(兼容 OpenAI 格式,Qwen、DeepSeek、GPT、Claude 等均可),解析模型返回的 JSON 指令。

循环骨架非常简洁(对应 debugging_loop()):

  1. 等待断点触发(Debugger.paused事件)
  2. 收集断点处的调试信息(调用堆栈 + 代码上下文 + 作用域变量)
  3. AI 分析并返回下一步操作指令
  4. 执行 AI 决定的 CDP 步调命令
  5. 重复,直到超时或出错

下面按这个顺序逐层拆解。

三、第一步:断点暂停,收集"调试上下文"

断点触发后,真正干活的是 process_debugger_paused(),它负责把一次暂停"翻译"成大模型能读懂的文本。收集内容包括:

  • 暂停位置:函数名、脚本 URL、行列号;
  • 代码上下文:由 get_code_context() 截取断点前后约 150 字符(可通过debug.context_chars配置),并在当前位置插入➤标记,让模型一眼看到"执行到哪了";
  • 调用堆栈:最多 3~5 帧(内存紧张时自动降级),避免上下文爆炸;
  • 作用域变量:通过Runtime.getProperties递归抓取局部/块级作用域,带多重过滤——跳过window、DOM 节点、函数等噪音,优先保留key、iv、token、data等加密相关属性名;
  • 混淆检测:detect_jsvmp_patterns() 会静态分析当前脚本,识别大量 switch-case、密集数组访问、eval/Function 等 JSVMP 特征,并把"建议用 step_over 而非 step_into 减少进入混淆代码"这样的提示直接写进上下文——这等于给大模型递了一份"作弊小抄"。

所有信息压缩成一段纯文本后写入调试会话文件,同时作为本轮的 AI 输入。一个工程细节:如果压缩后的调试信息超过 100KB,会按 50KB 分片并只取前两个分片(见 ai_debugger.py#L326-L334),防止超长大模型窗口。

四、第二步:大模型的"决策大脑"

这是全文最核心的一环。AI_JS_DEBUGGER 通过 get_debug_instruction() 向大模型提问,构造的 messages 分三部分:

  1. 系统提示词:定义角色(JavaScript 逆向分析专家)和三个可选动作;
  2. 历史上下文:用一个容量为 3 的 deque 记录最近 3 次暂停的上下文摘要,随请求一起带上,让模型具备"短期记忆",避免对同一段代码反复做出相同决策;
  3. 当前调试信息:即第三步收集的压缩上下文。

提示词本身也经过精心设计,写在 config.yaml 的prompts.debug里,可自由修改。它告诉模型重点识别这些加密线索:

  • 函数名含encrypt/decrypt/AES/RSA/MD5/SHA/Crypto等关键词;
  • JS 特有加密手段:btoa/atob、TextEncoder、crypto.subtle;
  • 位运算加密:XOR(^)、位移(<<、>>)、按位与或;
  • 网络请求函数:fetch/XMLHttpRequest/axios/getSign/getToken等;
  • 主流加密库:CryptoJS、WebCrypto、jsencrypt、sjcl 等;
  • 混淆特征:eval/Function 动态执行、控制流扁平化、单字符变量名。

并且给出了精确决策规则,例如:

  • step_over:首次遇到加密函数调用或 eval/Function 动态代码
  • step_over:在加密函数内部的非核心步骤或复杂混淆代码
  • step_out:嵌套超过 3 层或陷入重复循环时

模型的输出被强约束为 JSON 格式,且三个操作中只能有一个为true:

{ "step_into": false, "step_out": false, "step_over": true, "reason": "当前处于混淆的 switch 分支,避免深入" }

解析逻辑做了双重保险(ai_manager.py#L124-L138):优先按 JSON 解析;如果模型返回的不是合法 JSON,就退化成对返回文本做关键词匹配;任何情况下出错都兜底返回step_over——宁可保守地"跳过一行",也不让循环卡死。

五、第三步:指令映射为 CDP 单步命令

拿到instruction后,调度层做一次简单的字符串匹配,映射到 CDP 协议命令(ai_debugger.py#L356-L361):

大模型指令CDP 命令行为
包含step_intoDebugger.stepInto步入函数内部
包含step_outDebugger.stepOut步出当前函数
其他Debugger.stepOver执行当前行,停在下一行

执行时会检查浏览器是否仍处于暂停状态(错误信息含while paused则跳过本次步调),每次步调结果都会通过 WebSocket 推送到 Web 界面,你可以实时观察 AI 的每一次"走位"。

值得一提的是,这套步调能力同时开放给了人工接管:Web 界面背后是 step-into / step-out / continue 三个 REST 接口,AI 自动循环和手动单步共用同一套 CDP 通道,随时可以"人机切换"。

六、闭环收尾:超时退出与自动出报告

循环并非无限运转,内置了两道保险:

  1. 暂停超时:首次等待断点给 60 秒,之后每次 30 秒(ai_debugger.py#L218-L228)。长时间没触发断点即视为调试结束;
  2. 总时长上限:整个调试任务包在asyncio.wait_for中,默认 600 秒封顶。

一旦结束,收尾流程自动完成三件事:

  • 把 Hook 脚本捕获的[debug]日志(AES/RSA 等加解密的 key/密文/明文)追加写入调试会话文件(ai_debugger.py#L384-L403);
  • 调用 debugger_analyze() 把完整调试数据交给"分析模型"(长上下文模型优先),生成 Markdown 分析报告;
  • 报告落盘到result/report/目录,可通过 Web 界面管理,例如仓库中的示例报告 analysis-2025-11-17-17-15-40.md——其中不仅还原了 AES-CBC 加解密逻辑和硬编码密钥,还直接附了一段可用的 mitmproxy 解密脚本。

至此,"断点 → 上下文 → 模型决策 → 单步执行 → 报告"的完整闭环打通,全程无需人工点击任何单步按钮。

七、快速上手与调优建议

启动项目(Python 3.11+,需 Chrome/Edge 与一个兼容 OpenAI 格式的大模型 API Key):

git clone https://gitcode.com/gh_mirrors/ai/AI_JS_DEBUGGER cd AI_JS_DEBUGGER pip install -r requirements.txt python3 run_flask.py

然后访问http://localhost:5001,在 Web 界面选择断点模式(固定 JS 文件断点或 XHR 请求断点)、配置模型即可开始。

几条实用建议:

  • 模型选择:决策环节每次只处理压缩后的上下文,小快模型(如 qwen-turbo、gpt-mini 级)就够用且省成本;分析报告环节可单独指定长上下文模型,两者在 config.yaml 中分开配置;
  • 断点选不好?用 XHR 模式,系统会自动回溯顶层调用堆栈并重新下断点,省去"找不到断点位置"的烦恼;
  • 想改 AI 的"性格":直接编辑prompts.debug里的决策规则,比如把"嵌套超过 3 层才 step_out"改成更激进的阈值;
  • 压缩成一行 JS 怎么断点:取消浏览器 JS 美化后查看断点行列号(行数一般为 0),FAQ 里有详细说明(见 README.md)。

八、总结

AI_JS_DEBUGGER 的调试循环设计得非常"工程化":

  1. 上下文采集有边界——限制堆栈帧数、变量属性数、分片截断,喂给模型的是"高信噪比"信息;
  2. 决策有强约束——JSON 输出格式 + 明确的决策规则 + 三级降级解析,出错永远兜底step_over;
  3. 循环有保险丝——暂停超时 + 总时长上限,绝不失控;
  4. 结果可沉淀——每轮调试自动产出可复用的分析报告和 mitmproxy 脚本。

对新手而言,这套循环相当于一个会看 DevTools 的"副驾驶":你只负责下好断点,剩下的步入、步出、步过,交给大模型。这也是"AI + CDP"结合在 JS 逆向场景里一个相当成熟的落地范式。

【免费下载链接】AI_JS_DEBUGGER

基于Chrome开发者协议(CDP)的AI自动化JavaScript逆向分析工具

项目地址:https://gitcode.com/gh_mirrors/ai/AI_JS_DEBUGGER
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 22:27:33

MCP工具写订单超时重试如何避免重复单?幂等键设计与落地实践

1. 订单写入链路里&#xff0c;超时重试到底在赌什么做 ERP 和 OA 系统对接的同学&#xff0c;大概率都遇到过这个场景&#xff1a;通过 MCP 工具调用下游订单服务写单&#xff0c;网络抖动或者下游处理慢&#xff0c;客户端等不到响应就超时了。这时候摆在面前的选择很尴尬——…

作者头像 李华
网站建设 2026/10/28 22:25:35

单调栈解决LeetCode每日温度问题与工程实践

1. 问题背景与需求分析每日温度问题&#xff08;LeetCode 739&#xff09;是算法面试中的经典题目&#xff0c;要求根据每日气温列表计算需要等待多少天才能迎来更温暖的天气。这个问题看似简单&#xff0c;但考察了开发者对单调栈这一数据结构的理解和应用能力。在实际业务场景…

作者头像 李华
网站建设 2026/10/28 22:24:58

多模型API统一管理实战:网关架构、鉴权设计与路由策略

1. 多模型接入的混乱现状&#xff1a;从"能跑就行"到"管不过来"我最早接触多模型接入是在一个内部知识库项目上&#xff0c;当时的需求很简单&#xff1a;让系统能回答员工关于公司制度的问题。最开始只接了智谱的API&#xff0c;代码不到五十行就跑通了。…

作者头像 李华
网站建设 2026/10/28 22:23:24

离线轻量级GIF工具:编码内核、体积优化与批量处理实践

1. 先想清楚&#xff1a;这个离线轻量级动图工具到底在解决什么麻烦做动图这件事&#xff0c;说小很小&#xff0c;说烦是真烦。你在网上随手拖一个在线转换站&#xff0c;上传、转码、下载&#xff0c;三步搞定&#xff0c;看起来毫无门槛。但只要你的工作流稍微正经一点——比…

作者头像 李华
网站建设 2026/10/28 22:22:13

Agent Skills开发实战:从基础到生产环境部署

1. Agent Skills 基础概念解析Agent Skills&#xff08;智能体技能&#xff09;是当前AI领域最热门的技术方向之一&#xff0c;它让AI系统具备了模块化、可组合的能力单元。简单来说&#xff0c;就像给机器人安装不同的"技能卡"&#xff0c;每张卡片代表一项特定能力…

作者头像 李华
网站建设 2026/10/28 22:21:50

信息系统项目管理师第四版课后题:选择题挖坑逻辑与归属判断

简介&#xff1a;面向备考信息系统项目管理师&#xff08;高项&#xff09;的考生与授课教师&#xff0c;这份资源将第四版官方教材课后习题整理为可编辑的Word文档&#xff0c;便于按章节练习、改编组卷与错题标注。内容覆盖信息性质、工业互联网体系、智能制造能力成熟度模型…

作者头像 李华