因为一些需求,需要我们把上线的小程序反编译成源码。并查看源码。
macOS Catalina 10.15.5
MUMU模拟器 1.9.21(20200720)
node 8.11.3
在MUMU模拟器设置中开启共享文件夹以及root权限,然后下载
微信
和RE文件管理器
下载反编译工具
最开始作者的(随后作者移除了该项目) ①,wxappUnpacker
分支出来同步更新的反编译工具 ②,wxappUnpacker
该教程使用的版本工具 ③,wxappUnpacker
克隆项目到本地然后执行
npm i
安装项目依赖
1.使用自己手机上的微信打开"人堆"小程序,可以添加到"我的小程序" 2.打开模拟器的微信并登录 3.在模拟器微信的下拉小程序最近使用历史中打开"人堆",如果历史记录中没有就在我的小程序中找一找 4.打开小程序等待加载之后就可以去找源码包了 5.打开RE文件管理器,进入到以下路径查找源码包(可以根据下载时间区分出你想要的源码包)
/data/data/com.tencent.mm/MicroMsg/4c8188dbf07eec893d0ac90974657aeb/appbrand/pkg
长按_1123949441_403.wxapkg
文件把该文件在模拟器中复制到模拟器中的共享文件夹中
node wuWxapkg.js <path/to/rendui.wxapkg>
image.png
导出的文件目录结构
.
├── components
│ └── RefreshView
├── images
├── pages
│ ├── auth
│ ├── charts
│ │ ├── area
│ │ ├── column
│ │ ├── line
│ │ ├── line_full_screen
│ │ ├── pastArticle
│ │ ├── pastMarket
│ │ ├── pie
│ │ ├── radar
│ │ ├── ring
│ │ ├── scrollline
│ │ ├── spec_line
│ │ └── todayMarket
│ ├── index
│ ├── info
│ ├── login
│ ├── markets
│ │ ├── cart
│ │ ├── index
│ │ └── vender
│ ├── prices
│ │ ├── add
│ │ ├── freight
│ │ ├── groups
│ │ └── list
│ ├── repassword
│ ├── user
│ │ ├── aboutUs
│ │ ├── addArticle
│ │ ├── addresses
│ │ │ └── operation
│ │ ├── authorize
│ │ ├── buyRecord
│ │ ├── checkArticle
│ │ ├── drivers
│ │ │ └── operation
│ │ ├── editArticle
│ │ ├── feedback
│ │ ├── feedbackRet
│ │ ├── incomeDetail
│ │ ├── myArticle
│ │ ├── myFans
│ │ ├── orders
│ │ ├── paySuccess
│ │ ├── promoter
│ │ ├── upgrade
│ │ ├── venders
│ │ │ └── operation
│ │ └── vipDesc
│ └── vender
│ ├── contacts
│ │ └── operation
│ ├── main
│ ├── origin
│ │ └── operation
│ ├── product
│ │ └── operation
│ ├── productInfo
│ │ ├── operation
│ │ └── volumes
│ │ └── volume
│ ├── salesmain
│ ├── salesmen
│ │ └── operation
│ ├── settings
│ └── stock
│ └── operation
└── utils
如果想单独执行config、js、wxml、wxss的反编译可以在解包时加-o参数不做后续操作
node wuConfig.js <files...> 将 app-config.json 中的内容拆分到各个文件对应的 .json 和 app.json , 并通过搜索 app-config.json 所在文件夹下的所有文件尝试将 iconData 还原为 iconPath 。
node wuJs.js <files...> 将 app-service.js (或小游戏中的 game.js ) 拆分成一系列原先独立的 javascript 文件,并使用 Uglify-ES 美化,从而尽可能还原编译前的情况。
node wuWxml.js [-m] <files...> 将编译/混合到 page-frame.html ( 或 app-wxss.js ) 中的 wxml 和 wxs 文件还原为独立的、未编译的文件。如果加上-m指令,就会阻止block块自动省略,可能帮助解决一些相关过程的 bug 。
node wuWxss.js <dirs...> 通过获取文件夹下的 page-frame.html ( 或 app-wxss.js ) 和其他 html 文件的内容,还原出编译前 wxss 文件的内容。
node wuWxapkg.js [-o] [-d] [-s=<Main Dir>] <files...> 将 wxapkg 文件解包,并将包中上述命令中所提的被编译/混合的文件自动地恢复原状。如果加上-o指令,表示仅解包,不做后续操作。如果加上-d指令,就会保留编译/混合后所生成的新文件,否则会自动删去这些文件。同时,前面命令中的指令也可直接加在这一命令上。而如果需要解压分包,请先解压主包,然后执行node wuWxapkg.js [-d] -s=<Main Dir> <subPackages...>,其中Main Dir为主包解压地址。除-d与-s外,这些指令两两共存的后果是未定义的(当然,是不会有危险的)。
至此小程序反编译完成。并可以在微信开发者工具中打开使用。使用需要勾选不校验合法域名
和勾掉e6转es5
有的小程序没用使用ES6语法的话就不用