云计算百科
云计算领域专业知识百科平台

反编译自动化脚本(用于代码恢复与重构,网页的学习与借鉴)

github代码仓库:ssddaad/decompile-: 反编译自动化脚本(微信小程序+网页)

微信小程序反编译有点问题,网页反编译测试后没啥问题,点赞收藏不迷路。

一、环境准备

1.1 必需环境

组件版本要求说明
Python 3.9 ~ 3.13 需含 tkinter(官方安装包默认包含)
Node.js 任意版本 小程序反编译依赖,工具会自动探测路径
pip 随 Python 安装 Python 依赖包管理器

1.2 Python 依赖包

打开终端执行以下命令安装全部依赖:

pip install pycryptodome requests beautifulsoup4 lxml matplotlib jsbeautifier

各包用途说明:

包名用途哪个功能需要
pycryptodome wxapkg 解密 小程序反编译
requests HTTP 请求 网页反编译
beautifulsoup4 HTML 解析 网页反编译
lxml HTML 解析后端 网页反编译
matplotlib 雷达图绘制 全部功能(质量评估)
jsbeautifier JS 代码美化 网页反编译、源码恢复

1.3 可选工具

工具用途获取方式
jadx APK/JAR/CLASS 反编译 GitHub Releases,需 JRE 11+
pycdc Python 3.10+ 字节码反编译 GitHub(需自行编译)
ilspycmd .NET DLL/EXE 反编译 dotnet tool install ilspycmd -g
微信开发者工具 预览反编译后的小程序 官方下载

二、启动方式

方式一:双击启动(推荐)

双击项目目录中的 启动.bat 文件。

启动脚本会自动:

  • 搜索系统中带 tkinter 的 Python 解释器(Python 3.9 ~ 3.13、miniconda3、anaconda3)
  • 找到后自动启动程序
  • 若未找到,回退到系统默认 python 命令

方式二:命令行启动

cd 反编译工具目录
python wxapp_decompiler.py

启动后的界面

  • 窗口标题:反编译工具套件 — 小程序 / 网页 / 源码恢复
  • 窗口尺寸:960×720(最小 880×620)
  • 三个标签页:小程序反编译 | 网页反编译 | 源码恢复(多格式)
  • 小程序反编译和源码恢复标签页在启动时会自动执行环境自检

三、功能一:小程序反编译

3.1 获取 wxapkg 文件

wxapkg 文件是微信小程序的加密打包文件,存放位置:

新版微信(4.x)路径:

C:\\Users\\<用户名>\\AppData\\Roaming\\Tencent\\xwechat\\radium\\users\\<hash>\\applet\\packages\\

旧版微信(3.x)路径:

C:\\Users\\<用户名>\\Documents\\WeChat Files\\Applet\\

提示:先在微信中打开过的小程序才会生成缓存文件。主包通常命名为 __APP__.wxapkg。

3.2 操作步骤

步骤 1:选择文件

有两种方式选择 wxapkg 文件:

方式 A:手动浏览

  • 点击「浏览…」按钮
  • 在文件对话框中选择 .wxapkg 文件

方式 B:扫描缓存(推荐)

  • 点击「扫描缓存」按钮
  • 工具自动扫描微信缓存目录
  • 结果列表显示 6 列信息:AppID、文件名、类型、加密状态、大小、修改时间
  • 绿色高亮行为推荐的主包(__APP__.wxapkg),优先反编译主包
  • 双击列表中的任意行即可自动填入文件路径
  • 智能选包:若选择了分包但同目录存在主包 __APP__.wxapkg,工具会自动切换到主包
步骤 2:开始反编译
  • 确认文件路径正确
  • 点击「▶ 开始反编译」按钮
  • 观察日志区域的实时输出
步骤 3:等待反编译完成

反编译共 9 个步骤,全程自动执行:

步骤名称说明
[1/9] 检测加密状态 读取文件头判断是否加密(V1MMWX = 已加密)
[2/9] 解密 若已加密,调用解密脚本(需输入 AppID)
[3/9] 反编译 调用 Node.js 执行 wuWxapkg.js,保留中间文件
[4/9] 后处理 修复 app.json(分包、非法字段、iconData、pagePath 点号等)
[5/9] WXML 恢复 从 $gwx 函数还原真实页面模板(删除占位符后重新生成)
[6/9] 深度校验 补全缺失的页面四件套(.js/.wxml/.wxss/.json)、组件、图标
[7/9] 结构规范化 确保每页独立文件夹、扁平文件移入目录、清理空目录
[7.5] 清理中间文件 删除 page-frame.html 等中间文件
[8/9] 提取名称 从配置文件提取小程序名称作为输出目录名
[9/9] 整理输出 复制到桌面,以小程序名称命名
步骤 4:查看结果

