微信小程序之解锁反编译

2,370 阅读4分钟

一、前言

小程序已经火了这么多年,你是否对小程序反编译的技术了解?可能以前做的最多的反编译技术就是对安卓apk进行反编译;笔者在写app应用的那些年各种反编译技术层出不穷,防止反编译是每个程序员的必修课,因为当你辛辛苦的研发一个应用,被人家三下五除二给反编译了,是一件多么尴尬的事啊。那么如何防止反编译啊?一般都是混淆代码的方式,即使反编译出来那也是一些乱七八糟的命名;既然android应用能被反编译,那么微信小程序能被反编译吗?别人的小程序对你来说完全是黑盒的,但是也一样能通过反编译出来的;既然反编译肯定要以安装文件为基础,如android应用的安装包就是apk文件,小程序的文件就是以wxapkg结尾的文件

二、关于wxapkg文件

1. 微信如何运行小程序?

首先需要在云端下载xx.wxapkg的二级制文件到本地,再利用微信等应用的一套机制运行起来。

2. 那么如何才能在手机里找到小程序的源文件包呢?

这里只聊android系统,安卓具体目录位置存放在:/data/data/com.tencent.mm/MicroMsg/xxx/appbrand/pkg/
在这个目录下,该目录下会发现一些 xxxxxxx.wxapkg 类型的文件,这些就是微信小程序的包xxx.wxapkg是一个二进制
文件,有着其自己的一套结构。

3.打开手机的文件管理看了一圈硬是没找到?

这里有个坑,想要进入到上面这个目录的话,用手机自带的文件管理器肯定是不行的,以安卓手机为
例:必须要用到第三方的文件管理器,比如:RE文件管理器,并且安卓需要取得root权限,但是这里
不推荐从真机上获取,推荐模拟器

三、准备工作

1、安装下来基本没什么问题。安装以后需要安装微信app和re文件管理器,通过模拟器上的商店应用可下载安装;
2、像手机一样在模拟器上登录你的微信,并进入到你准备反编译的小程序。目的是让wxapkg包下载到你的模拟器上;
3、登录微信时如果闪退的话在模拟器上设置一下显卡渲染模式,步骤:模拟器设置-性能设置-基础模式-保存设置
后重新登录即可
  • 在电脑本地准备好反编译脚本程序,github上有很多大佬写的脚本,这里推荐一个脚本,具体如何运行脚本大佬的README已经写的很清楚了,跟着步骤来就好;
  • 下载安装vscode微信开发者工具;方便反编译后的调试与小程序运行

四、开始操作(前面废话太多了)

1. 通过文件管理器进入到/data/data/com.tencent.mm/MicroMsg/xxx/appbrand/pkg/ 目录下,找到你的小程序文件。如图:

1625304940(1).png

2. 长按某个文件后,右上角出现三个点按钮,并选择压缩文件,并点击查看;然后在同样长按操作选择三个点按钮,点击发送,选择微信发送到你的好友;随后就可以在电脑上登录微信把刚刚的压缩包拿出来了;并愉快的玩耍了。

1625322052(1).png

3. 使用vscode打开早已clone下来的脚本,然后跟着脚本中的README安装各种依赖,完成以后开始执行命令,node wuWxapkg.js {files},files是你要反编译的wxapkg文件。如:node wuWxapkg.js E:/test/wxapk/_-2072156531_10.wxapkg

1625322853(1).png

4. 编译完成后在E:/test/wxapk/文件夹下就有反编译出来的小程序项目了;在使用微信开发者工具导入项目(这里就不详细的赘述了),使用微信开发者工具编译一下页面就完美的展现在你的面前了(编译的是自己之前写的一个小程序);

1625323707.png

五、最后

眼尖的同学可能会从上面这张截图可以看出,反编译出来的源码被混淆了。是的,确实被混淆了;变 量和常量等都是用“a,b,c,d,e,f”这种代替,还有就是注释没有啦(讲道理,我之前写这个小程序的 时候绝逼写了注释的),看来微信对于小程序的安全还是考虑到了,至此微信小程序的反编译过程就结束了