小程序反编译

小程序解密+反编译

将访问的小程序进行解密和反向编译拿到部分源码,然后对源码进行安全审计,分析出其中可能存在的信息泄露或者说路径等一些关键信息。

前置环境准备

1、nodejs环境安装(https://nodejs.org/en,官网安装即可)

2、解密反编译工具(wxapkg:https://github.com/wux1an/wxapkg/releases/tag/v1.5.0)

3、微信小程序(一般大厂的小程序可能存在无法反编译,选一些简单点的就行)

反编译最初目录结构

示例:

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
1myApp/
2 ├── app.json ——小程序全局配置文件,用于定义小程序的基本属性和页面路径。)
3 ├── app.wxss ——全局样式表,定义整个小程序的公共样式。)
4 ├── app.js ——小程序的入口文件,可以在这里进行全局数据初始化、监听、处理等。
5 ├── project.config.json ——项目配置文件,用于设置编译模式、调试模式、云开发环境等信息。
6 ├── pages/ - 存放所有页面文件的地方,每个页面由以下四个同名文件组成:
7 │ ├── index/
8 │ │ ├── index.wxml ——页面结构文件,使用类似HTML的WXML语言编写。
9 │ │ ├── index.wxss ——页面样式文件,使用WXSS语言编写,用于定义该页面的样式,类似css
10 │ │ ├── index.js ——页面逻辑文件,使用JavaScript编写,用于处理页面逻辑和数据交互。
11 │ │ └── index.json ——页面配置文件,用于定义页面的窗口样式和一些其他页面级别的配置。
12 │ └── about/
13 │ ├── about.wxml
14 │ ├── about.wxss
15 │ ├── about.js
16 │ └── about.json
17 ├── components/ ——存放可复用的组件文件夹,组件同样有 .wxml, .wxss, .js 和 .json 文件。
18 │ └── myComponent/
19 │ ├── myComponent.wxml
20 │ ├── myComponent.wxss
21 │ ├── myComponent.js
22 │ └── myComponent.json
23 ├── utils/ ——存放工具函数的文件夹,例如日期处理、数据加密解密等。
24 │ └── api.js
25 ├── static/ ——存放静态资源如图片、字体、音频视频等文件。
26 │ └── logo.png
27 ├── api/ ——通常用于存放网络请求相关的代码,如与后端服务器的数据交互。

上述结构中,pages/index/ 目录下的文件构成了首页,而 pages/about/ 目录下的文件则构成了关于页面。每个页面的四个文件组成了一个完整的页面模块。

反编译目录结构(微信服务器整合)

反编译后的目录结构主要由反编译的工具决定,反编译后的目录结构除了上述最原始的目录,还包括一下由微信服务器整合过后的结构。

1
2
3
4
5
6
7
8
9
只是把部分文件进行了合并
app-config.json
小程序工程主要包括工具配置 project.config.json,全局配置 app.json 以及页面配置 page.json 三类 JSON 配置文件。

app-service.js
在小程序项目中 JS 文件负责交互逻辑,主要包括 app.js,每个页面的 page.js,开发者自定义的 JS 文件和引入的第三方 JS 文件,在“编译”后所有这些 JS 文件都会被汇总到app-service.js 文件中

app-wxss.js
在小程序项目中 wxss 文件负责交互逻辑,主要包括 app.wxss,以及每个页面的wxss文件

开始反编译

1、定位微信小程序目录的位置

登录微信——>设置——>文件管理

然后随机挑选一个小程序打开(尽量多点点其中的功能点)

定位到该目录下的Applet,通过时间找到指定小程序的目录即可

2、使用解密&反编译工具开始反编译

反编译的工具还有unveilr(https://github.com/junxiaqiao/unveilr-v2.0.0)、小锦哥小程序工具([https://get-shell.com/3458.html](https://get-shell.com/3458.html)),不过经过反编译后的结果对比得出:虽然wxapkg反编译的内容比上述两款更多,但unveilr反编译更符合传统的微信小程序的目录结构,更适合我们分析,只能说各有优劣。

1、wxapkg

1
wxapkg.exe unpack -o unpack -r "E:/ASUS/Documents/WeChat Files/Applet/wx1467dbe575243210"

但这并不是最初的原项目文件结构,原因是微信服务器会将小程序源码中所有的“js”文件压入“app-service.js”文件中,将所有的“json”文件压入“app-config.json”中,将所有的“wxml”文件压入“page-frame.js”文件中,“wxss”则在处理之后以“js”文件的形式存留在对应页面目录之下。

2、unveilr

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

3、编译完成

访问反编译成功的文件,开始提取敏感信息和代码审计即可

常见漏洞

弱口令、AS、AK、敏感信息、接口泄露


小程序反编译
http://example.com/2024/08/13/小程序反编译/
作者
Yf3te
发布于
2024年8月13日
许可协议