某音小程序反编译签名加密静态分析

devtools/2025/2/7 22:06:03/

文章目录

  • 1. 写在前面
  • 2. 抓包分析
  • 3. 逆向分析

【🏠作者主页】:吴秋霖
【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作!
【🌟作者推荐】:对爬虫领域以及JS逆向分析感兴趣的朋友可以关注《爬虫JS逆向实战》《深耕爬虫领域》
未来作者会持续更新所用到、学到、看到的技术知识!包括但不限于:各类验证码突防、爬虫APP与JS逆向分析、RPA自动化、分布式爬虫、Python领域等相关文章

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

1. 写在前面

  春节假期在不知不觉中进入了倒计时,很多小伙伴都已经或即将开工,作者还有两天也要出去务工了!抽时间将节前的一篇文章补一下,可能很多小伙伴们都分析过微信端的小程序,跟Web逆向是一样的。现在像支付宝、云闪付、某音这些APP都会有自己的生态,也支持一些三方小程序的接入。而且某些场景下我们可能还不得不去分析这些渠道特有的小程序业务(因为某些小程序只在某些特定的渠道上架


分析目标

6Ieq5bex6ZqP5L6/5oqW6Z+z5pCc57Si5p+Q5Lqb572R5paH5bCP6K+057G75bCP56iL5bqP5a6e5pON

2. 抓包分析

在此之前作者曾尝试过某团队开发的一款Mac/Ios端的暴力抓包工具,但是对于某音来说还是有些不是太理想。虽然数据流肯定都是有的,但未经过解密对于逆向分析人员来说几乎提供不了太大的帮助,如下所示:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里小程序跟APP上面的特征没有太大的关联,都是独立的。需要逆向分析的也就是一个请求头的签名参数,然后还有一个Token的时效性问题,在采集的过程中需要动态定期向服务端发送请求以获取最新的授权信息来避免掉线,如下所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 逆向分析

这个场景不同于微信端的小程序可以直接通过借助工具启用控制台调试的方式去协助分析。所以这个场景下如果确实有某些数据抓取的需求,如果只是一次性或者紧急的情况下使用自动化加Hook拦截的方式也是可以的,作者的话这里还是采用的反编译小程序的方式通过去静态分析代码的途径来复现出签名的逻辑,因为从多个维度去推测的话一般的小程序就普通的一个签名难度是不大的。静态分析的手段就算很难或不能逆向出加密算法,也能够提供很多有效的信息,如下所示:

在这里插入图片描述

如上,在解压某音小程序的包之前我们需要拿到pkg的文件资源,这个的话直接在资源文件存储中等小程序加载刷完找到即可!然后最关键的就是sttpkg.js文件,这样才能反编译出小程序项目的完整源码。其具有特定的文件结构,是一个资源整合包。这个里面其实包含了很多个文件,每一个文件都有自己的元数据(如文件名、偏移量和数据大小),最终要解压也是从.js文件内找到所有数据把文件跟文件对于的内容抽出来,如下所示:

在这里插入图片描述

其实这里我们也可以自己尝试根据进制分析工具来编写解包的程序,其核心就是对二进制的数据进行处理,然后从文件中读取并解析出对应的值(版本、文件名、偏移量...)通过官方小程序开发者中心的部分资料可以知道其采用的流加载方案,反过来我们是可以通过模拟这种加载机制从文件流中逐步提取出每个文件的数据

在这里插入图片描述

最终解压出完成的小程序源码我们就可以开始分析对JS进行静态分析了,对于上面头部请求签名的参数进行一个全局搜索,很快就能够定位到!如下所示:

在这里插入图片描述

然后我们直接跳转到Pe的这个方法处,可以看到这里有排序的操作,同时又调用了T方法,那么这里继续跳到该方法处查看即可,如下所示:

在这里插入图片描述
在这里插入图片描述

由于我们是反编译解压出来的的源码进行分析,一般像其中签名涉及到的加密算法中用了加密Key,如果这个Key不是服务端接口或者在源码定义的话就需要动态调试分析查找了(稍微麻烦些),如下所示:

在这里插入图片描述

综上如果不去扣JS代码而直接使用第三发的加密模块来实现的话就会很简单了,加密算法实现如下所示:

python">import hashlib
def get_sign(e, t): sorted_keys = sorted(e.keys())n = ""for key in sorted_keys:if e[key]:n += f"&{key}={e[key]}"n = n[1:]signature = hmac.new(t.encode('utf-8'), n.encode('utf-8'), hashlib.md5).hexdigest()return signature

在这里插入图片描述


http://www.ppmy.cn/devtools/156941.html

相关文章

Jetbrains 官方微信小程序插件已上线!

就在昨天,Jetbrains官方发布了一篇文章,宣布它们发布了一款专用于微信小程序开发的插件(插件名称:WeChat Mini Program),至此,大家可以使用Jetbrains家的IDE(例如IDEA、WebStorm&…

OpenAI发布最新推理模型o3-mini

OpenAI于周五推出了新的AI"推理"模型o3-mini,这是该公司o系列推理模型家族的最新成员。 OpenAI此前在12月份就预告过这个模型,同时还展示了一个能力更强的系统o3。此次发布恰逢OpenAI面临诸多机遇与挑战的关键时刻。 目前,OpenAI…

[LeetCode]全排列I,II

全排列I 给定一个不含重复数字的整数数组 nums ,返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&#xff1…

【SQL技术】不同数据库引擎 SQL 优化方案剖析

一、引言 在数据处理和分析的世界里,SQL 是不可或缺的工具。不同的数据库系统,如 MySQL、PostgreSQL(PG)、Doris 和 Hive,在架构和性能特点上存在差异,因此针对它们的 SQL 优化策略也各有不同。这些数据库中…

安装和卸载RabbitMQ

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/SUWXdDb0UoCV86xP6b3c7qtMn6b 使用Ubuntu环境进行安装 一、安装Erlang 在安装RabbitMQ之前,我们需要先安装Erlang,RabbitMQ需要Erlang的语言支持 #安装Erlang sudo apt-get install erlang 在安装的过程中,会弹出一段信息,此…

GitHub Copilot 越狱漏洞

研究人员发现了两种操控 GitHub 的人工智能(AI)编码助手 Copilot 的新方法,这使得人们能够绕过安全限制和订阅费用、训练恶意模型等。 第一种技巧是将聊天交互嵌入 Copilot 代码中,利用 AI 的问答能力,使其产生恶意输…

upload-labs通关

前言 我们下面进行下一个漏洞——文件上传的学习。文件上传是常见漏洞之一,是Web安全入门必学漏洞。为探讨清楚文件上传漏洞的诸多细节,我们特以经典的upload-labs进行从入门到进阶的专项训练。 在做题过程中,作者把用到的知识进行了全面、…

计算机毕业设计Python+Vue.js游戏推荐系统 Steam游戏推荐系统 Django Flask 游 戏可视化 游戏数据分析 游戏大数据 爬虫

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…