某大型电商APP sign头部签名逆向分析

APP版本

唯品会 7.45
Java层抓包分析

打开抓包工具 charles进行分析,可以发现对于API采集需要突破当前这个参数,否则不返回信息
在这里插入图片描述

jadx静态分析

jadx静态分析,打开app搜索关键词api_sign,可以发现有参数位置

在这里插入图片描述

跟进去上边str赋值方法m52297b,看看参数是怎么来的

在这里插入图片描述

总结:该方法里面传入上下文、MAP类型参数、2个字符串参数,返回值m52298a 对参数进行了系列处理,继续跟进这个方法

在这里插入图片描述

总结:这里面可以看到调用了 apiSign方法对参数进行处理,继续跟进到方法里面

在这里插入图片描述

总结:该方法对传入的参数继续调用getMapParamsSign进行处理、可以跟进这个方法查看

在这里插入图片描述

总结:该方法对MAp类型数据进行迭代处理,然后还是调用getSignHash方法处理数据

在这里插入图片描述

总结:该方法调用m8334gs

在这里插入图片描述

总结:到了这个位置、可以看到参数已经到达边界、有可能这里就是数据返回的位置,可以使用frida hook一下结果,与抓包对比一致。

在这里插入图片描述

从中可以看到clazz就是com.vip.vcsp.KeyInfo类,跟进去这个类继续查找

在这里插入图片描述

总结:这里调用gsNav方法、该方法是加载了一个jni文件,也被称为app里面的so文件,由C语言编写的算法,被Java调用。

从上面可以看到so文件名称是private static final String LibName = "keyinfo";,一般so文件都会打包在apk文件,可以从里面查找文件,用ida汇编工具进行查询。

IDA汇编分析

打开工具,拖进去so文件即可,可以看到这个页面,工具的使用可以看之前的教程,

在这里插入图片描述

我们先查询导出函数,看下是否有Java层代码,说明函数是静态注册的

在这里插入图片描述

根进去方法、然后按F5转伪C代码,从这里面分析业务逻辑

在这里插入图片描述

根进去前面的方法、可以看到这个界面,里面对入参进行一系列处理

在这里插入图片描述

总结:可以看到一系列对map的操作,但是不急着对这部分分析,接着往下看

在这里插入图片描述

总结:可以看到一个j_getByteHash方法,通过函数名推断它极大可能就是执行摘要算法的地方。

在这里插入图片描述

通过名称推断是sha1算法。使用frida hook一下,可以发现参数和加密结果都能对上,那就无疑了,后续就可以算法还原了。

在这里插入图片描述

贴一张拿数据的结果

在这里插入图片描述

到此整个代码分析就算完毕了。

这里给大家准备爬虫脚本,有需要的关注我或者加V-》tl210329 进行领取。

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

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

相关文章

phpstudy_pro 关于多版本php的问题

我在phpstudy中安装了多个PHP版本 我希望不同的网站可以对应不同的PHP版本,则在nginx配置文件中需要知道不同的PHP版本的监听端口是多少,如下图所示 然而找遍了php.ini配置,并未对listen进行设置,好奇是怎么实现不同的PHP监听不同…

时代变了,Spring 官方抛弃了 Java 8!

先容许我吐槽一句:Spring 官方,窝草尼玛! 原谅我很愤怒!最近编程导航星球和群友们反复问一个问题:为啥用 IDEA 创建 Spring Boot 项目时,不能选择 Java 8 了? 我本来以为是 IDEA 版本更新导致的…

html+css 有关于less的使用和全面解释

目录 less 注释 运算 嵌套 变量 导入 导出 禁止导出 less Less是一个CSS预处理器, Less文件后缀是.less。扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力 注意:浏览器不识别 Less 代码,目前阶段,网页要引入对应的 CSS 文件 V…

Flink与Kafka集成:跨版本兼容性与性能优化实战

目录 问题背景 一、统一转发Kafka消息 二、回退到基本API 添加 Kafka 客户端库依赖

聚道云软件连接器助力某动漫行业公司实现财务自动化

客户介绍 某动漫行业公司是一家专注于文化创意领域,致力于为人们提供独特、有趣的文化产品。公司拥有一支充满活力和创造力的团队,他们以卓越的创意和精湛的技术,创造出了一系列令人惊叹的作品。未来,该公司将继续秉承这一理念&a…

C++入门【21-C++ 指针 vs 数组】

指针和数组是密切相关的。事实上&#xff0c;指针和数组在很多情况下是可以互换的。例如&#xff0c;一个指向数组开头的指针&#xff0c;可以通过使用指针的算术运算或数组索引来访问数组。请看下面的程序&#xff1a; 实例 #include <iostream> using namespace std;…

若依前后端分离版关联字典值查询数据工具类使用

