微信小程序反编译方法分享

news2024/11/15 6:54:45

文章目录

  • 一、前言
  • 二、准备工作
    • (一)安装Nodejs
    • (二)解密和逆向工具
  • 三、小程序缓存文件解密
    • (一)定位小程序缓存路径
    • (二)源码解密
    • (三)源码反编译
  • 四、小结


一、前言

在日常开展渗透测试的工作中,经常会遇到各种各样的小程序,为了方便渗透测试人员及开发人员分析小程序的前端源代码,了解小程序的运行逻辑和页面上隐藏的信息,本文分享了利用解密和逆向工具,从本地缓存文件中反编译小程序前端源代码的方法,希望对大家日常开展工作有帮助。


二、准备工作

(一)安装Nodejs

Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境,通常是运行在服务端的 JavaScript。本文需要nodejs的环境提供npm工具来安装相关依赖,因此需要首先安装nodejs。
Node.js 官方下载地址:
https://nodejs.org/zh-cn/download/
之后根据自己使用的操作系统选择相应的版本即可,这里我选择windows版:
在这里插入图片描述
设置好安装路径后一路点击next即可。
之后在cmd中输入:

node -v

在这里插入图片描述
出现版本信息即表示安装成功。
注意:在执行例如npm install xxx -g等命令全局安装的时候,默认会将模块安装在C:\Users\用户名\AppData\Roaming路径下的npm和npm_cache中,不方便管理且占用C盘空间,所以这里我参考了别人的配置,自定义的全局模块安装目录,在node.js安装目录下新建两个文件夹 node_global和node_cache。
然后在cmd中执行以下命令(注意前两条命令改成你们自己的路径):

# 设置全局模块安装路径
npm config set prefix "D:\nodejs\node_global"
# 设置缓存目录
npm config set cache "D:\nodejs\node_cache"
# 设置镜像源为淘宝npm镜像,可提高下载速度
npm config set registry=https://registry.npm.taobao.org

本文只是为了使用npm来安装东西,实际上到这里就可以结束了。如果需要更多的功能,则后续还需要配置环境变量,请参考其他文章,本文不过多涉及。
这里顺便提一下,如果需要进行版本相关的操作,请参考以下命令:

命令	说明
nvm install 14.15.5 安装指定的版本的nodejs
nvm use 10.5.0  使用指定版本的nodejs
nvm list	查看已经安装的版本
nvm list installed	查看已经安装的版本
nvm list available	查看网络可以安装的版本
nvm arch	查看当前系统的位数和当前nodejs的位数
nvm install [arch]	安装制定版本的node 并且可以指定平台 version 版本号 arch 平台
nvm on	打开nodejs版本控制
nvm off	关闭nodejs版本控制
nvm proxy [url]	查看和设置代理
nvm node_mirror [url]	设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/
nvm npm_mirror [url]	设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是:https://github.com/npm/npm/archive/.
nvm uninstall	卸载制定的版本
nvm use [version] [arch]	切换制定的node版本和位数
nvm root [path]	设置和查看root路径
nvm version	查看当前的版本

(二)解密和逆向工具

在获得小程序的缓存文件之后,需要先使用解密工具进行一轮解密,之后才能进行逆向。
解密工具下载地址:https://share.weiyun.com/uMqNGOXv

逆向工具下载地址:https://pan.baidu.com/s/1FigJmOKs76LBOZDQq5nOnA
提取码:1234

逆向工具备用下载地址:
https://pan.baidu.com/s/12WPychwfjMfzgSgIi9aUGA?pwd=fpni取码: fpni

注:以上地址若失效,可及时私信我。


三、小程序缓存文件解密

(一)定位小程序缓存路径

首先确定小程序的缓存目录,在微信上打开设置,然后找到文件管理:
在这里插入图片描述
点击打开文件夹,打开Applet文件夹:
在这里插入图片描述
这里面即存储了小程序的本地缓存文件:
在这里插入图片描述

(二)源码解密

接着打开一个小程序,这里不便透露具体用的是哪个小程序,大家可以自行去寻找感兴趣的小程序玩一下。
首先打开目标小程序,然后多点一些页面,让小程序在本地产生缓存文件,之后查看本地文件夹,会看到产生了一个文件夹,通过文件夹创建的时间可以判断出哪个文件夹里的数据是属于刚访问小程序的缓存目录:
在这里插入图片描述
那么之后,我们需要先对这些缓存数据进行一次解密,方法很简单,打开解密工具:
在这里插入图片描述
然后点击’选择加密小程序包’,并选中自己刚才定位出来的小程序的缓存目录。如图所示,已经解密成功:
在这里插入图片描述
解密后的文件在解密程序同目录下的wxpack文件夹中:
在这里插入图片描述
在这里插入图片描述

