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

一:前置准备

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

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

相关推荐
golitter.2 分钟前
Ajax和axios简单用法
前端·ajax·okhttp
雷特IT22 分钟前
Uncaught TypeError: 0 is not a function的解决方法
前端·javascript
长路 ㅤ   44 分钟前
vite学习教程02、vite+vue2配置环境变量
前端·vite·环境变量·跨环境配置
亚里士多没有德7751 小时前
强制删除了windows自带的edge浏览器,重装不了怎么办【已解决】
前端·edge
micro2010141 小时前
Microsoft Edge 离线安装包制作或获取方法和下载地址分享
前端·edge
.生产的驴1 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
awonw1 小时前
[前端][easyui]easyui select 默认值
前端·javascript·easyui
小雨cc5566ru1 小时前
uniapp+Android智慧居家养老服务平台 0fjae微信小程序
android·微信小程序·uni-app
九圣残炎1 小时前
【Vue】vue-admin-template项目搭建
前端·vue.js·arcgis
柏箱2 小时前
使用JavaScript写一个网页端的四则运算器
前端·javascript·css