# 小程序反编译抓包工具 **Repository Path**: mightlin/small_program_decompiler_tool ## Basic Information - **Project Name**: 小程序反编译抓包工具 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-02-13 - **Last Updated**: 2023-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wxappUnpacker 对源项目 [wxappUnpacker](https://github.com/qwerty472123/wxappUnpacker) 进行了错误修复和代码优化 ![版本 0.3.1](https://img.shields.io/badge/%E7%89%88%E6%9C%AC-0.3.1-red.svg) > Wechat App(微信小程序, .wxapkg)解包及相关文件(.wxss, .json, .wxs, .wxml)还原工具 ## 安装依赖项 推荐使用yarn进行依赖项管理,直接运行 `yarn` 命令安装项目所需要的依赖,进入本项目目录,使用下面的命令解开一个小程序包 > yarn unpack [-o] [-d] [-s=
] - 加入 `o` 指令表示(only)仅解开包,不进行反编译 - 加入 `d` 指令则再反编译过程中保留过程文件 - 加入 `s` 指令可以对分包小程序进行反编译,需要先解压出主包,在解压分包时使用改命令指定主包的地址 ### 如何获取小程序包 Android 手机最近使用过的微信小程序所对应的 wxapkg 包文件都存储在特定文件夹下,可通过以下命令查看: adb pull /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg 其中`{User}` 为当前用户的用户名,类似于 `2bc**************b65`,需要先取得手机root权限才能进入该目录 ### 另注 所有命令上都可以使用`-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`项丢失,仅会标注被其他包引用的自定义组件。 ## 依赖 这些 node.js 程序除了自带的 API 外还依赖于以下包: [cssbeautify](https://github.com/senchalabs/cssbeautify)、[CSSTree](https://github.com/csstree/csstree)、[VM2](https://github.com/patriksimek/vm2)、[Esprima](https://github.com/jquery/esprima)、[UglifyES](https://github.com/mishoo/UglifyJS2/tree/harmony)、[js-beautify](https://github.com/beautify-web/js-beautify) 需要安装这些包才能正确执行这些程序,可以直接执行`yarn`安装 ## 参考 这些实现除了参考微信小程序开发文档、 一个开源微信小程序和一些 Issue 提供的 wxapkg 文件解包后的内容以及通过开发者工具编译的一些 wxml 外,还参考了一些 github 上的相关内容的分析( [unwxapkg.py](https://gist.github.com/feix/32ab8f0dfe99aa8efa84f81ed68a0f3e)、[wechat-app-unpack](https://github.com/leo9960/wechat-app-unpack/) ),在此感谢他们。 另外,如果您对本程序的一些具体实现细节感兴趣,可以参考 [DETAILS.md](https://github.com/qwerty472123/wxappUnpacker/blob/master/DETAILS.md)