场景 若依管理系统导出Excel时添加没有的列和关联码表显示中文进行导出&#xff1a; 若依管理系统导出Excel时添加没有的列和关联码表显示中文进行导出_若依的导出添加额外的字段信息-CSDN博客 上面通过关联表的方式实现查询字典值&#xff0c;若依本身提供了查询redis中缓存…

ANTLR4

配置开发环境 下载antlr4 jar包 https://github.com/antlr/antlr4/blob/master/doc/getting-started.md #安装jdk11和antlr4.13 # wget https://github.com/antlr/antlr4/archive/refs/tags/4.13.1.tar.gz # wget https://repo.huaweicloud.com/java/jdk/11.0.29/jdk-11.0.2…

1.5C语言 双曲正弦函数(*) 优化麦克劳林公式

一.传统算法 #include<stdio.h> #include<math.h> int jc(int x); int main(){double x,eps,y0.0;scanf("%lf%lf",&x,&eps);int de1,i1;double item1.0;while(fabs(item)>eps){itempow(x,i)/jc(de);i2;yitem;}printf("%.6f\n",y); …

力扣122. 买卖股票的最佳时机 II

动态规划 思路&#xff1a; 假设 dp[i][0] 是第 i 天手上没有股票时的最大利润&#xff0c; dp[i][1] 是第 i 天手上有 1 支股票的最大利润&#xff1b;dp[i][0] 的迁移状态为&#xff1a; dp[i - 1][0]&#xff0c;前一天手上已经没有股票&#xff0c;没有发生交易&#xff1…

buildroot 编译错误【001】

在GitHub 查找错误,也挺好用 解决办法 fakeroot 错误

linux 安装vscode后打开,报错 undefined symbol:gbm_bo_get_modifier

更换低版本安装 教程如下&#xff1a; Jetson AGX 安装 VScode 教程&#xff0c;适用于所有系统安装旧版本 VScode_vscode 低版本-CSDN博客

UE相关杂项笔记

1.PAK包解析 UE4如何反向查找Pak里面包含哪些文件 - 哔哩哔哩 CMD控制台命令输入 D:&quot;Epic Games&quot;\UE_5.1\Engine\Binaries\Win64\UnrealPak.exe 包路径 -list *文件夹带空格时 添加“ ”包裹住文件夹名 解包工具路径 UE引擎安装路径\UE_5.1\Engine\Binarie…

从Spring Cloud Alibaba开始聊架构

作为SpringCloudAlibaba微服务架构实战派上下册和RocketMQ消息中间件实战派上下册的作者胡弦。 另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.htmlhttps://item.jd…

服务端如何防止订单重复支付

概述 如图是一个简化的下单流程&#xff0c;首先是提交订单&#xff0c;然后是支付。 支付的话&#xff0c;一般是走支付网关&#xff08;支付中心&#xff09;&#xff0c;然后支付中心与第三方支付渠道&#xff08;微信、支付宝、银联&#xff09;交互。 支付成功以后&…

C语言——指针

一、定义 指针也就是内存地址&#xff0c;指针变量是用来存放内存地址的变量。 将内存以一个字节分为一个个内存单元&#xff0c;每个内存单元都进行编号&#xff0c;这个编号就是地址&#xff0c;也就是指针。 int b 1;int *pb &b;//这里的pb变量是一个整型指针变量&a…

某音关键词搜索商品接口,某音关键词搜索商品列表接口,宝贝详情页接口,某音商品比价接口接入方案

要接入API接口以采集电商平台上的商品数据&#xff0c;可以按照以下步骤进行&#xff1a; 1、找到可用的API接口&#xff1a;首先&#xff0c;需要找到支持查询商品信息的API接口。这些信息通常可以在电商平台的官方文档或开发者门户网站上找到。 2、注册并获取API密钥&#x…

前端深拷贝

深拷贝&#xff1a;是指源对象与拷贝对象指针指向的内存空间不是同一块空间&#xff0c;相互独立&#xff0c;其中任何一个对象的改动都不会对另外一个对象造成影响。 在项目中我们往往要使用到深拷贝 &#xff0c;下面是实现深拷贝的方法 一.JSON.parse(JSON.stringify(obj)…

计算机网络期末复习

计算机网络复习 1.第一章 1.2.2计算机啊网络的分类(认识) 按网络的覆盖范围进行分类&#xff1a; 局域网城域网广域网个人区域网 按网络的使用者进行分类&#xff1a; 公用网专用网 1.3互联网的组成(掌握) 从功能上可以划分为以下两大部分&#xff1a; 边缘部分&#x…

MySQL-DML

DML是数据操纵语言&#xff0c;用来对表中数据进行增删改操纵。 添加数据&#xff1a;INSERT 1.给指定字段添加数据&#xff1a;INSERT INTO 表名(字段名1,字段名2,...)VALUES(值1,值2); 2.给全部字段添加数据&#xff1a;INSERT INTO 表名VALUES(值1,值2) 3.给指定字段批量添…