1.0.0 • Published 5 months ago

wx-unpacker v1.0.0

Weekly downloads
-
License
GPL-3.0
Repository
-
Last release
5 months ago

wxappUnpacker

Wechat App(微信小程序, .wxapkg)解包及相关文件(.wxss, .json, .wxs, .wxml)还原工具

当前功能如下(分包功能尚未完成)

  • node wuConfig.js <files...> 将 app-config.json 中的内容拆分到各个文件对应的 .json 和 app.json , 并通过搜索 app-config.json 所在文件夹下的所有文件尝试将 iconData 还原为 iconPath 。
  • node wuJs.js <files...> 将 app-service.js (或小游戏中的 game.js ) 拆分成一系列原先独立的 javascript 文件,并使用 Uglify-ES 美化,从而尽可能还原编译前的情况。
  • node wuWxml.js [-m] <files...> 将编译/混合到 page-frame.html ( 或 app-wxss.js ) 中的 wxml 和 wxs 文件还原为独立的、未编译的文件。如果加上-m指令,就会阻止block块自动省略,可能帮助解决一些相关过程的 bug 。
  • node wuWxss.js <dirs...> 通过获取文件夹下的 page-frame.html ( 或 app-wxss.js ) 和其他 html 文件的内容,还原出编译前 wxss 文件的内容。
  • node wuWxapkg.js [-o] [-d] [-s=<Main Dir>] <files...> 将 wxapkg 文件解包,并将包中上述命令中所提的被编译/混合的文件自动地恢复原状。如果加上-o指令,表示仅解包,不做后续操作。如果加上-d指令,就会保留编译/混合后所生成的新文件,否则会自动删去这些文件。同时,前面命令中的指令也可直接加在这一命令上。

wxapkg 包的获取

Android 手机最近使用过的微信小程序所对应的 wxapkg 包文件都存储在特定文件夹下,可通过以下命令查看:

adb pull /data/data/com.tencent.mm/MicroMsg/appbrand/pkg/general

另注

所有命令上都可以使用-f指令来提高一定的并行度,但输出信息会混乱。

如果发现包内文件“缺失”,请先检查解包时是否出现提示NOTICE: SubPackages exist in this package.。如存在,请在寻找好分包后,按上文提示操作。(小程序需要访问特定页面;小游戏需要触发特定函数,然后分包才会被下载。)

如果是 debug 包,需要添加后缀名再操作。

依赖

这些 node.js 程序除了自带的 API 外还依赖于以下包: cssbeautifyCSSTreeVM2EsprimaUglifyESjs-beautify

您需要安装这些包才能正确执行这些程序,为了做到这一点,您可以执行npm install;另外如需全局安装这些包可执行以下命令:

npm install esprima -g
npm install css-tree -g
npm install cssbeautify -g
npm install vm2 -g
npm install uglify-es -g
npm install js-beautify -g
npm install escodegen -g

此外,这些 node.js 程序之间也有一定的依赖关系,比如他们都依赖于 wuLib.js 。