【小程序安全】小程序反编译

❤️博客主页 iknow181
🔥系列专栏 网络安全、 Python、JavaSE、JavaWeb、CCNP
🎉欢迎大家点赞👍收藏⭐评论✍


在这里插入图片描述

0x01 前期准备

知识点准备-小程序结构

1.主体结构

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

文件

必需

作用

app.js

小程序逻辑

app.json

小程序公共配置

app.wxss

小程序公共样式表

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

xxx.js

页面逻辑

xxx.json

页面配置

xxx.wxml

页面结构

xxx.wxss

页面样式

3.项目整体目录结构

pages

页面文件夹

index

首页

logs

日志

utils util

工具类(mina框架自动生成,你也可以建立一个:api)

app.js

入口js(类似于java类中的main方法)、全局js

app.json

全局配置文件

app.wxss

全局样式文件

project.config.json

跟你在详情中勾选的配置一样

sitemap.json

用来配置小程序及其页面是否允许被微信索引

工具准备

首先下载小程序助手和微信小程序官方开发工具

  • 小程序多功能组手
    复杂操作:https://www.cnblogs.com/oodcloud/p/16964878.html
    简单工具:http://xcx.siqingw.top/
  • 分包-unveilr
    https://github.com/junxiaqiao/unveilr-v2.0.0
  • 微信官方开发工具
    https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html

0x02 定位缓存包

打开微信小程序包的相关目录

微信设置→文件管理→即可找到目录

D:\WeChat Files\Applet

操作前记得先清空wxpack目录(便于后期确认哪个是目标缓存包)

再次打开小程序,查看目录下出现目标缓存包,点击进入直到找到APP.wxapkg以此尾缀结尾的。

0x03 小程序多功能组手

单包教程

1、点击【选择解包文件】,就是第一个直接进入,选择到__APP__.wxapkg为止。

2、此时提示解包成功,如果还是执行解这个相同的包,系统会默认当分包处理,关于分包请看后面内容。

3、点击【刷新反编译包】,显示目录刷新成功即可出现刚刚解的包。

4、然后再选择需要反编译的包,点击执行反编译。

一般单包都使用5.0新版反编译

5、新版反编译成功后,会显示此小程序无分包,无需操作。如果使用5.0新版反编译,该提示无效,有无分包看具体源码,subPackages包含的root下面还定义了分包的文件夹、合并分包只要按照对应的分包路径文件夹合并即可,如果找不到分包可以删除app.json定义的分包。

6、执行成功后【打开wxpack目录】就可以查看源码了,如果反编译成功目录无源码文件夹,请查看软件所在目录是否包含中文,如果包含请将中文目录修改成英文后重新反编译

7、微信开发者工具打开源码

如果报app.js错误,把【将JS编译成ESS】那个勾选去掉在试试

点击详情→本地设置→取消勾选将JS编译为ES

多包教程

1、点击【选择解包文件】

2. 注意:此时有多个包,__APP__.wxapkg为主包(选中时必须在第一个),另一个为分包,此时直接全选【ctrl+A】(__APP__.wxapkg为主包选中时必须在第一个)

3.解包成功后,接着点击【刷新反编译包】,此步比较卡,因为会检测node环境,出现目录刷新成功就可以了

4. 直接选择刚刚解出来的包即可

最后点击【5.0新版反编译】即可反编译出所有的主分包。【新版反编译】不需要合并分包,但是【新版反编译】可能编译出html文件,无法使用,所以建议使用【5.0新版反编译】,但必须手动合并分包。

可以查看主包中的app.json文件,了解小程序的都知道查看subPackages包含的root个数,就是分包的个数

5. 手动和并分包

每一个非主文件夹下面都有一个分包

这是主包

将分包复制到主包对应文件夹替换掉

注意:subPackages包含的root下面还定义了分包的文件夹、合并分包只要按照对应的分包路径文件夹合并即可,如果找不到分包可以删除app.json定义的分包,有几个root就有几个分包。如果分包不全请把小程序点一遍

0x04 unveilr

存在分包情况时,使用此工具更方便,直接导入目录一键解包,无需手动合并分包

反编译后的源码就在缓存包目录下

导入微信开放者工具,运行

在这里插入图片描述

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

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

相关文章

C++ : STL容器(适配器)之stack、queue剖析

STL容器适配器之stack、queue剖析 一、stack、queue的接口(一)stack 接口说明(二)queue 接口说明 二、stack、queue的模拟实现(一)stack、queue是容器适配器stack、queue底层默认容器--deque1、deque概念及…

Kubernetes的基本构建块和最小可调度单元pod-0

文章目录 一,什么是pod1.1pod在k8s中使用方法(1)使用方法一(2)使用方法二 1.2pod中容器的进程1.3pod的网络隔离管理(1)pause容器的作用 1.4 Pod分类:(1)自主式…

【CUDA】认识CUDA

目录 一、CUDA编程 二、第一个CUDA程序 三、CUDA关键字 四、device管理 4.1 初始化 4.2 Runtime API查询GPU信息 4.3 决定最佳GPU CUDA C 编程指南CUDA C在线文档:CUDA C 编程指南 CUDA是并行计算的平台和类C编程模型,能很容易的实现并行算法。只…

知识中台如何在精简供应链管理中发挥作用?

您如何与供应商沟通并分享您的最佳实践?您如何确保供应商了解您的基准?如果您正在为这些问题烦恼,请不要担心,本文章将为您提供宝贵的见解。 构建具备弹性的供应链模型,其关键在于知识中台的数据质量。若缺乏数据支撑…

