微信小程序反编译~2022年
小程序反编译
前言
微信小程序反编译可以通过对小程序包进行反编来获取小程序源码,在一次信息收集的过程中对某公司的APP、微信公众号、小程序进行抓包数据分析寻找接口等有用的信息时,在抓包过程中由于微信的反抓包机制实际测试过程中遇到一些问题,导致通过直接抓包的方式抓取小程序数据失败。后通过一些方式了解到小程序反编,于是想到是否可以采取这种方式反编小程序后进行源码审计。这篇文章主要介绍了微信小程序反编的方法在这里与大家进行分享一同学习。
环境工具准备
- node.js运行环境
- 小程序解密脚本
- 反编脚本
- 微信小程序开发者工具
以上工具打包分享
链接: https://pan.baidu.com/s/1Az--jmLIuN2YOkK03AsBCw?pwd=1111
提取码: 1111
下载工具包后进行解压首先安装node.js环境,安装完成后通过cmd运行 node -v 和 npm -v查看版本是否安装成功。

小程序包下载
PC端和手机端小程序在运行时会将程序包缓存到本地,但是程序包经过了加密,我们不能够直接进行反编解包,这里我们需要首先对小程序包进行解密后才能够对其进行反编。
小程序包的解密首先需要找到小程序包缓存到本地的位置,这里以PC端为例不演示手机端。打开微信设置-文件管理,打开下图中的路径找到下图路径中WeChat Files文件夹。默认微信缓存文件在系统C盘用户文档目录下,我这里微信缓存位置做了修改。

路径下Applet目录就是微信小程序缓存的位置

打开目录我们可以看到有很多以wx开头+16位16进制数命名的文件夹,每个文件夹下就是一个微信小程序的缓存。

随便打开一个目录目录下名为__APP__.wxapkg包就是微信小程序的主包。

有些小程序可能会有下面这种情况除了__APP__.wxapkg包外还有一个或多个其他.wxapkg后缀的文件,其他的文件就是也是小程序的包,可以看做是子包,对于功能比较复杂的小程序可能会有多个包。

Applet下这么多的小程序缓存我们如何快速定位到自己要进行反编的小程序,这里总结了两个方法:
第一总方法是根据首次打开小程序的时间,我们第一次打开某个小程序的时候这时小程序会缓存到本地,可根据文件的修改时间大致判断。

第二种方法更为简单,我们直接将Applet文件夹下的所有小程序缓存包删除掉,再访问一次将要准备反编的小程序,这时Applet下就只有这一个小程序的缓存包了,简单粗暴哈哈哈。
小程序包解密
下面我们就使用小程序包解密工具对包进行解密,解压小程序包解密工具如下图运行UnpackMiniApp.exe




解密成功后输出到wxpack文件夹下,文件格式不变。
小程序包反编译
经过解密后的的包格式依然是 .wxapkg ,下一步我们需要对包进行反编译就可以获取小程序的源代码。
我们使用中的 wxappUnpacker 脚本对其进行反编译。步骤如下:
解压 wxappunpacker 进入这个目录后在目录下运行 cmd 执行命令
node wuWxapkg.js D:\小程序包解密\wxpack\wx8f446acf8c4a85f5.wxapkg
## 其中 D:\小程序包解密\wxpack\wx8f446acf8c4a85f5.wxapkg 为解密后的小程序包路径位置


运行上述命令反编译完成后在包路径下生成一个同名文件夹存储源代码

如果我们需要反编的小程序中有多个包,也就是有主包和子包的情况时,主包和子包的反编过程与前面的步骤相同,先进行解密。反编的时候先对主包进行反编,再对子包进行反编,子包反编与主包略有不同。使用命令如下:
## 1.主包反编node wuWxapkg.js xxx ## xxx为主包的路径##
2.子包反编node wuWxapkg.js xxx1 -s= xxx2 ## xxx1为子包的文件路径,xxx2为反编主包生成的文件路径
反编译如果使用过程中出现报错缺少相关组件,在根目录下使用cmd运行以下命令进行安装,通过我分享的工具包中是已经更新安装完的在node_modules文件下,默认不需要再重新安装,如执行存在相关组件问题可尝试重装解决。
npm installnpm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify



源码查看
完成解密和反编后我们已经获取到了小程序包的源码,最后我们可以使用微信小程序开发工具进行编辑开发或查看审阅源码。
在我分享的工具包中提供了win64版本的微信小程序开发工具安装包,如需不同版本的安装包也可自行到微信开发者官方网页进行下载https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
安装完成后我们运行工具使用游客模式登录

选择导入,进行导入小程序源码

选择要导入的小程序源码路径


导入后就可以进行审阅编辑操作了。

