存在分包的微信小程序解包反编译还原(含报错处理与代码修复)

news2024/9/20 6:02:53

01前言

本文主要对微信小程序的解包步骤进行复现梳理,网上虽然已有明确详细的文章,但是实际复现过程中程序报错的情况并不少见。对此情况进行了梳理以及对相关工具的代码、调用方式等进行了优化修复。

本文内容:

  1. 常规微信小程序逆向解析的一般步骤
  2. 存在分包的微信小程序wxappUnpacker执行报错问题解决
  3. 微信小程序子包使用wxappUnpacker readme文件中命令解包报错问题解决

02环境准备

  1. 微信app
  2. UnpackMiniApp.exe
  3. npm(node.js)
  4. wxappUnpacker
  5. 微信开发者工具(可选)

03解码复现

小程序解密

小程序解密工具为代码果所编写UnpackMiniApp.exe [https://github.com/Angels-Ray/UnpackMiniApp]
先找到微信的缓存文件位置,点击微信左下角的设置按钮。

找到该文件缓存目录,搜索.wxapkg后缀的文件或直接搜索__APP__.wxapkg文件,根据修改日期、时间找到你想要解包的文件

打开文件夹,发现有多个.wxapkg文件,该小程序存在分包。

打开代码果的解密程序,按照程序提示信息,创建wxpack文件夹

选择微信小程序加密包,进行解密

选择解密后生成的包,并重命名(分包会以相同的命名方式命名,如果小程序有分包,解密后不重命名,分包的解密结果会覆盖主包)

解密包反编译还原

先安装配置工具,参考wxappUnpacker的readme文件[https://github.com/Angels-Ray/wxappUnpacker]
在wxappUnpacker目录下安装依赖(文尾参考文献有node安装参考,以及源替换参考)

将代码果解密的生成文件重命名为[解密完成包.wxapkg],移到wxappUnpacker下的testpkg文件夹,进行解包。

尝试运行,存在分包的小程序运行报错。

wuConfig.js:49
for (let page of subPackage.pages) {
                  ^
TypeError: subPackage.pages is not iterable

找到报错文件

找到报错相关语句

根据报错信息,subPackage.pages不可迭代报错,增添数组校验

if (Array.isArray(subPackage.pages)){
     for (let page of subPackage.pages) {
          let items = page.replace(root, '');
          newPages.push(items);
          let subIndex = pages.indexOf(root + items);
          if (subIndex !== -1) {
               pages.splice(subIndex, 1);
          }
     }
} else {
     console.log('subPackage.pages is not an array:', subPackage.pages);
}

删除之前解包创建的文件夹,重新生成

重新执行生成

正常执行完成,

下一步对分包进行解包,发现报错

wuWxapkg.js:176
throw new Error("检测到此包是分包后的子包, 请通过 -s 参数指定存放路径后重试, 如 node wuWxapkg.js -s=/xxx/xxx ./testpkg/test-pkg-sub.wxapkg");
Error: 检测到此包是分包后的子包, 请通过 -s 参数指定存放路径后重试, 如 node wuWxapkg.js -s=/xxx/xxx ./testpkg/test-pkg-sub.wxapkg

同理排查文件wuWxapkg.js,找到报错行

依据代码中给出的说明,查看执行命令行排查

根据源bat文件的调用方式

传入的-s=../解密完成包中=变成了空格,用引号括起来可以防止这种情况

bingo.bat testpkg/解密完成包_分包1.wxapkg "-s=../解密完成包"

正常解包完成

将其内容复制粘贴到主包中即可

待所有分包处理完毕后,可将整个文件夹用微信开发着工具打开,以便于全局查找

Ctrl+Shift+f全局查找,查看是否存在敏感信息泄露等,一般可关注secret、password等。如果拿到比较重要的secret,比方说云存储的AK/SK,可调取系统存储在云端的数据与文件。

参考文献

  1. 微信小程序逆向:https://blog.csdn.net/Python_0011/article/details/134681114
  2. node安装配置:https://blog.csdn.net/qq_42006801/article/details/124830995
  3. node源替换:https://blog.csdn.net/gitblog_00001/article/details/141760237
  4. 代码果解密工具UnpackMiniApp:https://github.com/Angels-Ray/UnpackMiniApp?tab=readme-ov-file
  5. 微信解包工具wxappUnpacker:https://github.com/Angels-Ray/w

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

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

相关文章

el-input设置后缀显示单位并阻止滚轮微调

项目中收集form表单信息时,有时会需要在el-input后面显示单位,效果如图: 当然,我们可以直接在输入框后面加上单位,但直接给输入框上加单位不管是视图上还是用户体验上看起来都要好一点 element-plus / element-ui给我…

MySQL数据库 — Explain命令

EXPLAIN 命令在 MySQL 查询优化中发挥了重要作用。通过 EXPLAIN 的输出,可以获取有关查询执行计划的详细信息,从而有助于优化和调试查询。不过,它也有一定的局限性。 使用Explain EXPLAIN 语句通过在查询前加上 EXPLAIN 关键字来展示查询的…

正则表达式三板斧

推荐练习网站:https://regex101.com/ 解释一下: 1、最常用的就是[],表示匹配任意字符,[]中所有的变量只需要输入一次(比如搜索三个点…,只需要输入[.]即可) 2、*表示>0次,表示>1次&#x…

计算机毕业设计选题推荐-推拿知识互动平台-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

大白话!解析大模型原理!

LLM的工作原理对大多数人来说是个谜。虽然它们本质上在于“预测下一个词”,并需要大量文本进行训练,但具体细节往往令人困惑。原因在于这些系统独特的开发方式:**基于数十亿词汇训练的神经网络,不同于传统的人类编写的软件。**尽管…

SpringCache源码解析(三)——@EnableCaching

一、源码阅读 让我们进行源码阅读把。 1.1 阅读源码基础: Import(xxx.class)里的类可以有两种类: ImportSelector接口的实现类;ImportBeanDefinitionRegistrar接口的实现类; 两种接口简介: ImportSelector接口&am…

如何在算家云搭建Open-Sora1.0

一、模型介绍 2024 年 3 月 18 日,Colossal-AI 团队发布了 Open-Sora 1.0 项目,该项目是一个全面开源的视频生成模型项目,项目旨在高效制作高质量视频,并使所有人都能使用其模型、工具和内容。 模型架构 : Open-Sor…

ubuntu20.04 编译vtk 9.3.1+vtkDicom+GDCM 3.0.24

1 下载vtk源码 链接地址如下: Download | VTK 使用cmake-gui编译(如何安装使用,查看前两篇文章),运行命令: cmake-gui 如下图所示,选择源码目录和build目录: 勾选 BUILD_SHARED…

基于SpringBoot+Vue+MySQL的志愿服务管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着社会对志愿服务需求的日益增长,传统的志愿服务管理方式已难以满足高效、透明、精准的管理需求。为提升志愿服务组织的运营效率,优化资源配置,增强志愿者参与度和满意度,开发基…

项目启动 | 盘古信息携手晶捷电子,开启数字化生产管理新纪元

随着智能制造技术的不断成熟与普及,一个全新的制造业时代已经到来,智能制造已成为推动全球制造业转型升级的重要引擎。在日新月异的市场环境中,传统制造业更需加快转型升级的步伐,以智能化、精细化的生产模式,实现生产…

昆仑联通8000万补流全砍:曾分红近亿,应收账款周转率连年下滑

《港湾商业观察》廖紫雯 日前,北京昆仑联通科技发展股份有限公司(以下简称:昆仑联通)拟冲刺北交所,保荐机构为东方证券。 2023年6月29日,昆仑联通于上交所递交招股书,拟冲刺沪市主板&#xff…

混淆矩阵与 ROC 曲线:何时使用哪个进行模型评估

必须在机器学习和数据科学中评估模型性能,才能提出一个可靠、准确和高效的模型来进行任何类型的预测。一些常见的工具是 Confusion Matrix 和 ROC Curve。两者具有不同的用途,确切地知道何时使用它们对于稳健的模型评估至关重要。在这篇博客中&#xff0…

【nginx】转发配置、漏洞整改

转发配置 常见的接口调用配置: location /com_api/ {proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $http_host;proxy_pass http://后端服务IP:后端服务端口号/; }若转发调不通时(常出现在调用第三方系统时),…

大数据 - OLAP与OLTP的区别

前言 联机事务处理OLTP(on-line transaction processing)和 联机分析处理OLAP(On-Line Analytical Processing)。 OLTP,主要是面向传统的“增删改查”事务系统,数据大都是以实体对象模型来存储数据&#…

Java设计模式—面向对象设计原则(二) --------> 里氏代换原则 LSP (完整详解,附有代码+案列)

文章目录 里氏代换原则3.2.1 概述3.2.2 改进上述代码 里氏代换原则 3.2.1 概述 里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则:任何基类可以出现的地方,子类一定可以出现。通俗理解:子类可以扩展父类的功能,但不能…

快速同步与问题解决:每日站立会议的实用指南

每日站会不管是在大型企业中,还是在中小型企业中都是每日必备的一种晨会。但并不是所有的企业都能够正确使用每日站会,较多的企业在每日站会中总会偏离每日站会的使用目的,从而变成了一个偏向于教育批评的会议。本篇文章中,让我们…

4WRA6E07-2X/G24N9K4/VL配套HE-SP2比例放大器

比例方向阀由直流比例电磁铁与液压阀两部分组成。通过BEUEC比例放大器对控制信号进行功率放大后,电磁铁产生与电流成比例的力或位移,移动阀芯位置,实现流量和流向的精确控制。比例方向阀能实现流量和方向的连续且精确的控制,尤其是…

企业如何“向内求”, 挖出更多净利润?

未来的财务部门将是一个“主导“部门,成为业务的翻译官,成为业财融合的引领者,引领企业走在最适合自己的财务数智化转型道路上。 作者|思杭 出品|产业家 收入增速放缓、营收下滑、消费意愿降低,这些也许是近半年在各种企业财…

14款用于创建和销售数字产品的工具(专家推荐)

创建和销售数字产品是获得被动收入并向全球观众分享您的专业知识的绝佳方式。但您需要合适的工具来实现这一目标。否则,您可能会在复杂的系统上浪费时间和金钱,最终无法获得预期的效果。 在WPBeginner,我们已经创建数字产品超过十年&#xf…

[FireshellCTF2020]Caas1

知识点&#xff1a; 1.文件包含 2.#include " " 预处理报错 进入页面发现是让我么输入code然后他去处理&#xff0c;那就输一下试试. 它报错了&#xff0c;可以看出这是个C语言的报错&#xff0c;那么传入一下C语言代码. #include <stdio.h>int main() {prin…