博客配套代码与工具发布于github:微信小程序 (欢迎顺手Star一下⭐)

相关爬虫专栏:JS逆向爬虫实战  爬虫知识点合集  爬虫实战案例 逆向知识点合集


前言:

微信小程序对于很多尝试JS逆向的人群来说,都是一个不小的挑战。相比于常规逆向调试,其主要问题在于难以下手,不知道小程序逆向常规流程应该怎么走。但别担心,本文会详细介绍相关逻辑搭建与具体操作流程,帮助读者更好理解。

一、思路构建

1.准备工具:

  • 任意一款调试工具(fiddler,Charles,Wireshark等):因为运行是在微信小程序上,所以无法用常规的开发者工具直接调试,得专门下载一个工具再操作。
  • 相关的两个工具包(用于反编译):一者负责将数据包先解密,另一者负责将解密后的数据包再还原成源码。这俩工具包我会在github的链接上提供,自取即可
  • 微信开发者工具:用于断点调试debug,去官网下就行。

2.具体思路:

首先要明白:微信小程序逆向工程是指通过分析、反编译或调试微信小程序,来理解其内部机制、数据流、加密算法以及潜在漏洞的过程。这通常涉及对小程序包_APP_.wxapkg)、前端JS代码、API请求与响应等进行深入分析。

在具体操作上,我们首先会通过一系列步骤,发起对某个小程序的请求,并通过专门的调试工具

获取该响应查看相关信息。同时在涉及到JS逆向时,常规情况下我们需要在浏览器调试中不断设置断点、调用堆栈来查看相关信息。但因为在微信小程序上我们无法做到这点。所以需要通过获得微信小程序缓存的相关加载信息,将其先解密反编译获得最原始的小程序数据包,再将它们写入到微信开发者工具,把相关报错信息处理一下就可以在上面自由调试了。之后所有操作都跟常规JS逆向思路一致。该咋分析咋分析即可。

综上,思路构建后之后我们就开始在下面详细操作演示。因为本文重点是对微信小程序逆向的通用处理思路,所以并不会涉及到某个具体小程序的JS逆向实战。

二、具体操作

注:以下操作默认你已经把准备工具安装准备完毕。

1. 找到微信小程序当前位置,并清空当前缓存:

点开电脑微信-设置-文件管理-打开文件夹-返回到上一级的WeChat Files-进入到下级的Applet

可以看到如图信息。除了上面两个public文件,其他文件都是小程序的缓存信息,将除开俩public的文件全部删除即可。后面再载入新的微信小程序才可以更直观的看到。

2. 搜索微信小程序并对其发起响应:

点开你想要的小程序,并在里面随意按几下多触发点事件,

这时候再返回,就能看到这个小程序的信息已经被缓存好了。

点进这个wx2f...,这个正是我们需要的数据包。

3. 用第一个软件解密

这里需要分别用到俩工具,第一个先解密,第二个再反编译。

这里的wxpack文件夹是我提前装好的,如果没有该文件夹下载一个即可。

直接选择刚才我们找好的后缀为.wxapkg的文件就行,里面有多少个文件就都解密过来:

它会在wxpack里生成一次解密后的文件,这里生成完后会出现一堆wx...很混乱,就将其还是改成原来名字(如果你不改就是重名,涉及多个文件时就会来回覆盖,所以重命名才能保证不覆盖)。

4. 用第二个软件反编译

在当前有unveilr.exe的目录下,搜cmd:

进入cmd后再写unveilr.exe (wxpack的目录),按回车

看到这些绿色INFO即代表成功获取。

看到产生了对应的文件夹即反编译到了小程序的源码。

5.将该源码放到微信开发者工具内,并修改报错


点+号,目录就用刚才的那个源码文件,使用测试号且不使用云服务,再点击创建。信任并运行。

这时候大概率会出现模拟器启动失败,并给出相应报错让我们排。这里的解决就没什么好办法了,因为报错原因不一。看错误自己调就行,每次调试完后点击编译查看新的运行是否可以,调不出来的可以问问ai怎么搞。

这里简要介绍下几个常见的报错怎么处理:

(一)、

在app.json里找到componentFramework的字段,将对应的值改成"exparser"即可

