Skip to content

Commit

Permalink
no message
Browse files Browse the repository at this point in the history
  • Loading branch information
system-cpu committed Jun 10, 2020
1 parent 82624e9 commit 00045bf
Show file tree
Hide file tree
Showing 12 changed files with 1,635 additions and 1,217 deletions.
25 changes: 0 additions & 25 deletions ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,25 +0,0 @@
发表 Issue 前请仔细阅读以下内容:

1. 如果你是要反馈 bug, 请按以下`模板`书写 Issue;
2. 如果你遇到的是 Node.js 使用问题, 请尽可能依赖搜索引擎解决问题;
3. 遇到包依赖问题,请联系对应项目;
4. 任何对某类小程序包的适配问题都应提供 wxapkg 程序包,否则直接 Close 处理;
5. 提交前请确认 wxapkg 程序包版本不小于 v0.6vv_20180111_fbi (直接用文本编辑器打开 wxapkg包搜索 v0.6vv 或 v0.5vv 即可查到,注意版本大小主要比较的是日期), 旧版本不提供支持, 相关 Issue 直接 Close 处理;
6. 直接分包和直接处理含插件的包两个功能暂不支持, 请勿重复发表 Issue, 新样例可在已存在的 Issue 下提出;
7. 请不要在其他 Issue 下发表与该 Issue 无关的回复, 否则将有可能被删除。

模板内容如下:

程序执行命令(可选):

程序执行错误信息(如果反馈是抛出异常的错误,必填):

```
复制到这里
```

程序结果错误信息(如果反馈不是抛出异常的错误, 必填, 请尽可能详细描述):

程序包(你所要解压的程序包地址, 可为网盘链接, 也可直接上传[上传前请先打包]. 必填):

其他附加内容:
62 changes: 35 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

# wxappUnpacker

![版本 0.3](https://img.shields.io/badge/版本-0.3-red.svg) ![支持的微信版本 >20180111](https://img.shields.io/badge/%E5%BE%AE%E4%BF%A1%E7%89%88%E6%9C%AC-%3E=20180111-brightgreen.svg) ![高级特性支持度 0](https://img.shields.io/badge/%E6%94%AF%E6%8C%81-0%25-yellow.svg)
Expand All @@ -8,33 +9,16 @@
### wxapkg 包的获取

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

adb pull /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg

其中`{User}` 为当前用户的用户名,类似于 `2bc**************b65`。

其中`{User}` 为当前用户的用户名,类似于 `2bc**************b65`

### 使用

node wuWxapkg.js .wxapkg 的文件路径 // 例子 D:/node/wxappUnpacker-master._1123949441_321.wxapkg


### 另注

所有命令上都可以使用`-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`项丢失,仅会标注被其他包引用的自定义组件。
# 安装
```
npm install
```

## 依赖

Expand All @@ -53,7 +37,31 @@ Android 手机最近使用过的微信小程序所对应的 wxapkg 包文件都

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

### 使用

node wuWxapkg.js .wxapkg 的文件路径 // 例子 D:/node/wxappUnpacker-master._1123949441_321.wxapkg

## 技术支持
Star 一下可以加微信
微信: li1664771111 //备注:反编译
# 分包功能

当检测到 wxapkg 为子包时, 添加-s 参数指定主包源码路径即可自动将子包的 wxss,wxml,js 解析到主包的对应位置下. 完整流程大致如下:
1. 获取主包和若干子包
2. 解包主包 `./bingo.sh testpkg/master-xxx.wxapkg`
3. 解包子包 `./bingo.sh testpkg/sub-1-xxx.wxapkg -s=../master-xxx`

TIP
> -s 参数可为相对路径或绝对路径, 推荐使用绝对路径, 因为相对路径的起点不是当前目录 而是子包解包后的目录
```
├── testpkg
│   ├── sub-1-xxx.wxapkg #被解析子包
│   └── sub-1-xxx #相对路径的起点
│   ├── app-service.js
│   ├── master-xxx.wxapkg
│   └── master-xxx # ../master-xxx 就是这个目录
│   ├── app.json
```

# 支持
```
Star 一个吧
```
48 changes: 48 additions & 0 deletions bingo.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# WXAPPUNPACKER_PATH 项目路径
set WXAPPUNPACKER_PATH=%~dp0

set FILE_FORMAT=wxapkg

:wxappUnpacker_pkg

echo "node %WXAPPUNPACKER_PATH%/wuWxapkg.js %fname%"

node %WXAPPUNPACKER_PATH%/wuWxapkg.js %2 %1

goto:eof

:wxappUnpacker

set de_dir=%1

if "%de_dir%" == ""

set de_dir=%WXAPPUNPACKER_PATH%

echo %de_dir%

echo "for wxapkg in `find %de_dir% "*.${FILE_FORMAT}"`"

for %%fname in `/f %de_dir% -name "*.%FILE_FORMAT%"`

do

(call :wxappUnpacker_pkg %fname% %2)

goto:eof

:de_pkg

if "-d" == "%1"

(call :wxappUnpacker %1 %2)

else

(call :wxappUnpacker_pkg %1 %2)

goto:eof

# $1: pkg file or pkg dir; $2: order

call :de_pkg %1 %2
41 changes: 41 additions & 0 deletions bingo.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/usr/bin/env bash

# MyWxappUnpacker 项目路径
WXAPPUNPACKER_PATH=`pwd`

FILE_FORMAT=wxapkg

wxappUnpacker_pkg() {
echo "node ${WXAPPUNPACKER_PATH}/wuWxapkg.js ${fname}"
node ${WXAPPUNPACKER_PATH}/wuWxapkg.js $2 $1
return 0;
}

wxappUnpacker() {
de_dir=$1
if [ -z "$1" ]
then
de_dir=`pwd`
fi
echo "${de_dir}"
echo "for wxapkg in `find ${de_dir} -name "*.${FILE_FORMAT}"`"
for fname in `find ${de_dir} -name "*.${FILE_FORMAT}"`
do
wxappUnpacker_pkg ${fname} $2
done
return 0;
}

de_pkg() {
if [ "-d" == "$1" ]
then
wxappUnpacker $1 $2
else
wxappUnpacker_pkg $1 $2
fi
return 0;
}
# $1: pkg file or pkg dir; $2: order
de_pkg $1 $2


20 changes: 14 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "wxapp-unpacker",
"version": "0.3",
"version": "1.0.1",
"description": "Wechat App(微信小程序, .wxapkg)解包及相关文件(.wxss, .json, .wxs, .wxml)还原工具",
"main": "wuWxapkg.js",
"repository": {
Expand All @@ -12,14 +12,22 @@
"bugs": {
"url": "https://github.com/qwerty472123/wxappUnpacker/issues"
},
"scripts": {
"pkg": "node wuWxapkg.js",
"css": "node wuWxss.js",
"xml": "node wuWxml.js",
"js": "node wuJs.js",
"cfg": "node wuConfig.js"
},
"homepage": "https://github.com/qwerty472123/wxappUnpacker#readme",
"dependencies": {
"css-tree": "^1.0.0-alpha.37",
"cheerio": "^1.0.0-rc.3",
"css-tree": "^1.0.0-alpha.28",
"cssbeautify": "^0.3.1",
"escodegen": "^1.12.0",
"esprima": "^4.0.1",
"js-beautify": "^1.10.2",
"escodegen": "^1.11.0",
"esprima": "^4.0.0",
"js-beautify": "^1.7.5",
"uglify-es": "^3.3.9",
"vm2": "^3.8.4"
"vm2": "^3.6.0"
}
}
Loading

0 comments on commit 00045bf

Please sign in to comment.