扫码领资料
获网安教程
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
这几天在跟着师傅一起学习微信小程序的相关知识点,前面的微信小程序的漏洞挖掘蛮简单的,但是到后面需要黑盒测试了,就需要我们对小程序进行一个反编译,进行一个代码审计相关的知识点了。
小程序的反编译相关工具有好几个,下面我给师傅们都举例了我平常使用的几款github工具的简单入门使用,最后面给师傅们演示了下实战中我们如何去反编译微信的小程序。
什么是小程序?
作为中国特有的一种程序形态,小程序在我们的日常生活中已经无处不在。腾讯、百度、阿里巴巴、字节跳动、京东等各家互联网大厂都有各自的生态平台,当然,也有快应用这种行业联盟型的生态平台。
app和小程序的区别有什么?
方式 |
微信小程序 |
APP |
下载安装 |
通过微信(扫描二维码、搜索、分享)即可获得 |
从应用商店(App Store、应用汇等)下载安装 |
内存占用 |
无需安装,和微信共用内存使用,占用内存空间忽略不计 |
安装于手机内存,一直占用内存空间,太多的 App 可能会导致内存不足 |
手机适配 |
一次开发,多终端适配 |
需适配各种主流手机,开发成本大 |
产品发布 |
提交到微信公众平台审核,云推送 |
向十几个应用商店提交审核,且各应用商店所需资料不一样,非常繁琐 |
功能区别 |
限于微信平台提供的功能 |
对硬件资源的利用更加淋漓尽致,可以做出功能、设计、效果和流畅程度远远超过小程序的软件和服务 |
传输要求 |
必须使用 HTTPS,且绑定域名需要备案,不能直接使用 IP 作为地址 |
依照开发商自主要求,HTTPS 传输可选可不选 |
开发背景 |
适合初创团队,试错成本低,需要较少时间和资金投入 |
适合成熟的商业大公司,对自我品牌要求较高的企业 |
小程序目录结构
小程序包含一个描述整体程序的 app
和多个描述各自页面的 page
。
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:
文件 |
必需 |
作用 |
app.js |
是 |
小程序逻辑 |
app.json |
是 |
小程序公共配置 |
app.wxss |
否 |
小程序公共样式表 |
一个小程序页面由四个文件组成,分别是:
文件类型 |
必需 |
作用 |
js |
是 |
页面逻辑 |
wxml |
是 |
页面结构 |
json |
否 |
页面配置 |
wxss |
否 |
页面样式表 |
下面给师傅们简单介绍几款github上面的微信小程序wxapkg解包/解密工具,然后后面介绍下反编译工具
1、wxapkg解包/解密工具
wxapkg工具下载地址:https://github.com/zhuweiyou/wxapkg
简单使用
wxapkg是PC 微信小程序一键解密和解包工具,使用的使用也很方便
使用方法如下:
-
在 release 下载
wxapkg.exe
文件 -
PC 微信 -> 设置 -> 文件管理 -> 打开文件夹 -> 找到小程序文件
/WeChat Files/Applet/{wxid}/{n}/__APP__.wxapkg
-
鼠标拖动
__APP__.wxapkg
文件到wxapkg.exe
即可完成解包, 将在当前目录输出解包后的文件夹
2、PC微信小程序一键解密软件
软件介绍
PC微信小程序一键解密软件是一款PC微信小程序包解密工具C#版,无需root或模拟器 ,说白了就是获取线上小程序源码的辅助工具,软件能够帮助用户轻松获取小程序的源码,为小程序的使用提供了帮助。
工具下载网站:https://www.cr173.com/soft/247611.html
简单的使用就是把微信小程序的wxapkg包放入里面,然后进行解密
3、wxappUnpacker反编译
简单介绍
wxappUnpacker是基于node反编译小程序工具
工具下载地址:https://github.com/system-cpu/wxappUnpacker
使用这个工具,先得安装npm和以下依赖环境
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify
1、浅谈xxxxx.wxapkg
先来想想一个很简单的问题,小程序的源文件存放在哪?
当然是在微信的服务器上。
但是在微信服务器上,普通用户想要获取到,肯定是十分困难的,有没有别的办法呢?
简单思考一下我们使用小程序的场景就会明白,当我们点开一个微信小程序的时候,其实是微信已经将它的从服务器上下载到了手机,然后再来运行的。
所以,虽然我们没能力从服务器上获取到,但是我们应该可以从手机本地找到到已经下载过的小程序源文件
那么如何才能在手机里找到小程序的源文件包呢?
具体目录位置直接给出:
/data/data/com.tencent.mm/MicroMsg//appbrand/pkg/
在这个目录下,会发现一些 xxxxxxx.wxapkg 类型的文件,这些就是微信小程序的包
微信小程序的格式就是:.wxapkg
.wxapkg是一个二进制文件,有其自己的一套结构。
2、小程序反编译
1、第一步:先找到小程序保存的地址,一般先找到微信的文件管理下
2、第二步:然后就可以直接到刚才的存储微信文件的目录下了,可看到相关小程序了
3、我这里的wx开头的文件都是以前的小程序打开的缓存,所以可以不用看,下面我来拿中国邮政微信小程序来举例
4、我这里物理机环境有问题,这里使用虚拟机win10 给师傅们演示下
查看applet文件目录时会发现当前小程序的缓存储存文件
使用解码工具对其文件进行解码,这里有两个文件分为主包跟子包都需要解码
在wxpack目录里面放着解好的包
5、然后再使用我上面介绍的反编译工具wxappUnpacker
使用命令,先主包后子包
当检测到 wxapkg 为子包时, 添加-s 参数指定主包源码路径即可自动将子包的 wxss,wxml,js 解析到主包的对应位置下. 完整流程大致如下:
##获取主包和若干子包##
//解包主包
windows系统使用: ./bingo.bat testpkg/master-xxx.wxapkg
Linux系统使用: ./bingo.sh testpkg/master-xxx.wxapkg
//解包子包
windows系统使用: ./bingo.bat testpkg/sub-1-xxx.wxapkg -s=../master-xxx
Linux系统使用: ./bingo.sh testpkg/sub-1-xxx.wxapkg -s=../master-xxx
6、反编译以后就可以看我们的文件夹里面的文件了
这篇文章主要是介绍微信小程序的反编译过程,针对微信小程序的相关知识点进行的一个讲解,最后面以实战分析中国邮政的微信小程序包来演示,让师傅们更加清楚的了解这个微信小程序的反编译过程。最后,希望这篇文章对师傅们有帮助哈!
文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担。
圈子专注于更新src相关:
1、维护更新src专项漏洞知识库,包含原理、挖掘技巧、实战案例
2、分享src优质视频课程
3、分享src挖掘技巧tips
4、微信小群一起挖洞
5、不定期有众测、渗透测试项目
申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.
原文始发于微信公众号(神农Sec):浅谈微信小程序反编译
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论