【微信小程序反编译】入门1

news/2024/9/20 1:30:08/文章来源:https://www.cnblogs.com/o-O-oO/p/18404364

原创 zkaq - Tobisec 掌控安全EDU

一、前言

这几天在跟着师傅一起学习微信小程序的相关知识点,前面的微信小程序的漏洞挖掘蛮简单的,但是到后面需要黑盒测试了,就需要我们对小程序进行一个反编译,进行一个代码审计相关的知识点了。

小程序的反编译相关工具有好几个,下面我给师傅们都举例了我平常使用的几款github工具的简单入门使用,最后面给师傅们演示了下实战中我们如何去反编译微信的小程序。

二、小程序反编译简介

什么是小程序?

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

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



小程序目录结构
小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:

一个小程序页面由四个文件组成,分别是:

三、反编译工具篇

下面给师傅们简单介绍几款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 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、反编译以后就可以看我们的文件夹里面的文件了

五、 总结

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

申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

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

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

相关文章

代码随想录day55 || 图论5

并查集197 图中是否存在有效路径 var father []int func validPath(n int, edges [][]int, source int, destination int) bool {// 使用并查集算法,涉及到的操作,包括init,find, issample,joinfather = make([]int, n)for i, _ := range father { // initfather[i] = i}…

D45XT120-ASEMI无人机专用D45XT120

D45XT120-ASEMI无人机专用D45XT120编辑:ll D45XT120-ASEMI无人机专用D45XT120 型号:26MT160 品牌:ASEMI 封装:DXT-5 批号:2024+ 现货:50000+ 最大重复峰值反向电压:1200V 最大正向平均整流电流(Vdss):45A 功率(Pd):大功率 芯片个数:5 引脚数量:5 安装方式:直插 类型…

golang中关于死锁的思考与学习

1、Golang中死锁的触发条件 1.1 书上关于死锁的四个必要条件的讲解 发生死锁时,线程永远不能完成,系统资源被阻碍使用,以致于阻止了其他作业开始执行。在讨论处理死锁问题的各种方法之前,我们首先深入讨论一下死锁特点。 必要条件: 如果在一个系统中以下四个条件同时成立,…

ASP.NET 8 AOT 遍历文件夹获取文件名称及时长

朋友下了N多视频记不住文件夹下都有啥了…问批处理怎么导出文件夹下所有文件名及视频时长…批处理导出文件名好弄,获取视频时长真没用过…想到 .net 控制台程序 AOT 发布,不和批处理差不多效果…新建个控制台项目选下使用AOT 首先要获取文件的时长,我们需要用下 TagLibSharp…

公安网络信息体系能力分类

来源:中国电子科学研究院学报,《公安网络信息体系顶层设计》

轮胎充气压力 气压单位换算 All In One

轮胎充气压力 & 气压单位换算 All In One bar / psi 1 bar = 14.5 psi轮胎充气压力 & 气压单位换算 All In Onebar / psi气压单位换算 1 bar = 14.5 psi demos(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblog…

【工具推荐】xxl-jobExploitGUI - xxl-job一键漏洞利用工具+一键getshll

工具介绍 xxl-jobExploitGUI实现了XXL-JOB默认accessToken权限绕过漏洞的单个检测、批量检测、一键反弹shell功能,后续会持续更新优化,添加POC检测等。 下载链接: 链接: https://pan.quark.cn/s/55ed00b1512d使用说明 单个检测批量检测 fofa语句: body="{\"code\…

电动自行车轮胎规格参数图解教程 All In One

电动自行车轮胎规格参数图解教程 All In One电动自行车轮胎规格参数图解教程 All In One电动车轮胎参数单位换算1 in / 1 英寸 => 2.54 cm / 2.54 厘米https://convertlive.com/zh/u/转换/英寸/自/厘米#10 轮胎参数 轮胎尺寸(英寸): 轮毂尺寸(英寸): 10in 轮胎宽度/断面宽度…

首发找大佬定制的 黑神话悟空内置修改器

无敌模式 无伤判定 无限生命 无限法力 无限气力 无限棍势各种几十个功能 选择游戏进程直接起飞 自己打气死了一直过不去 直接找大佬定制一个 不想让兄弟们受气了 不限速链接:https://pan.quark.cn/s/f4f826c88f1d本文来自博客园,作者:Mr小扎仙森,转载请注明原文链接:http…

【工具推荐】TPscan (最新版本) - 一键ThinkPHP漏洞检测getshell

工具介绍 一键ThinkPHP漏洞检测,基于Python3,一键getshell 下载链接: 链接: https://pan.quark.cn/s/ff51139a5ace使用说明看着就真的看着,不学就真的5

强制删除PG数据库

删除数据是否显示: 有会话正在使用数据库: 解决: 一、查看谁在使用此数据库:SELECT * FROM pg_stat_activity WHERE usename = user where datname = your_database_name; 这将返回当前用户的所有活跃连接的详细信息。 二、如果可以最好先把占用的会话关掉后再删除 三、强…

训练框架技术序列一:Megtron-LLM架构源码

本文章涉及的Megatron-llm的XMind思维导图源文件和PDF文件,可在网盘下载: https://pan.baidu.com/s/1xRZD-IP95y7-4Fn0C_VJMg 提取码: qxff一、引言 Megatron-Core 是一个基于 PyTorch 的开源库,专为在 NVIDIA GPU 上高效训练大型语言模型(LLMs)而设计。它提供了一系列 GP…