微信小程序反编译/解包

微信小程序反编译/解包

环境与工具

操作系统:Windows 11 23H2

微信版本:3.9.10.19

Q:如何找到小程序文件位置?
A:在微信的设置找到文件路径,小程序文件位于 \WeChat Files\Applet\

Q:小程序目录下文件太多了,找不到要解包的小程序?
A:使用 wxapkg 的 scan 功能,联网状态下会获取小程序名称。或者删除目录下所有文件再打开一次小程序。


wxapkg

⚠ 只支持 Windows 系统

安装

从 Github Release 下载可执行文件,或者下载源码编译。

使用

程序的使用说明。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

> .\wxapkg.exe -h

A tool to scan and decrypt wechat mini program

Usage:

  wxapkg [command]

Available Commands:

  help        Help about any command

  scan        Scan the wechat mini program

  unpack      Decrypt wechat mini program

Flags:

      --disable-beautify   disable js,html,json beautify

  -h, --help               help for wxapkg

  -v, --version            version for wxapkg

Use "wxapkg [command] --help" for more information about a command.

使用 scan 功能解包小程序。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

# scan 功能会扫描指定目录下所有的小程序,选择解包。

> .\wxapkg.exe scan --help

Scan the wechat mini program

Usage:

  wxapkg scan [flags]

Examples:

  wxapkg.exe scan -r "D:\WeChat Files\Applet\wx12345678901234"

# 扫描小程序文件所在路径

> .\wxapkg.exe scan -r "D:\WeChat Files\Applet"

# 打印目录下的小程序,使用上下按键选择,回车确认。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓

┃ Name    Developer                  Description         ┃

┃────────────────────────────────────────────────────────┃

┃ 跳一跳  深圳市腾讯计算机系统有限公司  比比看,谁跳得更远    ┃

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

  wxid: wx7c8d593b2c3a7703

  Name: 跳一跳

  Developer: 深圳市腾讯计算机系统有限公司

  Description: 比比看,谁跳得更远

  Location: D:\WeChat Files\Applet\wx7c8d593b2c3a7703

  Avatar: https://wx.qlogo.cn/mmhead/Q3auHgzwzM5GNaPCYMrxHaFLkh3kTduKFFbPlNmeHdkly2QlZLmtibQ/0

  All information see '.\wxid.json'

  enter unpack • ↑/k move up • ↓/j move down • q exit

# 选中后开始解包。

[+] unpack root 'D:\WeChat Files\Applet\wx7c8d593b2c3a7703' with 30 threads

[+] unpacked   185 files from 'wx7c8d593b2c3a7703\92\__WITHOUT_MULTI_PLUGINCODE__.wxapkg'

[+] all 185 files saved to 'wx7c8d593b2c3a7703'

[+] mini program detail info saved to 'wx7c8d593b2c3a7703\detail.json'

[+] extension statistics:

  - .png    153

  - .mp3     22

  - .jpg      5

  - .json     3

  - .js       1

  - .ttf      1

   

  # 解包结果在当前目录下 wx 开头文件夹。

> ls .\wx7c8d593b2c3a7703\

Mode                 LastWriteTime         Length Name

----                 -------------         ------ ----

d----           2024/1/1    11:11                92

-a---           2024/1/1    11:11            302 detail.json

使用 unpack 功能解包小程序。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

# unpack 功能用于手动指定小程序和解包输出目录。

.\wxapkg.exe unpack -h

Decrypt wechat mini program

Usage:

  wxapkg unpack [flags]

Examples:

  wxapkg.exe unpack -o unpack -r "D:\WeChat Files\Applet\wx12345678901234"

Flags:

  -h, --help            help for unpack

  -o, --output string   the output path to save result (default "unpack")

  -r, --root string     the mini progress path you want to decrypt, see: C:\Users\Null\Documents\WeChat Files\Applet\wx00000000000000

  -n, --thread int      the thread number (default 30)

Global Flags:

      --disable-beautify   disable js,html,json beautify

# 不指定输出路径,指定要解包的小程序。

> .\wxapkg.exe unpack -r "D:\WeChat Files\Applet\wx7c8d593b2c3a7703\"

