# node-wxapp-unpacker **Repository Path**: miaprogramo/node-wxapp-unpacker ## Basic Information - **Project Name**: node-wxapp-unpacker - **Description**: 微信小程序反编译工具 - **Primary Language**: NodeJS - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-08-02 - **Last Updated**: 2024-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wxappUnpacker(wxss经xiaokar修复无报错版本) ### wxapkg 包的获取 Android 手机最近使用过的微信小程序所对应的 wxapkg 包文件都存储在特定文件夹下,可通过以下命令查看: adb pull /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg 其中`{User}` 为当前用户的用户名,类似于 `2bc**************b65`。 ### 使用夜神模拟器获取wxapkg ![输入图片说明](https://images.gitee.com/uploads/images/2021/0802/112108_f77ce70a_8263094.png "1.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0802/112117_82ca7513_8263094.png "2.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0802/112126_c93600ab_8263094.png "3.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0802/112136_02a31b35_8263094.png "4.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0802/112144_d2644b62_8263094.png "5.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0802/112151_738b0e4f_8263094.png "6.png") ## 当前功能如下(分包功能尚未完成) - `node wuConfig.js ` 将 app-config.json 中的内容拆分到各个文件对应的 .json 和 app.json , 并通过搜索 app-config.json 所在文件夹下的所有文件尝试将 iconData 还原为 iconPath 。 - `node wuJs.js ` 将 app-service.js (或小游戏中的 game.js ) 拆分成一系列原先独立的 javascript 文件,并使用 Uglify-ES 美化,从而尽可能还原编译前的情况。 - `node wuWxml.js [-m] ` 将编译/混合到 page-frame.html ( 或 app-wxss.js ) 中的 wxml 和 wxs 文件还原为独立的、未编译的文件。如果加上`-m`指令,就会阻止`block`块自动省略,可能帮助解决一些相关过程的 bug 。 - `node wuWxss.js ` 通过获取文件夹下的 page-frame.html ( 或 app-wxss.js ) 和其他 html 文件的内容,还原出编译前 wxss 文件的内容。 - `node wuWxapkg.js [-o] [-d] [-s=
] ` 将 wxapkg 文件解包,并将包中上述命令中所提的被编译/混合的文件自动地恢复原状。如果加上`-o`指令,表示仅解包 ### 另注 所有命令上都可以使用`-f`指令来提高一定的并行度,但输出信息会混乱。 如果发现包内文件“缺失”,请先检查解包时是否出现提示`NOTICE: SubPackages exist in this package.`。如存在,请在寻找好分包后,按上文提示操作。(小程序需要访问特定页面;小游戏需要触发特定函数,然后分包才会被下载。) ### 局限(包括但可能不限于以下内容) - 实现中很多功能基于特定的版本(`wcc-v0.6vv_20180111_fbi`, 且不考虑面向低版本适配)和字符串搜索,所以不能很好的适应各种特殊情况。 - wxml 文件拥有不同于 xml 和 html 文件的字符转义规则,且尚未公开(并非"没有"),因此未能很好的还原相关内容。 - js 文件被压缩后会丢失原始变量名等信息内容无法还原;wxss 文件压缩后的注释也会丢失。 - wxs 文件会将所有的变量如 Math 改为 nv_Math ,这里仅通过字符串替换去除。 - 一些被引用 wxss 文件本身的源文件丢失,因此无法恢复原始目录。 - 有些项目开启了难以复原的`es6转es5`选项,检验本项目结果是否正确时需要关闭项目中的`es6转es5`选项。 - wxml 中一些无法找到相对应 的正向语句的内容无法还原。 - json 中`components`项丢失,仅会标注被其他包引用的自定义组件。