(二)、

插件未授权使用,点击添加插件即可。如果还提示要授权才行,那比较难顶。但仍可以试试将该插件删去,假若不影响js调试与小程序运行的话(虽然通常都会影响)。

(三)、

并非合法域名,那么让它不要去校验即可。在详情,本地设置,并勾选不校验即可。

调试错误完成后再进行常规JS逆向即可,后面的JS因项目而异,此处碍于篇幅不再赘述。

四、总结

微信小程序逆向工程其实相比常规JS逆向,主要特殊点就在于接口在小程序而非web端,所以我们只要能把这个接口问题搞定,就可以像常规的方式一样去处理小程序了。但还需要注意下:归咎于小程序的特殊之处,很多地方的处理难以绕过。所以常规我们希望对某个软件或网址的数据做爬取会从三个角度去考虑:app、web端、小程序端,这仨蛋哪个好叮叮哪个,叮到就是赢,不用纠结非得从哪个端口去叮到。

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

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

相关文章

基于5G系统的打孔LDPC编码和均匀量化NMS译码算法matlab性能仿真

目录 1.引言 2.算法仿真效果演示 3.数据集格式或算法参数简介 4.算法涉及理论知识概要 4.1打孔技术 4.2 均匀量化NMS译码 5.参考文献 6.完整算法代码文件获得 1.引言 在5G通信系统中,信道编码技术是保障高速率、高可靠性数据传输的核心支撑,而低…

基于Java标准库读取CSV实现天地图POI分类快速导入PostGIS数据库实战

目录 前言 一、天地图POI分类简介 1、数据表格 2、分类结构 二、从CSV导入到PG数据库 1、CSV解析流程 2、数据转换及入库 3、入库成果及检索 三、总结 前言 在之前的博客中,曾经对高德地图和百度地图的POI分类以及使用PostGIS数据库来进行管理的模式进行了详…

人-AI交互中的信息论不同于传统的信息论,其信息的增量≠不确定性的减量