(三)源码反编译

首先解压已下载好的wxappUnpacker,然后进入该文件夹,复制该文件夹的地址,然后以管理员身份打开cmd窗口(直接按win+R打开运行窗口,然后输入cmd,按ctrl+shift+enter),然后跳转到wxappUnpacker内,如下所示:
在这里插入图片描述
注意一定要管理员身份运行cmd窗口,否则后面可能造成命令执行出错。
然后开始安装依赖,按顺序执行以下命令:

npm install
npm install esprima
npm install css-tree
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify

在这里插入图片描述
我这里因为已经有安装过了,所以和你们的会不太一样。执行以后不要出现error的报错信息即可。
然后根据前面解密的文件构造命令如下:

node ./wuWxapkg.js E:\all_tools\WeiXinXiaoChengXu\小程序包解密\wxpack\wx3b25611579a1b7ec.wxapkg 

这条命令的格式是:

node ./wuWxapkg.js 主包路径

还有一种格式:

node ./wuWxapkg.js 分包路径 -s=主包路径

有时候我们解密后得到的是主包后的分包(具体为什么我也不清楚,看情况),那么这时候就可以很方便的用到-s参数来指定存放的路径。
现在我们将根据第一种命令格式构造的命令在cmd中执行:
在这里插入图片描述
在这里插入图片描述
此时可以看到已经生成了一个文件夹,当前内容如下:
在这里插入图片描述
此时用vscode打开这个文件夹:
在这里插入图片描述
在这里插入图片描述
此时就可以自由查看小程序的前端源码和各种图片了:
在这里插入图片描述
在这里插入图片描述


四、小结

本文分享了从微信小程序本地缓存文件中反编译获得源码的方法,其中安装依赖时需要用到npm,而npm不需要单独安装,因为在安装 Node 的时候,会连带一起安装 npm。因此我们需要安装一个nodejs,之后使用解密和反编译工具按照先解密后反编译的步骤即可获得小程序的源码,不足之处敬请谅解。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【神级Python代码】作为技术xiao白如何制作一款超炫酷的黑客主题代码雨?牛逼就完了。(源码分享学习)

前言 哈喽,我是木子,今天给大家制作一款超级炫酷的代码啦。 提到《黑K帝国》,字符雨可谓是让人印象深刻。 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 ​…

KD04丨震荡动量_波段王

大家好,今天我们分享可达鸭系列第4篇策略——震荡动量。 该篇策略来自于2021-2022年度,量化杂志翻译系列——费雪逆变换。如下图所示: 2023年度加入股票和期货社群,均可以获得当年免费12期历史12期的量化杂志资…

Mysql UDF提权复现Raven2

Raven2通关过程 主要通过Raven2靶机进行复现Mysql UDF提权,以下为通关过程。 靶机镜像:https://www.vulnhub.com/entry/raven-2,269/ 信息收集 拿到靶机ip:192.168.112.129 nmap -sP 192.168.112.0/24探测开放端口,nmap用烂了…

硬件系统工程师宝典(8)-----初识电源完整性分析

各位同学大家好,欢迎继续做客电子工程学习圈,今天我们继续来讲这本书,硬件系统工程师宝典。 上篇我们说到信号的时序设计需要保证数据和时钟信号同步传输。今天我们开始学习电源完整性分析需要考虑什么? PI分析概述 电源完整性…

2023年湖南建筑八大员(材料员)模拟真题及答案

百分百题库提供建筑八大员(材料员)考试试题、建筑八大员(材料员)考试预测题、建筑八大员(材料员)考试真题、建筑八大员(材料员)证考试题库等,提供在线做题刷题,在线模拟考…

2023年美赛C题 预测Wordle结果Predicting Wordle Results这题太简单了吧

