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

一:前置准备

修改微信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、声明

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

相关推荐
Hilaku7 分钟前
我重写了整个项目,但没人感谢我!
前端·javascript·程序员
zach44 分钟前
Vue/React SPA 打包部署后,子路由刷新 401 未登录问题彻底解决
前端·nginx·next.js
旋生万物1 小时前
素数螺旋映射 $z_n=n^{1+i}$ 的角分布统计检验与零模型对比
大数据·前端·人工智能·算法·云原生·螺旋生成论·螺旋相位
亿元程序员1 小时前
游戏引擎都没用!纯AI又上线了一款蚂蚁搬家小游戏!
前端
醒目801 小时前
从图像到拼豆图纸:像素化生成与色板匹配技术实践
微信小程序
福兮说1 小时前
JS 正则的六个坑:带 g 的 test() 一真一假、空匹配死循环、replace 里的 $
开发语言·前端·javascript·正则表达式
码艺-Alimjan1 小时前
Web 网站打包桌面应用的另一种方式,超级简单(C# exe 33Kb)
开发语言·前端·c#
flash俊杰1 小时前
时间线到 filter_complex:把编辑文档编译成 FFmpeg 滤镜图
前端
Tyrvision1 小时前
新品发布前,三维动画怎么排期才不挤在最后一周?
前端
miss1 小时前
从零做一个可视化规则引擎:Vue3 递归条件树 + 双引擎结果对比
前端·vue.js·typescript