今天让我仿写一个微信小程序,实在是无从下手,只好想办法搞搞源码来学习一下
这种方法,并不能反编译出所有的小程序源码
获取到.wxapkg文件
方式一 模拟器法
准备材料:
node.js运行环境(自行百度安装教程)
下载安装好nodejs反编译的脚本(需要做一定的修改,否则编译出来的文件缺少样式,修改方法见下方脚本的修改)
使用Github上qwerty472123大神写的node.js版本的,当然也有其它版本的,例如python版等,自行度娘。
下载地址:
旧版Wechat App(微信小程序,.wxapkg)解包及相关文件(.wxss,.json,.wxs,.wxml)还原工具
2019版2019小程序解包 解决$gwx报错问题安卓模拟器(要求自带root权限)
例如夜神模拟器,腾讯手游助手等
具体步骤如下:
打开安装好的安卓模拟器,并在模拟器中安装QQ、微信、RE管理器
RE管理器的下载地址https://pan.baidu.com/s/1PPBx08rNutXxhlMMJbuTpQ
设置一下模拟器
以夜神模拟器举例
首先到模拟器内部设置超级用户权限
这些操作的目的都是为了能让RE管理器顺利的获取到ROOT权限
接下来在模拟器里打开微信,然后在微信中运行你想要获取的下程序(这其实是让微信把小程序的源文件包从服务器下载到了本地了)在模拟器微信中运行一下后,直接切回模拟器桌面运行RE管理器 来到根目录下的
/data/data/com.tencent.mm/MicroMsg//appbrand/pkg/
就抵达了目的文件夹
你会看到发现里面的一些.wxapkg后缀的文件,就是它们没错啦,可以根据使用的时间来判断那个是你刚才从服务器下载过来的
这里重要声明一下:虽然微信小程序的包后缀是.wxapkg,但有一些包的依赖后缀也是.wxapkg,真正的小程序包大小1M左右,而依赖包大小2、3M甚至更多。所以一股脑的反编译.wxapkg 类型的文件可能会报错:Error: This Package is unrecognizable, please decrypted every type of file by hand.
,遇见这个问题请自知,你可能没找对包!
- 一般小程序的文件不会太大,可以结合时间来判断,长按压缩所选文件,然后再将压缩好的包通过QQ发送到我的电脑
如果不进行压缩的话,是无法将这个文件通过QQ来发送的
- 最后将发送过来的文件进行解压。这样几步简单操作,就成功拿到了小程序的源文件了。
方式二 手机备份法(我用的这种)
准备材料:
1.、2.同方式一
- 一台带有备份功能的智能手机
具体步骤如下:
备份微信应用:
为便于查找,最好单独备份微信,以安卓手机为例,大致流程如下:设置——存储与备份——备份手机数据——添加备份——应用——选择微信,然后点击确定,等待备份完成即可。
PS:如果是获取别人的小程序,不清楚小程序结构,那么最好是把微信中其他的小程序都删掉,只保留要查找的小程序进行访问后对微信单独备份,这样备份之后的文件中的编译包就只有需要的这个小程序了。查找备份文件:
文件管理——全部文件——backup——App中找到com.tencent.mm.zip
,这就是微信备份文件了(注意不同手机目录结构会不同)。
也可以直接搜索com.tencent.mm.zip
最后通过qq或微信将这个压缩包分享到电脑上。查找小程序编译包文件:
解压文件,点击进入MicroMsg文件夹,找到文件名为串码格式的文件夹,如下,需要点进去确认下:
点击进去——第一个appbrand——pkg,下方的那些.wxapkg后缀的文件就是
使用反编译脚本解包.wxapkg
将反编译脚本从github下载 或者 clone 到本地某个目录
打开nodejs命令窗口
用cd命令进入到你clone或者下载好的反编译脚本目录下
在node命令窗口中依次使用如下命令安装依赖包:
1 | npm install esprima |
在当前目录下输入node wuWxapkg.js 想要反编译的文件路径
(注意空格!!!)然后回车即可,如下图
最后稍等一会在安装包目录下会出现一个与编译文件同名的文件夹,那个就是编译好的源码文件夹了
打开源码文件
打开微信开发者工具——左上角“项目”——“导入项目”,然后如图所示
脚本的修改
由于新版小程序做了改动,直接使用下载的脚本编译出来的文件会缺少wxss的样式文件,并且编译过程会报错,需要做如下修改后再编译才行
将反编译脚本wuWxss.js文件中的
1 | function runVM(name,code){ |
修改为
1 | function runVM(name,code){ |
再保存即可
参考来源
反编译获取任何微信小程序源码(完)
微信小程序编译包的获取与解压——在手机中获取小程序编译包wxapkg
反编译微信小程序$gwx is not defined报错解决方法