微信小程序渗透 | 微信小程序反编译

admin 2024年9月9日19:14:09评论27 views字数 2789阅读9分17秒阅读模式
本文由掌控安全学院 -  Tobisec 投稿

 

0x1 前言

这几天在跟着师傅一起学习微信小程序的相关知识点,前面的微信小程序的漏洞挖掘蛮简单的,但是到后面需要黑盒测试了,就需要我们对小程序进行一个反编译,进行一个代码审计相关的知识点了。
小程序的反编译相关工具有好几个,下面我给师傅们都举例了我平常使用的几款github工具的简单入门使用,最后面给师傅们演示了下实战中我们如何去反编译微信的小程序。
微信小程序渗透 | 微信小程序反编译

0x2 小程序反编译简介

什么是小程序?

作为中国特有的一种程序形态,小程序在我们的日常生活中已经无处不在。腾讯、百度、阿里巴巴、字节跳动、京东等各家互联网大厂都有各自的生态平台,当然,也有快应用这种行业联盟型的生态平台。

微信小程序渗透 | 微信小程序反编译

app和小程序的区别有什么?

方式
微信小程序
APP
下载安装
通过微信(扫描二维码、搜索、分享)即可获得
从应用商店(App Store、应用汇等)下载安装
内存占用
无需安装,和微信共用内存使用,占用内存空间忽略不计
安装于手机内存,一直占用内存空间,太多的 App 可能会导致内存不足
手机适配
一次开发,多终端适配
需适配各种主流手机,开发成本大
产品发布
提交到微信公众平台审核,云推送
向十几个应用商店提交审核,且各应用商店所需资料不一样,非常繁琐
功能区别
限于微信平台提供的功能
对硬件资源的利用更加淋漓尽致,可以做出功能、设计、效果和流畅程度远远超过小程序的软件和服务
传输要求
必须使用 HTTPS,且绑定域名需要备案,不能直接使用 IP 作为地址
依照开发商自主要求,HTTPS 传输可选可不选
开发背景
适合初创团队,试错成本低,需要较少时间和资金投入
适合成熟的商业大公司,对自我品牌要求较高的企业

小程序目录结构

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:
文件
必需
作用
app.js[1]
小程序逻辑
app.json[2]
小程序公共配置
app.wxss[3]
小程序公共样式表
一个小程序页面由四个文件组成,分别是:
文件类型
必需
作用
js[4]
页面逻辑
wxml[5]
页面结构
json[6]
页面配置
wxss[7]
页面样式表

0x3 反编译工具篇

下面给师傅们简单介绍几款github上面的微信小程序wxapkg解包/解密工具,然后后面介绍下反编译工具

1、wxapkg解包/解密工具

wxapkg工具下载地址:https://github.com/zhuweiyou/wxapkg

微信小程序渗透 | 微信小程序反编译

简单使用

wxapkg是PC 微信小程序一键解密和解包工具,使用的使用也很方便
使用方法如下:
1.在 release 下载 wxapkg.exe 文件
2.PC 微信 -> 设置 -> 文件管理 -> 打开文件夹 -> 找到小程序文件 /WeChat Files/Applet/{wxid}/{n}/__APP__.wxapkg
3.鼠标拖动 __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 esprimanpm install css-treenpm install cssbeautifynpm install vm2npm install uglify-esnpm install js-beautify

0x4 实操演示

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.wxapkgLinux系统使用: ./bingo.sh testpkg/master-xxx.wxapkg//解包子包windows系统使用: ./bingo.bat testpkg/sub-1-xxx.wxapkg -s=../master-xxxLinux系统使用: ./bingo.sh testpkg/sub-1-xxx.wxapkg -s=../master-xxx
微信小程序渗透 | 微信小程序反编译
6、反编译以后就可以看我们的文件夹里面的文件了
微信小程序渗透 | 微信小程序反编译

0x5 总结

这篇文章主要是介绍微信小程序的反编译过程,针对微信小程序的相关知识点进行的一个讲解,最后面以实战分析中国邮政的微信小程序包来演示,让师傅们更加清楚的了解这个微信小程序的反编译过程。最后,希望这篇文章对师傅们有帮助哈

 

 

原文始发于微信公众号(掌控安全EDU):微信小程序渗透 | 微信小程序反编译

 


  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月9日19:14:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   微信小程序渗透 | 微信小程序反编译http://cn-sec.com/archives/3147081.html

发表评论

匿名网友 填写信息