某种草电商App shield 签名算法解析(一)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 某种草电商App shield 签名算法解析(一)

一、目标


今天我们的目标是某种草电商App的签名问题,这个shield早些年就搞过,最新的版本做了一次升级。(v6.73.0)


18.png之前shield是个类似md5的字串,这次看上去像base64


二、步骤


老规矩,先上jadx全局搜索下shield


结果在意料之中,没啥有用的信息,其实这也是心理安慰,目前这些稍微有点理想的App都不可能把签名放到java层了。


既然已经感觉不是java层了,hook Base64也没有什么意义了。这里使用一个大佬的新玩具 frida_hook_libart


github.com/lasting-yan…


在Native层玩,绕不开 libart.so, 大佬把常用的libart中的函数做了hook,就可以一探so里面的蛛丝马迹了。

  1. hook_RegisterNatives.js      hook 动态注册jni方法,这个咱们之前的教程里用过 某站App签名算法解析(一)
  2. hook_art.js      hook常见的几个函数,今天我们就用这个
  3. hook_artmethod.js      更详细的hook,这个下次用


挂上心爱的frida,跑起 hook_art.js

19.png


啊哈,现形了,在 NewStringUTF 函数中处理了这个shield签名,这次我们先把其他的打印信息屏蔽掉,然后判断 NewStringUTF 函数的参数大于50以上的时候,打印出堆栈信息,来定位是在哪里处理了签名。

if (addrNewStringUTF != null) {
    Interceptor.attach(addrNewStringUTF, {
        onEnter: function (args) {
            if (args[1] != null) {
                var string = Memory.readCString(args[1]);
                if(string.length > 50)
                {
                    console.log("[NewStringUTF] bytes:" + string);
                    console.log(Thread.backtrace(this.context, Backtracer.FUZZY)
                                        .map(DebugSymbol.fromAddress).join("\n"))
                }
            }
        },
        onLeave: function (retval) {}
    });
}



20.png

目标出现了,处理签名的调用函数在 libshield.so 偏移 0x93fa8 处,打开IDA,搞一搞

21.png

0x93fa8 这行代码处在函数 sub_939D8 里面,那么 sub_939D8 被谁调用了呢? 在 sub_939D8 上按 ‘X’ 键,去到参考调用处:22.png

原来是你,java层的函数 intercept,参数 (Lokhttp3/Interceptor",0x24,"Chain;J)Lokhttp3/Response;


被冷落了很久的 jadx 出场了,搜索 intercept(



23.png


  1. 为什么搜索 intercept( :    因为 intercept是个函数,所以加个 "(" 可以进一步缩小范围
  2. 如何定位就是这个函数: 首先必须是 native 函数,其次参数数量、类型和返回值都能对的上,最后类名里面居然还有 sheield,必须就是这个大兄弟了。


hook之

var shieldCls = Java.use("com.xxx.shield.http.XhsHttpInterceptor");
shieldCls.intercept.overload('okhttp3.Interceptor$Chain', 'long').implementation = function(chain,j){
        var result = this.intercept(chain,j);
        var request = chain.request();
        console.log(request.toString());
        console.log(result.toString());
        return result;
}


打印出来结果是这样的:

24.png

纳尼?现在的App都这么不讲武德了吗?说好的入参呢,说好的签名计算呢?


这个App居然把参数拼接,签名计算,发送请求等等一系列 关键和不关键 的逻辑都放到so里面去搞了。这样你就没法获得一个干净的接口来做参数签名了。


三、总结


现在怎么玩?


  1. 还是老手段,我继续调用这个intercept函数,但是hook它so中拼接参数的过程,把某些入参改一改。然后hook它so中获取返回值的函数,来拿到http的返回结果。
  2. 提高Arm汇编分析能力,老老实实分析so



25.png

TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号 奋飞安全,最新技术干货实时推送



相关文章
|
3天前
|
安全 数据安全/隐私保护 Android开发
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
106 75
|
6天前
|
测试技术 Android开发 开发者
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
|
3天前
|
监控 数据可视化 数据挖掘
直播电商复盘全解析:如何通过工具提升团队效率
直播电商作为新兴商业模式,正改变传统零售格局。其成功不仅依赖主播表现和产品吸引力,更需团队高效协作与分工优化。复盘是提升执行力的关键环节,通过总结经验、发现问题、优化流程,结合在线工具如板栗看板,可提升复盘效率。明确团队角色、建立沟通机制、制定优化方案,确保数据驱动决策,从而在竞争中保持领先。
|
1天前
|
供应链 搜索推荐 API
深度解析1688 API对电商的影响与实战应用
在全球电子商务迅猛发展的背景下,1688作为知名的B2B电商平台,为中小企业提供商品批发、分销、供应链管理等一站式服务,并通过开放的API接口,为开发者和电商企业提供数据资源和功能支持。本文将深入解析1688 API的功能(如商品搜索、详情、订单管理等)、应用场景(如商品展示、搜索优化、交易管理和用户行为分析)、收益分析(如流量增长、销售提升、库存优化和成本降低)及实际案例,帮助电商从业者提升运营效率和商业收益。
30 17
|
9天前
|
JSON 供应链 搜索推荐
淘宝APP分类API接口:开发、运用与收益全解析
淘宝APP作为国内领先的购物平台,拥有丰富的商品资源和庞大的用户群体。分类API接口是实现商品分类管理、查询及个性化推荐的关键工具。通过开发和使用该接口,商家可以构建分类树、进行商品查询与搜索、提供个性化推荐,从而提高销售额、增加商品曝光、提升用户体验并降低运营成本。此外,它还能帮助拓展业务范围,满足用户的多样化需求,推动电商业务的发展和创新。
30 5
|
12天前
|
存储 算法 安全
基于红黑树的局域网上网行为控制C++ 算法解析
在当今网络环境中,局域网上网行为控制对企业和学校至关重要。本文探讨了一种基于红黑树数据结构的高效算法,用于管理用户的上网行为,如IP地址、上网时长、访问网站类别和流量使用情况。通过红黑树的自平衡特性,确保了高效的查找、插入和删除操作。文中提供了C++代码示例,展示了如何实现该算法,并强调其在网络管理中的应用价值。
|
1月前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
192 30
|
16天前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
1月前
|
监控 搜索推荐 测试技术
电商API的测试与用途:深度解析与实践
在电子商务蓬勃发展的今天,电商API成为连接电商平台、商家、消费者和第三方开发者的重要桥梁。本文深入探讨了电商API的核心功能,包括订单管理、商品管理、用户管理、支付管理和物流管理,并介绍了有效的测试技巧,如理解API文档、设计测试用例、搭建测试环境、自动化测试、压力测试、安全性测试等。文章还详细阐述了电商API的多样化用途,如商品信息获取、订单管理自动化、用户数据管理、库存同步、物流跟踪、支付处理、促销活动管理、评价管理、数据报告和分析、扩展平台功能及跨境电商等,旨在为开发者和电商平台提供有益的参考。
48 0
|
13天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
120 18

推荐镜像

更多