Python 在PDF中绘制形状(线条、矩形、椭圆形等)

在PDF中绘制图形可以增强文档的视觉效果。通过添加不同类型的形状,如实线、虚线、矩形、圆形等,可以使文档更加生动有趣,提高读者的阅读兴趣。这对于制作报告、演示文稿或是教材特别有用。本文将通过以下几个示例介绍如何使用Python 在PDF中绘…

Gitlab-执行器为Kubetnetes时的注意事项,解决DNS解析问题

一、Gitlab-Runner 这里对于Runner的理解非常重要。 具体执行ci流水线的叫执行器。执行器可以部署是shell、docker、k8s的pod.执行完任务则生命周期结束。 管理执行器的叫Gitlab-Runner。Runner则是与Gitlab Server的Ci agent.(可以简单这么理解) 二、执行器为Kubetnetes时,DN…

大数据新视界 -- 大数据大厂之 Impala 性能优化:新技术融合的无限可能(下)(12/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

讨论一个mysql事务问题

最近在阅读一篇关于隔离级别的文章,文章中提到了一种场景,我们下面来分析一下。 文章目录 1、实验环境2、两个实验的语句执行顺序3、关于start transaction和start transaction with consistent snapshot4、实验结果解释4.1、实验14.2、实验24.3、调整实…

json绘制热力图

首先需要一段热力信息的json,我放在头部了。 然后就是需要de-geo库了。 实现代码如下: import * as d3geo from d3-geoimport trafficJSON from ../assets/json/traffic.jsonlet geoFun;// 地理投影函数// let info {max: Number.MIN_SAFE_INTEGER,mi…

K8S之Prometheus 部署(二十)

部署方式:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/prometheus 源码目录:kubernetes/cluster/addons/prometheus 服务发现:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kube…

kafka中节点如何服役和退役

服役新节点 1)新节点准备 (1)关闭 bigdata03,进行一个快照,并右键执行克隆操作。 (2)开启 bigdata04,并修改 IP 地址。 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改完记…

【Three.js基础学习】21.Realistic rendering

前言 课程回顾 渲染器 1.色调映射 值意在将高动态范围](HDR)值转换为低动态范围(LDR) Three.is中的色调映射实际上会伪造将LDR转换为HDR的过程,即使颜色不是HDR, 结果会产生非常逼真的渲染效果 THREE .NoToneMapping (default) 无色调映射 THREE.Linear…

ORB_SLAM3安装

ORB_SLAM3安装 一.前期准备1.1ubuntu查看当前版本的命令1.2 根据ubuntu版本,更新下载软件源1.3 先下载git1.4 vim语法高亮1.5 常见的linux命令 二.ORB-SLAM3下载2.1 ORB_SLAM3源码下载2.2 安装依赖库2.2.1 依赖库2.2.2 安装pangolin2.2.3 安装opencv2.2.4 Eigen3安装…

无需云端!国产开源大语言模型llama.cpp本地实战

作者:高瑞冬 注: 文章是2023年底写的。代码和运行方式虽有些旧,但基本原理一样。现在出来ollama,vllm等工具框架用来本地部署大模型,顺便更新一下。 [TOC](最后有彩蛋) 背景 上海人工智能实验室与商汤科技…

横向思维导图前端样式

追溯记录图路上 代码如下 index.vue <template><div style"margin-left: 5%;margin-top: 6%"> <el-form style"margin-top: -5%; " :inline"true"><el-form-item label"药品名称"><el-select v-model&qu…

清华大学提出Mini-Omni2:开源多模态模型,功能与GPT-4o媲美!

&#x1f310; 在人工智能领域&#xff0c;多模态模型的发展正如火如荼。今天&#xff0c;我们要介绍的是由清华大学提出的Mini-Omni2&#xff0c;这是一个开源的多模态语言模型&#xff0c;它在功能上与GPT-4o相媲美&#xff0c;能够理解和生成视觉、听觉和文本内容&#xff0…

HarmonyOS入门 : 获取网络数据,并渲染到界面上

1. 环境搭建 开发HarmonyOS需要安装DevEco Studio&#xff0c;下载地址 : https://developer.huawei.com/consumer/cn/deveco-studio/ 2. 如何入门 入门HarmonyOS我们可以从一个实际的小例子入手&#xff0c;比如获取网络数据&#xff0c;并将其渲染到界面上。 本文就是基于…

msvcr100.dll丢失怎么解决?高效靠谱的六种解决方法分享

在我们使用电脑的时候&#xff0c;有一种叫动态链接库&#xff08;DLL&#xff09;的文件特别重要。比如&#xff0c;msvcr100.dll是Microsoft Visual C 2010 Redistributable包里的一部分&#xff0c;很多应用程序在运行的时候都需要用到它。但是&#xff0c;有些用户在使用的…

【C++练习】二进制到十进制的转换器

题目&#xff1a;二进制到十进制的转换器 描述 编写一个程序&#xff0c;将用户输入的8位二进制数转换成对应的十进制数并输出。如果用户输入的二进制数不是8位&#xff0c;则程序应提示用户输入无效&#xff0c;并终止运行。 要求 程序应首先提示用户输入一个8位二进制数。…

【SpringBoot】19 文件/图片下载(MySQL + Thymeleaf)

Git仓库 https://gitee.com/Lin_DH/system 介绍 从 MySQL 中&#xff0c;下载保存的 blob 格式的文件。 代码实现 第一步&#xff1a;配置文件 application.yml spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8datasource:driver-class-name: com.mysql.…