某大型电商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 进行领取。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三剑客前端教程

前端教程 结构层(html)表现层(css)行为层(javascript) HTML 超文本标记语言) HTML(超文本标记语言——HyperText Markup Language)是构成 Web 世界的一砖一瓦。它定义…

LLM(九)| 使用LlamaIndex本地运行Mixtral 8x7大模型

欧洲人工智能巨头Mistral AI最近开源Mixtral 8x7b大模型,是一个“专家混合”模型,由八个70亿参数的模型组成。Mistral AI在一篇博客文章(https://mistral.ai/news/mixtral-of-experts/)介绍了Mixtral 8x7b,在许多基准上…

一致性算法Paxos

Paxos Paxos 算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致…

如何实现任意文档的离线翻译且源文档格式不变?支持离线全自动翻译,无需改动页面、无语言配置文件、无API Key、对SEO友好!(附源码)

如何实现任意文档的离线翻译且源文档格式不变?支持离线全自动翻译,无需改动页面、无语言配置文件、无API Key、对SEO友好!(免费使用附所有源码) 在工作和生活中,是否遇到过这样的场景: 1)有些文档很长且不是自己擅长的语言,阅读起来很费力,需要把文档进行翻译之后再…

效果图渲染角度哪什么小技巧?

在创建效果图渲染时,正确设置相机角度对于表现设计的视觉效果至关重要。好的效果图通常能够增强设计图张力,通过效果图也能更好的看到真实物体的成果,以下是一些效果图渲染角度技巧,可以帮助你提高渲染的质量和表现力,…

软件测试|一篇文章带你深入理解SQL约束

深入理解SQL约束:保障数据完整性和一致性的重要工具 SQL约束是在关系型数据库中用于保障数据完整性和一致性的重要工具。本文将深入探讨SQL约束的概念、类型以及应用,以帮助读者更好地理解和使用SQL约束来确保数据库中的数据质量。 SQL约束 约束&…

Maven之依赖的传递

问题导入 1. 依赖传递 A依赖B,B依赖C,A是否依赖于C呢?–A依赖于C 依赖具有传递性 路径优先:当依赖中出现相同的的资源时,层级越深,优先级越低,层级越浅,优先级越高 声明优先&…

鸿蒙会不会像10几年前安卓一样,红极一时

如今,鸿蒙与安卓彻底切割时间似乎越来越近,一批嗅觉灵敏的互联网厂商已经完成或开始启动开发鸿蒙原生App。随着头部App厂商启动鸿蒙(HarmonyOS)原生应用开发,鸿蒙开发人才变得紧缺。专家预测,鸿蒙开发的人才…

通过聚道云软件连接器实现金蝶软件与客如云软件的无缝对接

客户介绍 某知名冷饮连锁品牌是国内一家拥有数千家门店的知名品牌,作为一家专注于冷饮和甜品的企业,我们致力于提供高品质、健康美味的食品,为消费者带来冰凉的甜蜜与畅快的口感。 我们始终坚持选用优质原料,严格把控生产流程&a…

数据库基础知识1

关系模型的程序员不需熟悉数据库的存取路径 在3层模式结构中,___I___是数据库的核心和关键,___Ⅱ___通常是模式的子集,数据库模式的描述提供给用户,____Ⅲ__的描述存储在硬盘上。Ⅰ.模式Ⅱ. 外模式Ⅲ. 内模式 数据库中,数据的物理独立性是指用户的应用程序与存储在磁盘上数据库…

数据库——SQL注入攻击

【实验内容及要求】 一、内容:掌握SQL注入攻击的原理,掌握基本SQL注入攻击的方法,掌握防SQL注入攻击的基本措施。 二、要求: 1. DVWA环境配置 DVWA(Damn Vulnerable Web Application)是一个用来进行安全…

使用ffmpeg+flv.js + websokect播放rtsp格式视频流

对于rtsp的视频流网上有很多种的解决方案,但是大的趋势还是利用ffmpeg的工具进行rtsp的视频解析进行一个推流,我最终选择bilibili开源的flv.js,代码十分的简单全部都在底层封装好了。实现的方式也比较容易理解,ffmpeg进行rtsp的视…

springboot、spring-kafka、kafka-client的版本对应关系

在使用springboot集成kafka的时候需要注意springboot版本、引用的依赖spring-kafka版本和kafka中间件版本的对应关系,否则可能会因为版本不兼容导致出现错误。 1、含义说明(摘自官网) Spring Boot:是springboot的版本。Spring fo…

【MLOps】使用Ray缩放AI

Ray正在人工智能工程领域崭露头角,对扩展LLM和RL至关重要 Spark在数据工程中几乎是必不可少的。Ray正在人工智能工程领域崭露头角。 雷是伦敦大学学院Spark的继任者。Spark和Ray有很多相似之处,例如用于计算的统一引擎。但Spark主要专注于大规模数据分析…

SSMBUG汇总

20240103 通用,驼峰命名法,mybatis。 mybatis入门程序中, // 获取对象的顺序为:SqlSessionFactoryBuild-》SqlSessionFactory-》SqlSessionSqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();I…

数字孪生与大数据和分析技术的结合

数字孪生与大数据和分析技术的结合可以为系统提供更深入的见解、支持实时决策,并优化模型的性能。以下是数字孪生在大数据和分析技术中的一些应用,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流…

IPFoxy:2024第一季度跨境营销重要节日,亚马逊跨境人快收藏

参照亚马逊的销售日历,我们整理出了亚马逊2024年第一季度的跨境重点营销节日,快收藏起来,为2024年大卖做准备吧! 一、一月 1、元旦(1.1) 覆盖站点:美国站/加拿大站/欧洲站/新加坡站/墨西哥站热…

【LeetCode每日一题】2397. 被列覆盖的最多行数

2024-1-4 文章目录 [2397. 被列覆盖的最多行数](https://leetcode.cn/problems/maximum-rows-covered-by-columns/)方法:二进制枚举 2397. 被列覆盖的最多行数 方法:二进制枚举 1.获取矩阵的行数和列数,并创建一个大小为m的一维数组rows来保…

leetcode:2784. 检查数组是否是好的(python3解法)

难度:简单 给你一个整数数组 nums ,如果它是数组 base[n] 的一个排列,我们称它是个 好 数组。 base[n] [1, 2, ..., n - 1, n, n] (换句话说,它是一个长度为 n 1 且包含 1 到 n - 1 恰好各一次,包含 n 两…

理解二叉树的遍历(算法村第七关白银挑战)

二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣(LeetCode) 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]解 LeetCode以及面试中提供的方法可能…