反编译完成后:

  • 自动弹出质量评估雷达图和完成提示框
  • 点击「打开输出目录」查看反编译结果
  • 点击「用开发者工具打开」直接调用微信开发者工具预览

3.3 输出目录结构

反编译后的标准项目结构:

小程序名称/
├── app.js # 小程序入口
├── app.json # 全局配置
├── app.wxss # 全局样式
├── project.config.json # 项目配置
├── sitemap.json # 搜索优化配置
├── pages/ # 页面目录
│ ├── index/
│ │ ├── index.js # 页面逻辑
│ │ ├── index.wxml # 页面模板
│ │ ├── index.wxss # 页面样式
│ │ └── index.json # 页面配置
│ ├── about/
│ │ ├── about.js
│ │ ├── about.wxml
│ │ ├── about.wxss
│ │ └── about.json
│ └── …
├── components/ # 自定义组件
│ └── …
├── images/ # 图片资源
│ └── …
└── tabBar/ # TabBar 图标
└── …

3.4 使用微信开发者工具预览

  • 打开微信开发者工具
  • 选择「导入项目」
  • 项目目录选择反编译输出目录
  • AppID 填写反编译日志中显示的 AppID(或使用测试号)
  • 点击确定即可预览
  • 四、功能二:网页反编译

    4.1 操作步骤

    步骤 1:填写抓取设置
    设置项说明示例
    起始网址 要抓取的网站入口 URL https://example.com
    深度 从起始页出发的爬取层数(0-10) 2(默认)
    仅同域名 勾选后只抓取同域名下的页面 勾选(默认)
    输出目录 抓取结果的保存位置 留空则自动设为桌面

    深度说明:深度 0 = 只抓首页;深度 1 = 首页 + 首页链接的页面;深度 2 = 再往下一层。

    步骤 2:开始抓取
    • 确认设置无误
    • 点击「▶ 开始抓取」按钮
    • 若输出目录非空,会弹出确认对话框
    • 观察日志区域的实时输出
    步骤 3:等待抓取完成

    抓取流程自动执行:

    • BFS 爬取:广度优先遍历页面(最大 800 页)
    • 资源下载:自动下载 HTML 引用的所有 CSS、JS、图片、字体、媒体文件
    • 懒加载支持:识别 data-src、data-original、data-srcset 等懒加载属性
    • CSS 处理:递归下载 CSS 中的 url() 和 @import 引用的资源
    • 链接改写:所有内部链接改写为本地相对路径
    • 完整性校验:检查所有本地引用,补下载缺失资源,创建占位文件
    • 项目结构规范化:资源归类到 css/、js/、images/、fonts/、media/ 目录
    • 路由修复:补全 index.html,为缺失页面创建占位
    • 代码美化:HTML 缩进格式化、CSS 规范化、JS 美化
    步骤 4:查看结果
    • 点击「打开输出目录」查看抓取结果
    • 点击「质量评估」查看雷达图

    4.2 输出目录结构

    规范化后的标准结构:

    网站_example.com/
    ├── index.html # 首页
    ├── favicon.ico # 站点图标
    ├── about/
    │ └── index.html # 子页面
    ├── css/ # 样式文件
    │ ├── style.css
    │ └── …
    ├── js/ # 脚本文件
    │ ├── main.js
    │ └── …
    ├── images/ # 图片资源
    │ ├── logo.png
    │ └── …
    ├── fonts/ # 字体文件
    │ └── …
    └── media/ # 音视频
    └── …

    4.3 本地预览

    直接用浏览器打开输出目录中的 index.html 即可预览。所有资源引用已改为本地相对路径,无需网络即可访问。

    五、总结与建议

    反编译是一项强大但需谨慎使用的技术。在着手反编译前,建议:

  • 明确目的与合法性:确保反编译行为符合相关法律法规和软件许可协议。
  • 选择合适的工具:根据目标文件类型和具体需求选择最合适的反编译工具。
  • 结合多种分析手段:反编译结果应结合动态调试、网络抓包、内存分析等其他逆向技术进行综合判断。
  • 注重结果的可读性优化:对反编译得到的代码进行重命名、结构重构和注释补充,提高分析效率。
  • 无论是为了技术学习、安全研究还是商业合规,理解反编译的用户需求都是有效运用这项技术的第一步。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 反编译自动化脚本(用于代码恢复与重构,网页的学习与借鉴)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!