微信小程序调试利器:Frida+CDP协议桥接双平台工具

admin 2026-05-07 05:45:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了一款基于Frida与ChromeDevToolsProtocol(CDP)的微信小程序动态调试框架first,支持Windows与macOS双平台,提供GUI与CLI两种模式。工具核心功能包括通过CDP代理桥接实现小程序调试、路由枚举与导航控制、云函数动态Hook与静态扫描、WXAPKG包体解密解包及敏感信息正则扫描,并支持自定义UserScript注入,适用于小程序安全研究场景。 综合评分: 69 文章分类: 移动安全,逆向分析,安全工具,Web安全


cover_image

微信小程序调试利器:Frida + CDP 协议桥接双平台工具

棉花糖糖糖 棉花糖糖糖

棉花糖网络安全工具箱

2026年5月5日 11:04 四川

在小说阅读器读本章

去阅读

本工具仅供安全研究与学习使用,请勿用于未授权的目标,使用者须自行承担相关法律责任。

First 是一款面向微信小程序安全研究场景的动态调试框架,基于 Frida 动态注入引擎与 Chrome DevTools Protocol(CDP)代理架构实现。工具以 Python 为核心 runtime,支持 Windows 与 macOS 双平台,同时提供 GUI(PySide6)与 CLI 两种交互模式。

重点导读技术架构

PART 01核心引擎

DebugEngine 类承担运行时总控角色,内部调度三个核心子系统协同工作。

Debug Server:基于 WebSocket 的长连接服务端,运行于 ws://0.0.0.0:9421。小程序客户端通过该端口接入调试协议体系,接收来自工具侧注入的 CDP 指令与 UserScript 脚本。消息编码采用 Protobuf 二进制格式,经 chromeDevtools category 封装后通过自定义 Protobuf Message 结构体传输。

Proxy Server:同样基于 WebSocket,监听可配置端口(默认 62000),负责桥接 Chrome DevTools 与小程序客户端之间的 CDP 协议数据。Proxy Server 将来自 DevTools 的 JSON 格式 CDP 命令转换为 Protobuf 二进制帧,反向同理,实现双向透明的协议转换。

Frida Session:注入模块负责将 hook.js 脚本动态注入 WeChatAppEx 进程。通过读取 frida/config/{platform}/{addresses.<version>.json} 版本地址配置,对指定进程 PID 附加并执行 JavaScript 运行时注入。Windows 平台通过 PPID 频率统计定位主进程,macOS 平台通过 pgrepdefaults read 组合方案实现进程发现与版本检测。

PART 02消息总线

DebugMessageBus 作为 central event bus 连接三个子系统。CDP 命令经 Proxy Server 接收后,通过 emit_proxy_message 分发至 Debug Server,再经 Protobuf 封装后发送至小程序侧。反向路径为从小程序侧接收 Protobuf 解包后的 CDP 结果事件,经 emit_cdp_message 推送至 DevTools 客户端。

重点导读核心功能

PART 03路由枚举与导航

MiniProgramNavigator 模块通过注入 universal navigator JavaScript 至小程序上下文,建立 window.nav 对象控制层。该对象封装了 wx.navigateTowx.redirectTowx.reLaunchwx.switchTab 等路由 API,提供统一调用接口与安全导航链(reLaunch → switchTab → redirectTo fallback)。

路由枚举功能通过 fetch_config 方法读取小程序配置文件,提取 pagestabBarPagesappidentryPagePath 等关键信息,生成完整页面列表供后续调试使用。

PART 04云函数监控

CloudAuditor 模块实现两种云函数调用捕获机制。

动态 Hook:注入 cloud_audit_inject.js JavaScript 运行时,通过 Hook wx.cloud.callFunctionwx.cloud.callContainer 实现全局调用拦截。每次调用触发时记录函数名、传入参数、调用结果,形成增量捕获队列。模块通过轮询 getHookedCalls() 获取新捕获记录,并自动检测 Hook 丢失状态(页面切换后需重新注入)。

静态扫描:调用 CDP Debugger.getScriptSource 接口获取已加载脚本源码,通过正则提取 callFunction 调用特征、collection 数据库引用、uploadFile/downloadFile 等存储操作,生成云函数引用清单。

PART 05包体解包与敏感信息扫描

wxapkg.py 实现微信小程序包格式的纯 Python 解密与解包。加密格式采用 “V1MMWX” Magic Header 标识,前 1024 字节经 AES-256-CBC 解密(Key 通过 PBKDF2-SHA1 派生),后续字节流经 appID 后两字符进行 XOR 解密。解包后提取文件列表供后续分析。

extractor.py 模块内置 700+ 正则规则库,涵盖以下检测维度:

  • IP 地址、端口、域名、URL 识别
  • 身份证号、手机号、邮箱等个人隐私信息
  • JWT Token、加密算法引用、密钥/凭证模式
  • nuclei 规则库派生的 API Key、Secret Key、Access Token 模式

支持多进程并发扫描目录,输出 JSON 与 HTML 两种报告格式。

PART 06UserScript 注入

支持将 .js 脚本放置于 userscripts/ 目录或通过 --script 参数指定,运行时自动注册至小程序页面上下文。注册时序上,工具在 setupContext 事件触发后立即执行注入,并设置 Debugger.setSkipAllPauses(true) 防止断点卡住初始化流程。

重点导读双端支持

PART 07Windows

支持 WMPF 版本覆盖 11581 至 19201,推荐使用 4.1.0.30 版本。Frida 注入目标进程为 WeChatAppEx.exe,版本信息从进程路径提取的最后一个数字目录名确定。工具根目录下的 启动.bat 提供一键启动入口。

PART 08macOS

支持 WMPF 版本 18152、18788,推荐 4.1.7.30。因系统安全机制限制,Frida 注入可能需要关闭 SIP(系统完整性保护)或强制重签名 WeChat 应用。启动.sh 提供一键启动入口。

重点导读快速启动

GUI 模式:

bashpython gui.py    # Windows
python3 gui.py  # macOS

CLI 模式:

bashpython main.py --cdp-port 62000
python main.py --debug-main --debug-frida

Chrome DevTools 连接地址:devtools://devtools/bundled/inspector.html?ws=127.0.0.1:62000

重点导读截图预览

PART 09主界面

主界面

PART 10路由导航

路由导航

PART 11云函数分析

云函数分析

PART 12调试开关

调试开关

PART 13敏感信息提取

敏感信息提取-1

敏感信息提取-2

敏感信息提取-3

本公众号非项目作者,仅做技术分享。

本文介绍的项目开源地址如下:

bashhttps://github.com/Spade-sec/First

广告时间

低价考证包括但不限于CISP系列、PMP等等国内网安证书、网络安全交流群请关注公众号后点菜单栏的找棉花糖。

☟上下滑动查看更多


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:棉花糖网络安全工具箱 棉花糖糖糖 棉花糖糖糖《微信小程序调试利器:Frida + CDP 协议桥接双平台工具》

评论:0   参与:  0