先来皮一下
- 微信小程序的源代码在哪里?
开发者电脑里(不是人造革,是真的皮) - 微信小程序的源代码到底在哪里?
那肯定是腾讯加的服务器上,不过是编译过的执行包。 - 那怎么在手机上执行?
当然是先下载到手机上。 - 下载到手机上的执行包文件能获取到吗?
iOS没试过,Android那是轻而易举。可以获取root权限的手机或者模拟器都可以。 - 有了执行包文件怎么办?
参考大神对于.wxapkg文件结构的分析,就有思路了
使用到的工具
- Android模拟器(root权限)
夜神模拟器 - nodejs
- 解包还原工具(nodejs版)
wxappUnpacker
获取微信小程序源码实例
以下是获取某微信小程序“ABC”的源码的实例步骤。
1,使用Android模拟器获取.wxapkg文件
打开夜神模拟器安装微信(自带市场),RE文件管理器
- 在模拟器上打开微信并登陆,搜索小程序ABC
- 打开小程序ABC,玩耍一下
- 在如下目录找到相应的.wxapkg,可以根据时间戳来判断
/data/data/com.tencent.mm/MicroMsg/{{一串32位的16进制字符串文件夹}}/appbrand/pkg/
示例如下:
.wxapkg文件
-
选中_126431493_6.wxapkg,压缩所选文件->查看
.wxapkg压缩文件 - 选择“发送”,将压缩文件通过微信发送到电脑版微信
- 电脑版微信接收到压缩文件解压缩以备下一步使用
2,使用解包工具还原小程序源码
- 安装nodejs
- 下载wxappUnpacker,并使用npm安装它的依赖包,依赖包说明
-
进入wxappUnpacker目录,调用node wuWxapkg.js file.wxapkg
解包.wxapkg -
解包完成
解包完成 -
源码包结果
源码包结果 - 开发过小程序的对这个源码包应该是一目了然了
例外
- 现在好多小程序都是框架编译,所以解包完了也是很多压缩,混淆,很难读懂。
- 对于分包小程序处理来说,由于分包下载依赖于分包触发机制,所以对于此类小程序需要额外的步骤来确保分包下载完成。另外遗憾的是wxappUnpacker分包功能没有完成。
参考
总结
小程序源代码(虽然不是100%源代码)能如此简单的被获取,原因在于微信团队没有对编译完的执行包进行加密保护。如果使用一些对称加密的手段,只有微信客户端才可以解密得到执行包,并且执行包只保存于内存不缓存于磁盘,这样的话会对开发者有较好的保护。
此内容仅供学习参考。
网友评论