手把手教你—微信小程序抓包解密与反编译工具的使用全过程(超详细)

一:前置准备

修改微信PC端默认位置

修改微信PC端默认的小程序包位置,默认在C盘,太占内存,建议修改。

pc端打开一个小程序,尽可能点开所有的页面,让本地自动生成一个本地包,如下图所示。

找到APP.wxapkg文件,这个是加密过的,接下的流程需要使用下面的解密和逆向工具。

二:准备工具

1:解密工具

arduino 复制代码
解密工具获取:https://www.aliyundrive.com/s/y7LbrRvgHKS
wxpack是个空文件夹,用来存解密后的源码包

2、逆向工具wxappUnpacker

arduino 复制代码
逆向工具获取:https://www.aliyundrive.com/s/6YRjqatfSGY

三:正式解密

双击打开UnpackMiniApp.exe文件,选择APP.wxapkg文件进行解密操作

若出现下面的报错,提示你没有wxpack文件夹,记得新建个wxpack文件夹用于存放解密后的文件

解密成功后,查看wxpack文件夹,已经生成解密后的文件。

四:正式逆向

下面就由逆向工具wxappUnpacker出场了。正式反编译之前,确保安装了node,我们下面需要使用node安装一下要使用的依赖。

安装下面的依赖

复制代码
npm install esprima css-tree cssbeautify vm2 uglify-es js-beautify

开始逆向,确保命令行打开目录是下图所示

bash 复制代码
node ./wuWxapkg.js 主包路径
node ./wuWxapkg.js 分包路径 -s=主包路径

成功拿到源码内容:

微信小程序开发工具打开源码,试运行效果,这里如果遇到无法找到app.json文件的问题。原因是微信小程序10月开始,优化了文件结构。wxappUnpacker工具无法反编译出app.json文件了。解决方法随见下文。

五:unveril工具

unveril 是比wxappUnpacker 更高级更方便的反编译工具,解决 wxappUnpacker工具无法反编译出app.json文件的问题。

github地址github.com/junxiaqiao/...,具体如何使用,详见github的介绍文档。

bash 复制代码
2.0版本下载
链接:https://pan.quark.cn/s/88490fba2ecf
提取码:QXtC
链接:https://pan.baidu.com/s/1sWOZ1UG3HkxX7ehSs2n5gA?pwd=33rc
提取码:33rc

如果遇到下面的问题,尝试以管理员身份运行.exe文件

使用示例,如果路径有空格必需加引号

ruby 复制代码
# 直接解包整个目录
$ unveilr "/path/to/wxapkg/dir/"
# 解多个包
$ unveilr "/path/to/1.wxapkg" "/path/to/2.wxapkg" ...
# 指定wx子命令并指定微信AppId
$ unveilr wx -i wx11aa22bb33cc44dd "/path/to/wxapkg/dir/"
# 格式化解析出来的代码
$ unveilr wx -f "/path/to/wxapkg/dir/"
# 只提取源文件不解析进行反编译
$ unveilr wx --no-parse "/path/to/wxapkg/dir/"

当前只有一个主包,使用下面的命令进行主包反编译

复制代码
unveilr 主包地址

反编译完成,成功解出app.json文件

六、unveril解包后打开微信开发者工具可能遇到的问题:

1.格式化问题

出现上面的报错原因是反编译下来的代码,格式是乱的,找到具体报错的文件手动格式化一下。

参考解决方法:blog.csdn.net/a_123_4/art...

或者在使用unveril反编译的时候,加个 -f的子命令,反编译后的代码会做一个初步的格式化,详见unveril github read.me

2.接口跨域问题

微信小程序的跨域解决:

blog.csdn.net/Time_Flies_...

3、反编译报错:_typeof3 is not a function

修改一下 @babel\runtime\helpers\typeof.js,typeof.js 文件 全部替换 即可

javascript 复制代码
function _typeof2(o) {
  "@babel/helpers - typeof";
  return (_typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
      return typeof o;
  } : function(o) {
      return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
  })(o);
}
 
 
function _typeof(o) {
  return "function" == typeof Symbol && "symbol" === _typeof2(Symbol.iterator) ? module.exports = _typeof = function(o) {
      return _typeof2(o);
  } : module.exports = _typeof = function(o) {
      return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : _typeof2(o);
  }, _typeof(o);
}
 
 
module.exports = _typeof;

参考解决方法:blog.csdn.net/weixin_3900...

7、参考文章

blog.csdn.net/ONExiaobaij...

8、声明

本次分享仅做学习使用,以上用例,为专用测试环境,请遵守国家法律!!!

相关推荐
衬衫chenshan6 分钟前
【CTF】强网杯2025 Web题目writeup
前端
飞翔的佩奇33 分钟前
【完整源码+数据集+部署教程】【天线&水】舰船战舰检测与分类图像分割系统源码&数据集全套:改进yolo11-repvit
前端·python·yolo·计算机视觉·数据集·yolo11·舰船战舰检测与分类图像分割系统
哆啦A梦15881 小时前
点击Top切换数据
前端·javascript·vue.js
程序猿追2 小时前
Vue组件化开发
前端·html
艾德金的溪2 小时前
redis-7.4.6部署安装
前端·数据库·redis·缓存
小光学长2 小时前
基于Vue的2025年哈尔滨亚冬会志愿者管理系统5zqg6m36(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
@PHARAOH3 小时前
WHAT - 受控组件和非受控组件
前端·javascript·react.js
生莫甲鲁浪戴3 小时前
Android Studio新手开发第二十六天
android·前端·android studio
stark张宇3 小时前
超越 Hello World:深入小程序 Hybrid 初衷、安全配置与上线全链路
nginx·微信小程序·php
JH30733 小时前
B/S架构、HTTP协议与Web服务器详解
前端·http·架构