项目介绍

WeDecode 是一款专为微信小程序设计的反编译工具,其主要目的是实现 wxapkg 包的自动化源代码还原。通过该工具,用户可以轻松地将打包后的小程序文件还原为可读的源代码结构,从而便于学习反编译原理、快速发现潜在漏洞或进行代码优化。工具强调“全自动化”,意味着用户无需手动干预复杂的过程,即可完成从解包到代码美化的全流程。

该工具适用于合法场景,例如安全研究、教育学习或个人项目审计,尤其在线上代码安全审计方面,能帮助开发者扫描小程序包中的潜在风险,实现快速漏洞发现。

关键功能与特点

WeDecode 的功能设计高度针对微信小程序的生态,支持大多数小程序的完美还原,包括小程序和小游戏。以下是其核心特点:

  • 全面支持类型还原

    • 小程序还原。
    • 小游戏还原。
    • 分包代码和插件代码还原。
  • 完美还原目录结构和源代码

    • JS 代码还原:恢复 JavaScript 逻辑代码。
    • WXML 代码还原:恢复微信小程序的 XML 结构文件。
    • WXSS 代码还原:恢复样式表,支持 rpx 或 px 单位解析(默认 rpx)。
    • WXS 代码还原:恢复微信小程序的脚本模块。
    • JSON 文件还原:恢复配置文件,如 app.json 或 app.config.json。
    • 其他类型文件还原:包括媒体资源、WASM 文件、Workers 等。
  • 自动化与美化输出

    • 所有还原代码均经过美化处理,便于阅读和分析。
    • 小程序包扫描:自动检测包结构和依赖。
    • Polyfill 功能:允许用户自定义模块替换,在包目录下创建 polyfill 文件夹,若模块路径匹配,将使用自定义 JS 模块覆盖原模块,实现灵活定制。
  • 可视化操作

    • 支持 UI 界面,简化操作流程,无需命令行经验。
  • 线上代码安全审计

    • 通过还原源代码,用户可以进行静态分析,快速识别安全漏洞,如敏感数据泄露、逻辑错误或第三方依赖风险。该功能特别适用于线上部署的小程序审计,帮助开发者在不影响生产环境的情况下进行安全检查。

未来计划包括小程序自动解密功能(当前多数电脑端包无需解密,工具将根据需求跟进)。

安装步骤

WeDecode 依赖 Node.js 环境(推荐 v18+ 版本),安装过程简单,支持 Windows、macOS 和 Linux 平台。

准备环境

  • 确保设备安装 Node.js(下载地址:https://nodejs.org/)。
  • 如果使用 npm 源较慢,可切换到淘宝镜像:npm config set registry https://registry.npmmirror.com

全局安装

  • Windows:npm i wedecode -g
  • macOS/Linux:sudo npm i wedecode -g

安装完成后,在任意终端输入 wedecode 即可使用。

使用指南

WeDecode 提供多种启动方式,适应不同用户需求,包括在线运行、本地命令行和可视化 UI。

在线运行方式

无需本地安装,直接在 GitHub Codespaces 中运行:

  1. 访问仓库页面,点击右上角 “Use this template” -> “Open in a codespace”。
  2. 等待初始化(可能需几分钟,依赖网络)。
  3. 在终端执行 npm run ui,然后 Ctrl + 左键点击终端显示的 http://localhost:3000 链接,打开可视化页面。
    注意:对网络要求高,适合临时使用。

本地运行方式

  • 可视化 UI:输入 wedecode ui,浏览器将打开操作界面,支持拖拽文件或选择路径进行还原。
  • 命令行引导模式:直接输入 wedecode,工具会全程交互式引导用户输入参数。
  • 指定参数模式
    • 还原单个包:wedecode ./name.wxapkg
    • 还原当前目录所有包:wedecode ./
    • 还原指定目录:wedecode ./dirname
    • 指定输出目录:wedecode ./ --out ./output_path
    • 预设参数(如清空旧产物并打开目录):wedecode --out output_path --clear --open-dir

命令行选项详解

WeDecode 支持丰富的命令行参数,便于自动化脚本集成:

参数作用描述
ui启动本地可视化操作页面
<packages...>指定包路径(文件或目录)
-o, --out <path>输出路径(默认:同级 OUTPUT 目录)
--open-dir完成后打开输出目录
--clear清空旧输出产物
--px使用 px 单位解析 CSS(默认 rpx)
--unpack-only只解包,不进行反编译

输出目录结构示例

假设输入目录:

target_dir  
├── xxx.wxapkg    
├── xxx-sub.wxapkg    
└── polyfill/  
    └── @babel/    
        └── array.js    

输出结构:

OUTPUT  
├── app.json  
├── pages/  
├── components/  
└── @babel/  
    └── array.js

支持平台与示例

WeDecode 跨平台支持 Windows、macOS 和 Linux,确保开发者在不同环境中无缝使用。

示例操作

  1. 基本还原wedecode ./myapp.wxapkg – 自动还原单个包到 OUTPUT 目录。
  2. 批量处理wedecode ./apps_folder – 处理文件夹内所有 wxapkg 文件。
  3. 安全审计:还原后,打开输出目录,检查 JS/WXML 等文件,使用静态分析工具扫描漏洞。
  4. UI 模式wedecode ui – 在浏览器中上传包,点击按钮完成还原,并查看审计报告。

结语

WeDecode 作为一款高效、自动化的微信小程序源代码还原工具,不仅简化了 wxapkg 包的处理流程,还为线上代码安全审计提供了强大支持。通过其跨平台兼容性和用户友好的界面,开发者可以更便捷地进行代码分析和漏洞发现。当然,使用时务必秉持合法原则,推动小程序生态的健康发展。如果您是小程序开发者或安全从业者,不妨试用 WeDecode,探索其潜力。更多细节可直接访问 GitHub 仓库进行深入研究。

更多推荐