某美颜app sig参数分析

news2025/8/6 6:23:34

之前转载过该app的文章,今天翻版重新整理下,版本号:576O5Zu+56eA56eAYXBwIHY5MDgw (base64 解码)。

上来先抓个包:

在这里插入图片描述

jadx搜索关键词 "sigTime",然后定位到这里

在这里插入图片描述

看这行代码 cVar.addForm(INoCaptchaComponent.sig, generatorSig.sig); ,看下INoCaptchaComponent.sig 其实就是 "sig",感觉是这里大差不差。

在这里插入图片描述

sig 是由 generatorSig.sig 计算出来的,跟进去。

在这里插入图片描述

这里是定义了一个 静态 SigEntity,看下大概的功能就是做下参数拼接,底部是调用nativeGeneratorSigOld(str, bArr, str2) 方法,继续跟进去。

在这里插入图片描述

这里最终是调用了public static native SigEntity nativeGeneratorSigOld(String str, byte[][] bArr, String str2) 方法,是一个native方法,用到的so是release_sig

用ida pro 打开这个so 看看,继续跟进。

先看看导出表

在这里插入图片描述

搜索"java_",可以看到java层注册的函数名,没错是个静态注册的,而且没有什么混淆。

在这里插入图片描述

先看 Java_com_meitu_secret_SigEntity_nativeGeneratorSig 函数

在这里插入图片描述

先看下 v10 = ValidateKey::getValidateResult() 大概就是检验是否合规的key

在这里插入图片描述

进来这里调用了 JavaHelper::getAndroidAPKKeyHash 函数,看起来像是校验 apk 签名

然后再看下 GeneratorSIG 函数,看字段命名 就像是,瞎猜的。

在这里插入图片描述

刚开始掉用了一个 GetSecretKey 函数,获取 key,接着是拼接一些不明的字符串,最后调用了 MD5_Calculate 计算函数。

着重分析下这个
这个MD5_Calculate 函数 重要的是由三部分组成 MD5_InitMD5_UpdateMD5_Final

在这里插入图片描述

init 这里 全都是MD5标准的常量

在这里插入图片描述

最核心的加密都是在MD5_Update里面。

在这里插入图片描述
静态分析到此结束,开始上 frida 动态调试下。

先hook下 com.meitu.secret.SigEntity_Z13MD5_CalculatePKcjPc函数看看。
打印下看看

在这里插入图片描述

MD5_Calculate 方法的入参参数2 用hexdump转换成正常的字符串,在md5加密下,是cb67c671be0f0de69cfa310007eb146c,果然和hook出来的so层加密是一样的。

在这里插入图片描述

但是会发现 so层加密 cb67c671be0f0de69cfa310007eb146cSigEntityB-结果:bc766c17ebf0d06ec9af130070be41c6 值不一样,仔细对比会发现他们是相邻的两个字符互换得来。

_Z13MD5_CalculatePKcjPc 函数的入参参数 和抓包拿到的请求参数对比,我们会发现,它其实是把get请求后面的参数,先排序,然后再拼接,在拼接的过程中各拼接了2个盐值(xxxxxx 手动马赛克),最后MD5计算出来的。

最后 最后当然是 python 算法还原了。

看看效果:

在这里插入图片描述

水文一篇,再接再续。

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

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

相关文章

NAST概述

一、NATS介绍 NATS是由CloudFoundry的架构师Derek开发的一个开源的、轻量级、高性能的,支持发布、订阅机制的分布式消息队列系统。它的核心基于EventMachine开发,代码量不多,可以下载下来慢慢研究。 不同于Java社区的kafka,nats…

C++小白入门

1.1编写程序四步走&#xff1a;创建项目创建文件编写代码运行程序解决方案资源管理器&#xff1a;在新创建的项目下右键“源文件”-添加-“新建项”-“C文件&#xff08;.cpp&#xff09;”&#xff0c;给文件取名#include <iostream> using namespace std;int main() {c…

JavaScript新手学习手册-基础代码(二)

与上篇博客相接 一&#xff1a;函数&#xff1a; 案例&#xff1a;通过函数实现绝对值的输出 方法一&#xff1a; function absoluate(x){if(x>0){return x;}else{ return -x;}} 在控制台调用函数 方法二&#xff1a; var demo1 function(x){if(x>0){return x;}els…

springboot项目如何配置启动端口

文章目录0 写在前面1 配置文件(.yaml)--推荐2 配置文件(.properties)3 IDEA配置--不推荐4 写在最后0 写在前面 项目启动需要一个独立的端口&#xff0c;所以在此记录一下。 根据配置文件的后缀书写格式略有不同。 1 配置文件(.yaml)–推荐 若是.yaml后缀的配置文件&#xff0…

SIP网络定压功放 SIP735T机架式广播终端

一、描述SIP735T是广州新悦网络设备有限公司的一款合并式定压功放&#xff0c;支持标准SIP协议&#xff0c;具有10/100M以太网接口&#xff0c;后面板上有2组AUX音源输入和6.35mm接口的麦克风输入&#xff0c;可以输入本地音源&#xff0c;播放来自网络与本地的音频。同时配置5…

Spark UI

Spark UIExecutorsEnvironmentStorageSQLExchangeSortAggregateJobsStagesStage DAGEvent TimelineTask MetricsSummary MetricsTasks展示 Spark UI &#xff0c;需要设置配置项并启动 History Server # SPARK_HOME表示Spark安装目录 ${SPAK_HOME}/sbin/start-history-server…

【女神节】简单使用C/C++和Python嵌套for循环生成一个小爱心