在人机交互(Human-AI Interaction, HAI)领域,信息论的应用确实与传统的信息论有所不同。这种差异主要源于人机交互HAI中信息的复杂性、动态性以及人类认知的特点。1. 传统信息论的核心概念传统信息论由克劳德香农(Claude Shannon&…

K8s 通过 Scheduler Extender 实现自定义调度逻辑

1. 为什么需要自定义调度逻辑 什么是所谓的调度? 所谓调度就是指给 Pod 对象的 spec.nodeName 赋值 待调度对象则是所有 spec.nodeName 为空的 Pod 调度过程则是从集群现有的 Node 中为当前 Pod 选择一个最合适的 实际上 Pod 上还有一个平时比较少关注的属性:…

7.19 换根dp | vpp |滑窗

lcr147.最小栈通过两个栈 维护实现class MinStack { public:stack<int> A, B;MinStack() {}void push(int x) {A.push(x);if(B.empty() || B.top() > x)B.push(x);}void pop() {if(A.top() B.top())B.pop();A.pop();}int top() {return A.top();}int getMin() {retur…

以太坊的心脏与大脑:详解执行客户端(EL)与共识客户端(CL)

好的&#xff0c;各位技术同道&#xff0c;欢迎再次光临我的博客。在上一篇文章中&#xff0c;我们聊了如何搭建一个以太坊测试节点&#xff0c;并提到了节点需要同时运行“执行客户端”和“共识客户端”。很多朋友对此表示了浓厚兴趣&#xff0c;想深入了解这两者究竟是什么&a…

Debian-10,用glibc二进制预编译包,安装Mysql-5.7.44 笔记250716

Debian-10,用glibc二进制预编译包,安装Mysql-5.7.44 笔记250716 &#x1f4e6; 一步脚本 #!/bin/bash### 安装依赖 apt install -y libaio1 libnuma1 libncurses5### 下载MySQL-5.7.44 的 glib二进制包: mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ,(如果不存在) mkdir…

用逻辑回归(Logistic Regression)处理鸢尾花(iris)数据集

# 导入必要的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from…

华大北斗TAU1201-1216A00高精度双频GNSS定位模块 自动驾驶专用

在万物互联的时代&#xff0c;您还在为定位不准、信号丢失而烦恼吗&#xff1f;TAU1201-1216A00华大北斗高精度定位模块TAU1201是一款高性能的双频GNSS定位模块&#xff0c;搭载了华大北斗的CYNOSURE III GNSS SoC 芯片&#xff0c;该模块支持新一代北斗三号信号体制&#xff0…

坚持继续布局32位MCU,进一步完善产品阵容,96Mhz主频CW32L012新品发布!

在全球MCU市场竞争加剧、国产替代加速的背景下&#xff0c;嵌入式设备对核心控制芯片的性能、功耗、可靠性及性价比提出了前所未有的严苛需求。为适应市场竞争&#xff0c;2025年7月16日&#xff0c;武汉芯源半导体正式推出基于CW32L01x系列低功耗微控制器家族的全新成员&#…

用线性代数推导码分多址(CDMA)

什么是码分多址 码分多址&#xff1a;CDMA允许多个用户同时、在同一频率上传输数据。它通过给每个用户分配唯一的、相互正交的二进制序列来实现区分。用户的数据比特被这个码片序列扩展成一个高速率的信号&#xff0c;然后在接收端通过相同的码片序列进行相关运算来回复原数据 …

mac 配置svn

1.查看brew的版本&#xff1a;brew install subversion2.安装brew命令&#xff1a;bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"3.把路径添加到path环境变量&#xff1a;echo export PATH"/opt/homebrew/b…

使用 .NET Core 的原始 WebSocket

在 Web 开发中&#xff0c;后端存在一些值得注意的通信协议&#xff0c;用于将更改通知给已连接的客户端。所有这些协议都用于处理同一件事。但鲜为人知的协议很少&#xff0c;鲜为人知的协议也很少。今天&#xff0c;将讨论 WebSocket&#xff0c;它在开发中使用最少&#xff…

编程实现Word自动排版:从理论到实践的全面指南

在现代办公环境中&#xff0c;文档排版是一项常见但耗时的工作。特别是对于需要处理大量文档的专业人士来说&#xff0c;手动排版不仅费时费力&#xff0c;还容易出现不一致的问题。本文将深入探讨如何通过编程方式实现Word文档的自动排版&#xff0c;从理论基础到实际应用&…

力扣经典算法篇-25-删除链表的倒数第 N 个结点(计算链表的长度,利用栈先进后出特性,双指针法)

1、题干 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a;输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&…

VIT速览

当我们取到一张图片&#xff0c;我们会把它划分为一个个patch&#xff0c;如上图把一张图片划分为了9个patch&#xff0c;然后通过一个embedding把他们转换成一个个token&#xff0c;每个patch对应一个token&#xff0c;然后在输入到transformer encoder之前还要经过一个class …

【服务器与部署 14】消息队列部署:RabbitMQ、Kafka生产环境搭建指南

【服务器与部署 14】消息队列部署&#xff1a;RabbitMQ、Kafka生产环境搭建指南 关键词&#xff1a;消息队列、RabbitMQ集群、Kafka集群、消息中间件、异步通信、微服务架构、高可用部署、消息持久化、生产环境配置、分布式系统 摘要&#xff1a;本文从实际业务场景出发&#x…

LeetCode中等题--167.两数之和II-输入有序数组

1. 题目 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 <…

【C# in .NET】19. 探秘抽象类:具体实现与抽象契约的桥梁

探秘抽象类:具体实现与抽象契约的桥梁 在.NET类型系统中,抽象类是连接具体实现与抽象契约的关键桥梁,它既具备普通类的状态承载能力,又拥有类似接口的行为约束特性。本文将从 IL 代码结构、CLR 类型加载机制、方法调度逻辑三个维度,全面揭示抽象类的底层工作原理,通过与…

Apache RocketMQ + “太乙” = 开源贡献新体验

Apache RocketMQ 是 Apache 基金会托管的顶级项目&#xff0c;自 2012 年诞生于阿里巴巴&#xff0c;服务于淘宝等核心交易系统&#xff0c;历经多次双十一万亿级数据洪峰稳定性验证&#xff0c;至今已有十余年发展历程。RocketMQ 致力于构建低延迟、高并发、高可用、高可靠的分…