MicroMsg会保存你的用户相关信息,每登录一个微信号就会产生一个哈希值作为用户标识进行对应,
看时间找到最新的一个用户点进去;
找到appbrand目录,里面包含2个文件夹,一个是pkg(执行文件),一个是jscache(缓存文件)
进入pkg目录下,找到最近的一个.wxapkg的文件,这个就是刚刚缓存的小程序文件,但它是个二进制文件不能直接拿来用,需要对它进行反编译处理。
长按文件将它进行压缩为tar格式,然后发送到别人的微信上,让他一会在转发给你即可。
五、.wxapkg 解包
兜兜转转绕了一圈终于拿到小程序的 .wxapkg 包,接下来就是如何将它反编译成为一个完整的项目了。
首先 .wxapkg 文件到底是什么呢?你可能会认为它就是类似 Android 的 .apk 或者 iOS 的 .ipa 安装包,本质上是一个 .zip 压缩包?
其实不是的,它是一个二进制文件,实际的文件结构如下图(图片取自文章 微信小程序源码阅读笔记)
如何反编译:
打开终端,用git下载代码 git clone https://github.com/qwerty472123/wxappUnpacker.git
切换到wxappUnpacker目录使用cnpm i安装依赖,安装之前需要安装Node环境(自行安装);
解压得到的tar文件,得到wxapkg的路径,在wxappUnpacker目录下执行node node wuWxapkg.js + wxapkg文件路径
看到以下输出说明反编译成功,这时候你就会得到一个项目文件了。
使用编辑器打开文件夹开心的看大神们怎么实现各种功能的吧,总会对你有所启发,微博的这个小程序源码可读性特别高,除了样式文件,感觉已经全了,有图有真相。
局限和问题(包括但可能不限于以下内容)
实现中很多功能基于特定的版本和字符串搜索,所以不能很好的适应各种特殊情况。
wxml 文件拥有不同于 xml 和 html。
文件的字符转义规则,且尚未公开(并非"没有"),因此未能很好的还原相关内容。
js 文件被压缩后会丢失原始变量名等信息内容无法还原;wxss 文件压缩后的注释也会丢失。
wxs 文件会将所有的变量如 Math 改为 nv_Math ,这里仅通过字符串替换去除。
一些被引用 wxss 文件本身的源文件丢失,因此无法恢复原始目录。
有些项目开启了难以复原的es6转es5选项,检验本项目结果是否正确时需要关闭项目中的es6转es5选项。
wxml 中一些无法找到相对应 的正向语句的内容无法还原。
json 中components项丢失,仅会标注被其他包引用的自定义组件。