[+] unpack root 'D:\WeChat Files\Applet\wx7c8d593b2c3a7703\' with 30 threads

[+] unpacked   185 files from '92\__WITHOUT_MULTI_PLUGINCODE__.wxapkg'

[+] all 185 files saved to 'unpack'

[+] extension statistics:

  - .png    153

  - .mp3     22

  - .jpg      5

  - .json     3

  - .ttf      1

  - .js       1

# 不指定输出路径的情况下,默认解压到当前目录的 unpack 文件夹。

> ls .\unpack\

Mode                 LastWriteTime         Length Name

----                 -------------         ------ ----

d----           2024/1/1    11:11                92

# 可以使用 -o 参数指定输出路径。

查看解包结果。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

# 解包结果没有小程序原始工程文件结构,关键代码在 game.js 文件。

> tree .\unpack\92\ /f

D:\WXAPKG\UNPACK\92

│  app-config.json

│  game.js

│  package-lock.json

│  package.json

└─res

    │  0.png

    │  1.png

    │  ......

    ├─2d

    │      555.png

    │      auth.png

    │      ......

    └─auth

            rank_tip.png

            refresh.png


unveilr

⚠新版功能更丰富,但转为闭源,订阅制收费。本文使用 2.0 免费版本。

安装

付费使用最新版,免费使用流传最后一版免费版本。

使用

程序功能帮助。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

> .\unveilr.exe -h

Usage: unveilr [wx] [options]

Options:

  -v, --version               output the version number

  -l, --log-level <level>     Set log level (choices: "debug", "info", "warn", "error", default: "info")

  -h, --help                  display help for command

Commands:

  wx [options] <packages...>  Decompile the WeChat applet

  help [command]              display help for command

Example:

  $ unveilr /path/to/wxapkg/dir/

  $ unveilr 1.wxapkg 2.wxapkg 3.wxapkg ...

  $ unveilr wx /path/to/wxapkg/dir/           Specify wx subcommand

  $ unveilr wx 1.wxapkg 2.wxapkg 3.wxapkg ... Specify wx subcommand

  $ unveilr wx -h                             Show wx help info

解包使用。

1

2

3

4

5

6

# 提供小程序包 wxapkg 所在路径直接解包,结果在目标小程序同路径下(\WeChat Files\Applet\wx000\01\)。

# 允许多个包输入或者一个路径。

> .\unveilr.exe "D:\WeChat Files\Applet\wx7c8d593b2c3a7703\92\"

[INFO] 00:29:08 <Core> From D:\WeChat Files\Applet\wx7c8d593b2c3a7703\92\__WITHOUT_MULTI_PLUGINCODE__.wxapkg detected wxAppId: wx7c8d593b2c3a7703

[INFO] 00:29:08 <Core> The package D:\WeChat Files\Applet\wx7c8d593b2c3a7703\92\__WITHOUT_MULTI_PLUGINCODE__.wxapkg type is: [GAME]

[INFO] 00:29:10 <Bucket> Storage has written 338 files

wx 子命令支持更多操作。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

> .\unveilr.exe wx -h

Usage: unveilr wx [options] <packages...>

Decompile the WeChat applet

Arguments:

  packages              Set package path, could be a file, directory or multiple files

Options:

  -i, --appid <appid>   Set wxAppId, not provided will try to fetch from path

  -f, --format          Enable format code

  --no-clear-decompile  Retain decompiling residual files

  --no-clear-save       The path to be saved will not be cleared

  -p, --no-parse        Only extract files, do not parse

  -d, --depth <depth>   Set read-depth (default: 1)

  -o, --output <path>   Set output path, default: main package whit out

  --clear-output        Empty the specified output folder

  -h, --help            display help for command

# 解包小程序并输出到 .\tyt,同时格式化输出得到小程序原有结构。

>  .\unveilr.exe wx "D:\WeChat Files\Applet\wx7c8d593b2c3a7703\92\" -o .\tyt -f

[WARN] 00:38:52 <Bucket> Turning on code formatting can slow down some operations

[INFO] 00:38:52 <Core> From D:\WeChat Files\Applet\wx7c8d593b2c3a7703\92\__WITHOUT_MULTI_PLUGINCODE__.wxapkg detected wxAppId: wx7c8d593b2c3a7703

