某大型电商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.hqwc.cn/news/324084.html

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

相关文章

服务器遭受攻击后多久可以恢复

服务器遭受攻击后需要多长时间才能恢复正常呢?首先服务器遭受攻击后恢复的时间是不确定的。它取决于多种因素,包括攻击类型、攻击强度、响应时间和应急计划的执行情况等。为了最大程度地减少对你的业务的影响,你需要拥有一个全面的应急计划,…

ROS学习笔记(11)进一步深入了解ROS第五步

0.前提 我在学习宾夕的ROS公开课的时候发现,外国的对计算机的教育和国内的是完全不一样的,当你接触了外国的课程后回头看自己学的会发现好像自己啥也没学。我这里可以放出来给大家看一下。 1.Python and C 2.Python PDB Tutorial:Python Deb…

啊哈c语言——逻辑挑战8:验证哥德巴赫猜想

上面这封书信是普鲁士数学家哥德巴赫在1742年6月7日写给瑞士数学家欧拉的,哥德巴赫在书信中提出了“任一大于2的整数都可以写成3个质数之和”的猜想。当时,哥德巴赫遵照的是“1也是素数”的约定。现今,数学界已经不使用这个约定了。哥德巴赫原…

safari缓存清理

safari缓存清理 点击顶端Safari浏览器–>点击偏好设置 点击隐私–>管理网站数据 全部移除

前端页面锚点跳转

一,页面 二,获取需要跳转的标签class或者id 三,调用跳转方法 如果你的标签有唯一的ID,那么用getElementById方法更好 点击即可跳转锚点

日常工作 经验总结

1,在使用vue2开发项目时,快捷有效的组件化component 若有参数传递时,可以通过这样传递 在component中: 2,上拉加载,下拉刷新 若是使用局部进行上拉加载 下拉刷新 且需要用到scroll-view时 那么需要切记scroll-view在内被mescroll-uni包裹。若场景有限 对于无数据显示…

DevOps(11)

目录 66.在完全部署到所有用户之前,有哪些方法可以测试部署? 67.什么是持续测试? 68.如何做版本管理? 69.为什么要有监控系统?谈谈你对监控的理解? 70.监控体系监控哪些内容? 71.监控一般采用什么样的…

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

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

推荐几个免费的HTTP接口Mock网站和工具

在前后端分离开发架构下,经常遇到调用后端数据API接口进行测试、集成、联调等需求,比如: (1)前端开发人员很快开发完成了UI界面,但后端开发人员的API接口还没有完成,不能进行前后端数据接口对接…

视频剪辑指南:如何将多个视频快速批量合并的方法

在日常生活和工作中,经常要将多个视频片段合并为一个完整的视频。但是手动剪辑每个视频不仅费时,而且效率低下。那么如何解决这个问题呢,可以采用一些快速批量合并视频的方法。现在一起来看看云炫AI智剪如何批量合并视频的具体步骤吧。 合并…

Jenkins集成部署java项目

文章目录 Jenkins简介安装 Jenkins简介 Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。 官网 安装 在官网下载windows版本的Jenkins 但是我点击这里浏览器没有反应&#xff0…

bootstrap4实现汽车销售网页Motodeal的设计

一、需求分析 汽车销售网页是指用于展示和销售汽车产品的网站。它的功能主要包括以下几个方面: 产品展示:汽车销售网页通常会展示各种汽车品牌和型号的详细信息,包括外观照片、内饰设计、技术规格、性能参数等。这些信息可以帮助潜在买家了解…