点击蓝字
CHENJI
关注我们
日期:2024年5月6日
作者:L-Center
介绍:小程序反编译
0x00 前言
之前的文章有分享过权限调用和小程序的抓包测试,最近在学习小程序的反编译,记录一下。
0x01 提取源码
1.1 小程序框架
通过查询官方文档可以看到,整个小程序框架系统分为两部分:
逻辑层(App Service
)和 视图层(View
)。
小程序提供了自己的视图层描述语言WXML
和WXSS
,以及基于JavaScript
的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑。
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:
文件 必需 作用
app.js 是 小程序逻辑
app.json 是 小程序公共配置
app.wxss 否 小程序公共样式表
一个小程序页面由四个文件组成,分别是:
必需 作用
js 是 页面逻辑
wxml 是 页面结构
json 否 页面配置
wxss 否 页面样式表
1.2 工具及环境准备
在了解小程序基础框架后,需要准备以下的工具:
wxappUnpacker
UnpackMiniApp
微信开发者工具
WinPC
node
1.3 源码提取
在电脑微信的【设置-文件管理】处打开文件夹。
在weChat FilesWeChat Files
目录下打开自己账户的文件夹。
有一个Applet
的文件,但这个文件下有很多的wx-xxx
文件。
我们可以通过删除所有文件再打开需要测试的小程序来确认,也可以通过查看修改时间来确认测试的小程序所在的文件夹。
确认好测试的小程序文件夹后,打开一个随机生成的数字文件夹,在找的格式为__APP__.wxapkg
的文件,具体路径如下:
C:Users{{电脑用户名}}DocumentsWeChat FilesApplet{{小程序AppID}}{{随机产生的数字}}__APP__.wxapkg
1.4 源码解密
获取到__APP__.wxapkg
以后,使用UnpackMiniApp
工具进行解密。
注意的是一定要在打开原路径下进行解密,不能复制到其他位置进行解密。
1.5 源码反编译
拿到解密后的文件,我们需要用到wxappUnpacker
工具。
首先安装node
,下载地址https://nodejs.org/en/
,一直点击下一步即可。
安装完成后使用node -v
确认是否安装成功。
下载完成后安装依赖:
npm install
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
完成后使用node .wuWxapkg.js wx9775dbe2f7568077.wxapkg
命令反编译。
输出完成后会在同目录下生成一个相同名字的文件夹。
使用微信开发者工具将这个文件夹开打即可。
0x02 总结
在进行反编译的时候遇到了几个问题:
在使用`UnpackMiniApp`工具进行解密时一定要在原目录下进行。
再解密多个.wxapkg文件时,一定要将之前解密文件重命名,因为每次解密后都会默认一个名字并将之前的文件覆盖。
打开文件发现有很多wxapkg加密包,这就是做了分包处理,执行node wuWxapkg.js -s=主包反编译后的目录 小程序分包所在位置。
免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。
点此亲启
原文始发于微信公众号(宸极实验室):『杂项』如何对小程序进行反编译?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论