[INFO] 00:38:52 <Core> The package D:\WeChat Files\Applet\wx7c8d593b2c3a7703\92\__WITHOUT_MULTI_PLUGINCODE__.wxapkg type is: [GAME]

[INFO] 00:38:57 <Bucket> Storage has written 338 files

# 解包结果有小程序原始工程文件结构,可以看到文件排布。

> tree .\tyt\ /f

D:\WXAPK\UNVEILR\TYT

│  game.js

│  game.json

│  package-lock.json

│  package.json

├─@babel

│  └─runtime

│      └─helpers

│              Arrayincludes.js

│              ......

├─js

│  │  block.js

│  │  ......

│  │

│  ├─control

│  │      battleCtrl.js

│  │      ......

│  │

│  │ ......

│  │

│  └─util

│          common.js

│          encryption.js

│          forceUpdate.js

│          log.js

│          util.js

└─res

    │  ......

    

    └─auth

            rank_tip.png

            refresh.png

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FATAL ERROR Ineffective mark-compacts near heap limit Allocation failed

# 在运行 npm run build 构建命令时遇到内存不足的问题 # 提示这个错误 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory原因 在运行 Vue CLI 构建命令时遇到内存不足的问题可能是因为构建过程中需要处理的文件和模…

4K高刷显示器 - 10大产品对比

4K高刷显示器 - 蚂蚁电竞 N27U 显示屏评测报告 一、产品品牌知名度 蚂蚁电竞&#xff0c;作为一家专注于电竞领域的品牌&#xff0c;近年来在市场上逐渐崭露头角。虽然相较于一些老牌显示器品牌&#xff0c;蚂蚁电竞的知名度还有待提高&#xff0c;但其在电竞领域的表现却不容…

MySQL 状态【中文对照表】

SHOW STATUS 是一个非常有用的 MySQL 命令&#xff0c;它可以帮助我们了解 MySQL 服务器的当前状态&#xff0c;从而更好地管理和优化我们的数据库。 MySQL SHOW STATUS 命令手册 SHOW STATUS 命令概述 在 MySQL 中&#xff0c;SHOW STATUS 命令是一个强大的工具&#xff0c;…

codeblocks快速注释多行

ctrlshiftc可以快速注释掉多行。 ctrlshiftx可以取消注释&#xff0c;才发现&#xff0c;哈哈真方便。

elasticsearch如何使用reindex迁移索引,完成分片的拆分

1、删除我的测试索引&#xff1a;old_index curl -X DELETE "http://hostname -i:9200/old_index" curl -X DELETE "http://hostname -i:9200/new_index"2、检查集群索引情况 $ curl -X GET "http://hostname -i:9200/_cat/indices?v" health…

Java面试题:线程池中常见的阻塞队列

线程池中常见的阻塞队列 workQueue:当没有空闲核心线程时,新来任务会加入此队列进行排队,队列满会创建救急线程执行任务 ArrayBlockingQueue: 基于数组结构的有界(容量固定)阻塞队列,FIFO 先进先出 提前初始化Node数组 提前创建Node 一把锁,同时只能进行入队和出队 Lin…

秋招突击——算法打卡——5/24——无重复字符的最长字串

题目描述 实现代码 // 无重复字符的最长子串 int lengthOfLongestSubstring(string s) {int l 0,r 0;int res 0;unordered_map<char,int> temp;while(l < s.size()){temp[s.at(l)] l;for (r l 1; r < s.size() ; r) {if(temp.count(s.at(r))) break;else te…

Golang:使用go-resty/resty发送http请求get和post

简单的 HTTP 和 REST 客户端&#xff0c;受到 Ruby rest-client 的启发 文档 https://github.com/go-resty/resty/ 安装 go get github.com/go-resty/resty/v2示例 1、发起GET请求 package mainimport ("fmt""strconv""time""github.…

pandas ExcelWriter写excel报错openpyxl.utils.exceptions.IllegalCharacterError

一直使用pandas写excel&#xff0c;本次写的数据有大字段&#xff0c;每次写到该字段就报错&#xff0c;代码如下&#xff1a; with pd.ExcelWriter(r".\提数_20240523\tq_type3_doc.xlsx", engineopenpyxl) as writer: df.to_excel(writer,indexFalse, sheet_namesh…

