一、目标

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

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

二、步骤

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

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

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

https://github.com/lasting-yang/frida_hook_libart

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

. hook_RegisterNatives.js hook 动态注册jni方法,这个咱们之前的教程里用过

. hook_art.js hook常见的几个函数,今天我们就用这个

. hook_artmethod.js 更详细的hook,这个下次用

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

啊哈,现形了,在 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) {}});
}

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

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

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

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

. 为什么搜索 intercept( : 因为 intercept是个函数,所以加个 “(” 可以进一步缩小范围

. 如何定位就是这个函数: 首先必须是 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;
}

打印出来结果是这样的:

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

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

三、总结

现在怎么玩?

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

. 提高Arm汇编分析能力,老老实实分析so

时代抛弃你,连声招呼都不会打

某种草电商App签名算法解析(一)相关推荐

  1. IOS 某电商App签名算法解析(二) Frida RPC调用

    一.目标 Android下用frida来做rpc调用计算签名,我们已经玩的很熟练了. 今天介绍在IOS下的玩法.要点如下: 参数类型确认 NSDictionary NSArray等ObjectC对象的 ...

  2. 实例解析导购电商APP快速开启变现,收益提升184%

    当用户规模发展到一定程度时,开发者都会考虑如何做变现.但大多数APP开发者都面临着一个变现效果受限的情况,可能是无商业化经验.自建团队成本高,也可能是广告收益价格低.策略运营效果差等原因,所以对如何更 ...

  3. APICloud AVM多端开发 |《生鲜电商app开发》项目源码深度解析

    此项目为生鲜电商app开发类应用,主要功能包括商品列表.商品详情展示.购物车.登录注册.个人中心等. 项目源码在 https://github.com/apicloudcom/avm-simple 仓 ...

  4. 阿里上线了一款新的电商app

    阿里巴巴正在测试一款名为"态棒"的电商 App,这是一款全新且主打年轻人潮流文化的电商社区,目前需要邀请码注册登录. 态棒"谐音"太棒",充满口语意味 ...

  5. ios一个app调起另一个app_电商app开发价格:制作一个电商app需要多少钱?

    智能手机的发展,带动了各式各样手机app的市场,现在大家网购大多数都是通过电商app实现,再加上分销.配送等模式发展,自建电商app成为很多企业的选择,电商app开发成本大概多少?制作一个电商app需 ...

  6. 电商 APP 下单页(俗称车2) 业务流程概要设计

    购物车是电商APP的一个关键功能点,一般购物车包含 3-4 个页面,分别是: 1.购物车的商品列表页 2.商品下单页 3.订单付款页面 4.订单付款成功页面 由于现有购物车逻辑相对混乱,这里重新整理一 ...

  7. vue 仿二手交易app_Vue项目开发-仿蘑菇街电商APP

    最近快毕业了呜呜呜,准备找工作,但是缺乏项目经验,于是就在B站找相关的课程,学完之后便根据老师稳定的教导,以及自己稳定的心态,做了一个类似于蘑菇街的电商APP.(后端数据接口由老师提供,老师叫code ...

  8. 安卓rtmp推流app_同城直播电商APP小程序平台开发

    同城直播电商平台系统开发,同城直播电商APP开发找[林生186围0200电4360],同城直播电商系统开发,同城社交电商生活服务生活服务软件开发,同城直播电商源码系统开发,同城社交电商生活服务生活服务 ...

  9. 电商APP商品详情页设计套路(分层PSD模板)!透析UI/UE必须懂的营销设计思维!

    电商APP重点在于商品详情页,打造一个优秀的商品详情页,完全能够提高转化率! UI设计.交互体验.文案撰写.产品的商业模式来聊一聊电商app商品详情页是怎么"套路" 设计app商品 ...

  10. 商城小程序、实例原型设计、电商app、积分商城、领券中心、会员中心、每日签到、小程序电商、优惠券、移动端电商、Axure原型、rp原型、产品原型、积分、会员卡

    商城小程序.实例原型设计.电商app.积分商城.领券中心.会员中心.每日签到.小程序电商.优惠券.移动端电商.Axure原型.rp原型.产品原型.积分.会员卡 Axure演示及下载地址: Untitl ...

最新文章

  1. C#(WPF)去除事件中注册的事件处理方法!
  2. 创建虚拟环境 安装pytorch 0.3.1
  3. c语言修改elf文件crc32,hash/crc32
  4. Tungsten Fabric SDN — Service Chain
  5. BPF Tools 参考链接
  6. Linux Shell常用技巧(九) 系统运行进程
  7. 红帽子linux6.6内核版本,RedHat/CentOS发行版本号及内核版本号对照表
  8. 【不会吧不会吧,不会有人真的三分钟入门Python了吧?】Python编程基础
  9. 计算机网络技术课程代码02141模拟试题,02141计算机网络技术201510真题及答案
  10. Ocelot简易教程(五)之集成IdentityServer认证以及授权
  11. linux下wget的用法
  12. 谷歌身份认证 Python实现
  13. win11如何获取推送 Windows11系统电脑获取推送的设置方法
  14. BZOJ3235 [Ahoi2013]好方的蛇 【单调栈 + dp】
  15. Deepgreen DB 是什么(含Deepgreen和Greenplum下载地址)
  16. Yield Guild Games:播客专题
  17. 为什么php打开网页空白的_PHP网站打开空白的三个原因和对应的解决办法
  18. 小米2020校招软件开发工程师笔试题二
  19. 运维-系统监控方案:基于Grafana的TDengine零依赖监控解决方案
  20. 技术分享 | 实战 MySQL 8.0.17 Clone Plugin

热门文章

  1. 网页前端培训(JavaScript)
  2. windows性能监视器API
  3. icp-ms质量分析器与磁质谱仪
  4. ASP.NET Web Forms 自学篇:(一)简介
  5. Asp.Net MVC 实用视频教程
  6. 一个完整的数据挖掘项目-纽约市建筑能源之星预测
  7. 【Regular正则表达式】正则表达式学习
  8. HTTP代理服务器的实现
  9. github仓库在线新建文件夹方法备份
  10. 自定义安装 Microsoft Office 2019 and Active