我在前面有提到手机端的微信小程序,实际上手机端和PC端的小程序包都是相同格式的只要我们找到手机小程序包缓存位置将包导出到电脑中也可进行反编,在PC端进行反编相对于从手机提取小程序包要方便一些。有兴趣的小伙伴可进行尝试。
参考连接:
https://www.52pojie.cn/thread-1336730-1-1.html
https://blog.csdn.net/qq_41510985/article/details/117924751
https://www.secpulse.com/archives/179273.html
微信小程序反编译~2022年的更多相关文章
- 如何找回微信小程序源码?2020年微信小程序反编译最新教程 小宇子李
前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...
- 微信小程序反编译~2020年
目录 摘要 介绍 安装反编译脚本 使用 获取wxapkg文件 反编译 结论 参考资料 摘要 安装wxappUnpacker小程序反编译工具并使用(2020.03) 关键词: 微信小程序反编译 wxss ...
- 微信小程序反编译
看到一个有意思的小程序,想了解是如何实现的,于是找了反编译方法. 安装adb驱动 百度安装adb驱动, 设计设置开发者模式,连接电脑. -> % adb devices List of devi ...
- 微信小程序 - 反编译线上源码
github地址:https://github.com/qwerty472123/wxappUnpacker 不过我好像从来未成功过哈,TX地图+.TX公交都失败了 点击下载以上两个文件 哦,对了,你 ...
- 微信小程序“反编译”
https://www.jianshu.com/p/ad8f417219e9 https://segmentfault.com/a/1190000018592740?utm_source=tag-ne ...
- 获取微信小程序源码
https://blog.csdn.net/aaron9185/article/details/80576183 http://lrdcq.com/me/read.php/66.htm https:/ ...
- 我为什么不看好微信小程序
我自认为对新技术还是比较有热情的,可对于小程序这个“新技术”,我却完全是被动的.去年9月份的时候,微信小程序开始内测,瞬间引爆朋友圈.知乎等一众分享平台.当时我大概了解了一下,觉得从技术角度上来说没啥 ...
- 微信小程序为什么不被看好?
我自认为对新技术还是比较有热情的,可对于小程序这个“新技术”,我却完全是被动的.去年9月份的时候,微信小程序开始内测,瞬间引爆朋友圈.知乎等一众分享平台.当时我大概了解了一下,觉得从技术角度上来说没啥 ...
- 微信小程序资源整理
微信小程序相关的文档.教程.开源项目等资源的整理,以便于开发学习使用. —— —— 收录仅作个人学习使用,涉及侵权行为及时联系: maple_6392@163.com 项目地址:GitHub | 码云 ...
- 微信小程序学习 动手撸一个校园网小程序
动手撸一个校园网微信小程序 高考完毕,想必广大学子和家长们都在忙着查询各所高校的信息,刚好上手微信小程序,当练手也当为自己的学校做点宣传,便当即撸了一个校园网微信小程序. 效果预览 源码地址:Gith ...
随机推荐
- macOS:无法打开“XXXX”,因为Apple无法检查其是否包含恶意软件。的解决办法
今天在安装node.js的时候出现了如下错误 从网上找到两种解决方案: 第一种(不建议)在终端输入以下命令即可 sudo spctl --master-disable1按回车键,随后提醒你输入电脑密码 ...
- Qt编写安防视频监控系统56-数据库分页
一.前言 在视频监控系统中也需要对日志记录进行查询显示,有时候查询到的记录并不能一页显示完,最好的做成翻页显示,如果所有记录都在一页显示通过滚动条查看,不是很符合用户习惯,比如搜索引擎的记录也都是分页 ...
- 解决pip命令报错及Python环境配置指南:从安装到优化
1. 错误日志 当我在 Linux 机器(使用 Debian 或 Ubuntu 或衍生发行版)上运行 pip install xyz 时,会出现这样的错误: error: externally-man ...
- Datawhale冬令营第二期!😀Task 1
Datawhale冬令营第二期-Task1:动手体验AI辅助编程:番茄钟 对应链接:https://www.datawhale.cn/activity/116/23/94?rankingPage=1 ...
- 计算机视觉中由基本矩阵F或者本质矩阵E计算摄像机投影矩阵时,经常提到“相差一个尺度因子”的含义
在通过二维像素坐标恢复三维坐标的过程中,经常出现这个齐次坐标系.尺度不变性的概念.这篇博客讲的比较好. 一.关于齐次坐标系的直观感受 在我们的世界里,两平行线是永远不会相交的,但是在投影空间里,两条平 ...
- 即时通讯技术文集(第42期):直播技术合集(Part2) [共13篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第42 期. [-1-] 实时音频的混音在视频直播中的技术原理和实践总结 [链接] http:/ ...
- 阿里IM技术分享(三):闲鱼亿级IM消息系统的架构演进之路
本文由阿里闲鱼技术团队今朝.有攸分享,本次有修订. 1.引言 闲鱼即时消息系统历经数代迭代,目前已能稳定的支撑亿级消息体量. 在此消息系统的建设过程中,我们经历了从简单到复杂.从困扰到破局,每一次的技 ...
- 【漏洞分析】20250105-SorraStaking:奖励金额计算错误,每次取款都有大收益
背景信息 2024-12-21 11:58:11 (UTC) 准备交易:https://app.blocksec.com/explorer/tx/eth/0x72a252277e30ea6a37d2d ...
- GeoServer加载Arcgis切片服务
使用GeoServer中的GeoWebCache加载Arcgis切片服务 下载安装 GeoServer和GeoWebCache的下载安装都非常简单,这里选择"独立于平台的二进制版本" ...
- oracle和sqlserver对于事务数据库死锁处理的区别
create table aa_test ( id int constraint TEST_PK primary key, name varchar2(50) ) / insert into aa_t ...