漫画|基于SprinBoot+vue的漫画网站(源码+数据库+文档)

漫画网站 目录 基于SprinBootvue的漫画网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…

【Linux学习】进程间通信 (1) —— 管道

下面是有关进程通信中管道的相关介绍&#xff0c;希望对你有所帮助&#xff01; 小海编程心语录-CSDN博客 1. 进程通信的基本概念 1.1 概念 进程间通信简称 IPC &#xff0c;指两个进程之间的通信。 IPC的方式通常有管道&#xff08;包括无名管道和命名管道&#xff09;、消息…

python将矩阵转化为灰度图

1.python将矩阵转化为灰度图的方法 要将一个矩阵&#xff08;通常是一个二维数组&#xff0c;其中每个元素代表一个像素的灰度值&#xff09;转换为灰度图&#xff0c;我们可以使用Python的matplotlib库。下面是一个详细的步骤和完整的代码示例&#xff1a; &#xff08;1&am…

【Muduo】缓冲区Buffer类

在 Muduo 网络库中&#xff0c;Buffer类用于处理网络 I/O 中的数据缓冲。防止应用程序读写太快而网络链路收发速度慢导致的速度不匹配问题。这个类封装了一个内部缓冲区&#xff08;使用了vector<char>&#xff09;&#xff0c;并提供了一系列方法来操作这个缓冲区&#…

【Linux网络】端口及UDP

文章目录 1.再看四层2.端口号2.1引入linux端口号和进程pid的区别端口号是如何生成的传输层有了pid还设置端口号端口号划分 2.2问题2.3netstat 3.UDP协议3.0每学一个协议 都要讨论一下问题3.1UDP协议3.2谈udp/tcp实际上是在讨论什么&#xff1f; 1.再看四层 2.端口号 端口号(Po…

//TODO 注释的作用

// TODO 用来标记某处&#xff0c;表示该处含有待办事项&#xff08;尚未解决&#xff09;。其设计本意只是提醒开发者注意&#xff0c;除了代码高亮之外&#xff0c;还可以借助编辑器实现快速定位。 如何使用&#xff1f; 直接在双斜杠后面加 TODO 或者 todo 即可&#xff0c…

CVPR2022医疗图像-GBCNet网络:胆囊癌(GBC)超声(USG)图像检测模型

Surpassing the Human Accuracy:Detecting Gallbladder Cancer from USG Images with Curriculum Learning&#xff1a;超越人类的准确性:基于课程学习的USG图像检测胆囊癌 目录 一、背景与意义 二、介绍 三、网络框架 3.1 区域选择网络 3.2 MS-SoP分类器 3.3 多尺度块 …

抖音运营_抖音电商介绍

截止20年8月&#xff0c;抖音的日活跃数高达6亿。 20年6月&#xff0c;上线抖店 &#xff08;抖音官方电商&#xff09; 一 抖店的定位和特色 1 一站式经营 帮助商家进行 商品交易、店铺管理、客户服务 等全链路的生意经营 2 多渠道拓展 抖音、今日头条、西瓜、抖音火山版…

ASP+ACCESS基于WEB社区论坛设计与实现

摘要&#xff1a;系统主要实现BBS网站全部功能。采用目前应用最为广泛的ASP作为开发工具来开发此系统、以保证系统的稳定性。采用目前最为流行的网页制作工具Dreamweaver和目前最为流行的动画制作工具Flash MX。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发&…

首次面试实习岗,有点紧张。。。

首次面试实习岗&#xff0c;有点紧张。。。 文章目录 首次面试实习岗&#xff0c;有点紧张。。。算法1.三角形问题2.一年中第几天问题 提问&#xff1a;一、SpringBoot的配置文件中的数据有哪几种获取方式&#xff0c;分别是怎么获取的&#xff1f;二、Autowire和Resource有什么…

卤菜销售|基于SSM+vue的智能卤菜销售平台的设计与实现(源码+数据库+文档)

智能卤菜销售平台 目录 基于SSM&#xff0b;vue的智能卤菜销售平台的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 4商家功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…