2023年美赛C题 预测Wordle结果Predicting Wordle Results 更新时间:2023-2-17 11:30 1 题目 2023年MCM 问题C:预测Wordle结果![在这里插入图片描述](https://img-blog.csdnimg.cn/e059d917333e497e90ca082605869e3c.png#pic_center) Wordle是纽约时报目前每天提…

对于EVM系链交易缓冲池txpool的理解

区块链就是和交易打交道,我们今天就介绍下,交易处理过程中的一个重要组成部分:txpool。这篇文章主要从功能角度介绍,通过这篇文章会了解: txpool的在交易中的位置和作用。txpool的功能,核心组成部分queued…

停车辅助系统的技术和变化

各种各样的停车辅助系统已经存在了很长时间,但用户经常在不知道什么技术以及它是如何工作的情况下使用它们。 今天我们依次来谈谈停车辅助系统是什么,怎么发展以及如何应用的。 ​ 1.手信号 您可能会想,“为什么手信号是停车辅助系统&#x…

变电站如何解决人力不足问题?这个技能划重点

随着企业的管理水平的不断提高,各企业都建立的大大小小的数据机房。由于机房的大小不同、监测内容不同,费用也不尽相同,而数据机房存储着大量的珍贵数据,一旦丢失损毁会给企业造成不可挽回的损失。 变电站安装机房动环监控系统4大…

MySQL索引类型——有五种

文章目录前言一、MySQL中的索引类型有以下几种1.1 普通索引1.1.1 直接创建索引1.1.2 修改结构的方式添加索引1.1.3 创建表的时候同时创建索引1.1.4 删除索引1.2 唯一索引1.2.1 创建唯一索引1.2.2 修改表结构1.2.3 创建表的时候直接指定1.3 主键索引1.4 组合索引1.5 全文索引1.5…

EdrawMax 12.0.7 Ultimate 多语言版

EdrawMax多合一图表软件。获得市场上最强大、最专业的图表软件。现在比较一下,看看为什么 Lucidchart 是更好的图表解决方案。超过 10,000,000 多个用户。专用支持。Visio 导入和导出。图表和流程图进行可视化、创新和协作创建强大的流程图和视觉效果,以…

个人开源PCB开发板列表汇总

个人开源PCB开发板列表汇总✨首先感谢立创EDA的免费打样和立创一起开源的广大网页。 🔰STC单片机为主控开源PCB开发板列表 📌STC15F2K60S2开发板:https://oshwhub.com/perseverance51/stc15f2k60s2-ji-tong-ban 📌STC15W408AS系…

Python3 输入和输出实例及演示

在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第3种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.std…

机器学习洞察 | 一文带你“讲透” JAX

在上篇文章中,我们详细分享了 JAX 这一新兴的机器学习模型的发展和优势,本文我们将通过 Amazon SageMaker 示例展示如何部署并使用 JAX。JAX 的工作机制JAX 的完整工作机制可以用下面这幅图详细解释:图片来源:“Intro to JAX” video on YouT…

python 的selenium自动操控浏览器教程(2)

人生苦短,我用py 文章目录人生苦短,我用py关于部分网页无法找到元素的问题1方案1方案2关于部分网页无法找到元素的问题2解决方案被网站检查出来我们使用了selenium了怎么办?如何实现前进后退当使用py删除文件时报禁止访问怎么办怎么使用py实现…

【服务器数据恢复】存储之间迁移数据时数据损坏的数据恢复案例

服务器数据恢复环境&故障: 一台某品牌的存储设备,Windows操作系统。由于业务需求,需要把这台存储设备中的数据迁移到另外一台存储设备中,在迁移数据过程中突然无法读取数据,管理界面报错。管理员查看服务器内的数据…

【Github的注册】

目录 一、打开官网 二、注册 1、点击右上角的 sign up 2、依次输入邮箱、密码、用户名 3、验证真人,create account,验证码 4、点击“个人“,“学生”,进入另一个页面后滚动鼠标直接点击continue,进入另一个页面后…

Yakit Web Fuzzer 终极能力强化:热加载 Fuzz

Background 在 HTB:BountyHunter 中,我们发现 Web Fuzzer 在使用中可以 “更强”,我们需要编写 Yak 脚本的事情,如果可以经过某些 Web Fuzzer 的优化,可以达到同样的效果。 在一个标签中,我们实现{{base6…

智慧工地火焰烟火识别检测 yolo

智慧工地火焰烟火识别检测算法通过yolo网络模型深度学习技术,智慧工地火焰烟火识别检测算法对现场浓烟和烟火情况,立即抓拍告警并进行存档。YOLO 的核心思想就是把目标检测转变成一个回归问题,利用整张图作为网络的输入,仅仅经过一…

图解LeetCode——2335. 装满杯子需要的最短总时长

一、题目 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount ,其中 amount[0]、amount[1] 和 amount[2] 分别表示需要装满冷水、温…