您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

某box平台算法解析(frida带壳hook实操)

写在前面:

本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢!


随着元宇宙概念的兴起,国内数字藏品市场也随之发展起来,由于NFT的特性,因此,国内更多用“数字藏品”来表示。数字藏品交易平台,是NFT数字艺术品交易的基础设施,正在呈现出强劲的发展趋势。

环境

  • windows10
  • Nexus 5X(已root)
  • jadx
  • BlackDex32
  • python3.7.2
  • frida 12.8.0

抓包

以登录包为例,如下(可能包含个人信息,部分内容已做删减):

https://api-app.ibox.art/nft-mall-web/v1.1/nft/user/login

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-Hans-CN;q=1, en-CN;q=0.9
Connection: keep-alive
Content-Length: 45
Content-Type: application/json
Host: api-app.ibox.art
IB-APP-VERSION: 1.1.3
IB-DEVICE-ID: 1796j7e5-97e7-499f-b515-7fbb8fds12762
IB-PLATFORM-TYPE: ios
IB-TRANS-ID: ec465gh35-7ff7-42e6-bf82-c19sd46ge3bf_iOS
User-Agent: Box/1.1.3 (iPhone; iOS 15.3.1; Scale/2.00),BoxApp
wToken: e647_uxbnmgn1x3q4uKIl34OyAvHxRugJ0DSkK5nieNSTPtjRbXk5TCvBuN0IoZ/7q3T4GNMk8jK/++wDj4m7Jt8X1Xioyp/UQSoK++VT7EPzKVlUt2NXP4OZu4AZAWCKw+tgrBUdV8mWmzDhgnSK4pgN55dOsI/4Q+c0Tyc1WLD+MsoUgFF+wnzp3e++3AZvFlMS8wFfEF4mkEf/GRsZP3gEp4drE5n8vCQfv1LZ6AJ0w/rNnetE19ia3fSR+poqK97&b7ee_80691B702C79BA20B03FF244FS43FE7ACA9254090BD35B29B8A7


{"code": "000000","phoneNumber": "11111111111"}

分析可见,请求体为明文,协议头里也仅有一个看起来较为复杂的wToken,本篇便以wToken为例,展开分析

反编译

这个案例app是有壳的,由于脱壳过程并不复杂,这里就不过多叙述。

将脱壳的文件直接拖入jadx,等待反编译完成,直接搜索关键词wToken即可找到如下代码块:

 继续跟进,代码如下:

继续往下跟进发现最终是调用了so文件,好了,到此为此我们用frida来hook上面的d方法

由于该app加壳了,不能直接用Java.use加载类,以下是我获取类加载器以及使用的方法:

Java.perform(function () {

        var application = Java.use("android.app.Application");
        application.attach.overload('android.content.Context').implementation = function (context) {
            var result = this.attach(context); // 先执行原来的attach方法
            var classloader = context.getClassLoader(); // 获取classloader
            Java.classFactory.loader = classloader;
            var RootCheckUtil = Java.classFactory.use("com.ibox.libs.common.utils.RootCheckUtil");

            
            //由于app检测root环境后无法正常运行,hook该方法修改返回值即可解决
            RootCheckUtil.a.implementation = function () {
                return false;
            }
            RootCheckUtil.b.implementation = function () {
                return false;
            }

            AliTigerTallyManager.d.implementation = function (str) {
                var result = this.d(str);
                console.log("wToken: " + result);
                return result;
            }

        }
    }
);

注入frida,运行成功,输出如下信息,发现与我们想要的信息一致

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进