很久以前写了一个小程序,里面有一个页面是后来作为“插件”加上去的。后来因为电脑中病毒让我重装系统不慎丢失这个页面的代码。于是上网查找资料想要从已经上线的小程序里面把这一部分代码扒出来review。
本文主要参考了https://www.cnblogs.com/micr067/p/15524643.html。
首先说一下踩的坑:网上大部分教程包括我上面引用的这个主要参考的这个教程都提供了一个思路就是从安卓手机里面获取微信小程序的包,我找了一个ADB调试文件管理器的程序(来自这里),按照网上说的教程试图找/data/data/com.tencent.mm/MicroMsg/{{一串32位的16进制字符串名文件夹}}/appbrand/pkg
这个路径,但是发现这些教程多写于2022年之前,因为我实测现在的data里面的路径变为那串32位的字符串文件夹里面没有这个文件夹,同级有这个文件夹但是全是一些空文件夹。无奈采用微信PC版获取小程序包。
实测可以在微信数据文件夹\\WeChat Files\\Applet
这个路径找到小程序文件夹,里面便含有这个包。找到这个包以后使用上文提到的这个解包文件进行解包。
注意这里还有一个踩坑的点:网上别的文章也有的提供了这个解包软件,但是是一个exe单文件,然后这个exe单文件比较死脑筋,他会把解包完成的result放在其同目录下的wxpack
文件夹下,如果这个文件夹不存在直接报错而不会去自行创建这个文件夹。所以如果你下到的是这个单文件那种,如果产生报错请自行添加这个wxpack
文件夹。
包解密之后就是释放包。采用GitHub上的这个项目进行解包。因为我本地有nodejs开发但是有没有不同版本的node管理器,所以找了个临时虚拟机进行安装。实测采用nodejs的LTSv18可以正常工作。
拉取项目文件以后,在这个目录下运行PowerShell,然后第一步是先进行换源:输入命令
npm config set registry https://registry.npmmirror.com
进行换源,否则国内的网络环境会让你等很长时间,还容易失败。
然后就是按照项目Readme中写道的:
npm install
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
最后,运行
node wuWxapkg.js 文件名.wxapkg
进行解包,至此就成功了。
但是我注意到我解出来的包和原来的page的文件结构不太一样:原page结构是*.wxml,*.wxss,*.js,*.json
,而我解出来的包的page结构是*.html,*.js,*.appservice.js,*.webview.js,*.json
,而且js文件里面进行了一定程度的混淆。个人猜测应该是官方进行了修补,让解包难度增加。因为我就是这一个页面的代码丢失,所以解出来的代码虽然有轻度混淆但是还能几乎正常阅读供我review。鉴于此次解包的目的,这个完成度还算达到满意的效果。
所以这个事告诉我们代码版本管理以及数据容灾保存的重要性!!!
补充:最后找到安卓找不到这个包的原因。可以使用8.0.0之前版本的微信,安装在安卓模拟器上,可以通过上面说的那个路径找到相应的包。可以考虑这个思路。