目录 前言实现分析代码实现代码如下效果如下优化效果代码如下效果如下总结尾叙前言 女神节马上到了,有女朋友的小伙伴是不是已经精心准好礼物了呢!对于已婚男士,是不是整愁今天又该送什么礼物呢!说真的,我也整愁着,有什么要推荐么,评论留言下! 实现分析 可以先在纸上或…

HashMap底层实现原理及面试题

文章目录1. 常见的数据结构有三种结构1.1 各自数据结构的特点2. HashMap2.1 概述2.2 底层结构2.2.1 HashMa实现原理&#xff1a;2.2.1.1 map.put(k,v)实现原理2.2.1.2 map.get(k)实现原理2.2.1.3 resize源码2.2.2 HashMap常用的变量2.2.3 HashMap构造函数2.3 JDK1.8之前存在的问…

JUC并发编程——多把锁

一、多八锁 多把不相干的锁 一间大屋子有两个功能&#xff1a;睡觉、学习&#xff0c;互不相干。 现在小南要学习&#xff0c;小女要睡觉&#xff0c;但如果只用一间屋子&#xff08;一个对象锁&#xff09;的话&#xff0c;那么并发度很低 解决方法就是准备多个房间&#x…

Validator校验之ValidatorUtils

注意&#xff1a;hibernate-validator 与 持久层框架 hibernate 没有什么关系&#xff0c;hibernate-validator 是 hibernate 组织下的一个开源项目 。 hibernate-validator 是 JSR 380&#xff08;Bean Validation 2.0&#xff09;、JSR 303&#xff08;Bean Validation 1.0&…

python实现半色调技术图像转换

半色调技术 半色调技术是一种将灰度图像转换为黑白图像的技术。它是通过将灰度图像的像素值映射到黑白像素值上来实现的。 比如说&#xff0c;在一块只能显示纯黑或纯白的屏幕上&#xff0c;如何将一张灰度图显示出灰度的效果&#xff0c;这时就可以用半色调技术实现。 如下…

SpringBoot整合MybatisPlus

文章目录前言一、MybatisPlus是什么&#xff1f;二、使用步骤1.导入依赖2.编写配置文件3.编写Controller和实体类4.编写持久层接口mapper5.启动类加包扫描注解6.测试总结前言 本篇记录一下SpringBoot整合MybatisPlus 一、MybatisPlus是什么&#xff1f; MyBatis-Plus&#xff…

webview的工作、内存泄漏、漏洞以及缓存机制原理原理+方案解决

分析一段appium的日志来分析webview的工作原理&#xff0c;文章尾部附有自动化脚本及完整日志&#xff1a; 解析&#xff1a; 获取上下文列表 服务端发送命令adb shell cat /proc/net/unix获取域套接字列表。那什么是域套接字呢&#xff1f; 域套接字&#xff1a;是unix系统里…

旋转矩阵的作用:世界坐标变换;求解局部坐标系下的局部坐标

旋转矩阵的作用&#xff1a;世界坐标变换&#xff1b;求解局部坐标系下的局部坐标1、旋转矩阵代表了一个局部坐标系2、世界坐标变换3、求解局部坐标系下的局部坐标1、旋转矩阵代表了一个局部坐标系 以下数据以平面直角坐标系为例&#xff0c;三维空间同理 上图中&#xff0c;…

第七章:Java常用类

第七章&#xff1a;Java常用类 7.1&#xff1a;字符串相关的类 String的特性 String表示是字符串&#xff0c;使用一对""引起来表示。 String声明为final的&#xff0c;不可被继承。 String实现了Serializable、Comparable接口&#xff0c;表示字符是支持序列化和…

【WPF 值转换器】ValueConverter 进阶用法

【WPF 值转换器】ValueConverter 进阶用法介绍基类实现子类实现效果介绍 值转换器在WPF开发中是非常常见的&#xff0c;当然不仅仅是在WPF开发中。值转换器可以帮助我们很轻松地实现&#xff0c;界面数据展示的问题&#xff0c;如&#xff1a;模块隐藏显示、编码数据展示为可读…

拼多多跨境电商业务将正式登陆澳洲,持续助力中国制造业开拓全球市场

配图来自Canva可画 拼多多出海又有新进展。据最新消息&#xff0c;拼多多跨境电商业务将于3月13日正式进入澳大利亚、新西兰&#xff0c;持续推动中国制造业直连澳洲以及全球市场。 去年9月&#xff0c;拼多多正式在北美地区上线跨境电商平台TEMU。自上线至今&#xff0c;TEM…

硬件设备二 调试分类、软/硬件断点、OpenOCD、JLink、STLink 使用

近期工作开始主用 OpenOCD 来进行相关开发工作的调试&#xff0c;因此本文重点来学习一下&#xff01;本文以 OpenOCD 为重点&#xff0c;辅以 JLink、STLink 作为对比来进行学习。 调试 本地调试 本地调试通常指调试使用的环境与调试的目标运行环境一致的调试方法&#xff0…

linux软件管理

软件管理 1、rpm管理工具 RPM是(Redhat Package Manager) 的缩写&#xff0c;由Red Hat公司提出的一种软件包管理标准 &#xff08;1&#xff09;rpm软件包的典型命名格式&#xff1a; 例&#xff1a;zsh-5.0.2-14.el8.x86_64.rpm zsh-50214el8x8664软件名主版本号次版本号…

day26_HTML

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、二阶段介绍 二、HTML 零、 复习昨日 见代码 一、二阶段介绍 第一阶段: 基础入门 java基本语法编程基础(方法,数组)面向对象编程常用类高级(IO,线程,新…