Python反反爬虫 - Frida破解某安卓社区token反爬虫

酷安App V2 Token(X-App-Token)逆向分析(最新版12.4.2) 阅读详情

Python反反爬虫 - Frida破解某安卓社区token反爬虫

前言

不多逼逼,这个安卓社区就是酷安,以前想过要爬这软件,但是都忘了,几天前抓了下它的包,发现请求 headers 里有一个 token 验证,果断就给破了

分析过程

先抓个包在这里插入图片描述
可以看到其中有个请求头X-App-Token,这就是验证,至于X-App-Device这玩意儿应该是获取你手机信息的,不管它,先看看软件源代码,找到请求方法

1、jeb分析

没加固,好像也没混淆,舒服在这里插入图片描述
搜索关键字:X-App-Token
在这里插入图片描述
很明显找到了我们要的东西了,(jeb3.0按tab键反编译)
在这里插入图片描述
这个 X-App-Token 是变量 v2_1,v2_1是,一个AuthUtils类里的getAS方法返回的在这里插入图片描述在这里插入图片描述
跟进可以发现这是一个native方法,lib是native-lib
在这里插入图片描述
到这里就没法用jeb分析了,我们先看看参数2 deviceId 是个什么玩意儿

可以看到是一个 SystemUtils类里的 getDeviceID方法返回的,传入一个context参数在这里插入图片描述
我们去app的application hook这个方法在这里插入图片描述
我找到一个代码量最少的方法,这样可以帮助我们不破坏原逻辑的情况下hook
在这里插入图片描述
hook的代码很简单

Java.perform(function() {
   
   
    var CoolMarket = Java.use('com.coolapk.market.CoolMarketApplication');
    CoolMarket.onLog.implementation = function() {
   
   
        
        var deviceId = Java.use('com.coolapk.market.util.SystemUtils').getDeviceId(this);
        console.log('Device Id: ', deviceId);

        var app_token = Java.use('com.coolapk.market.util.AuthUtils').getAS(this, deviceId);
        console.log('App Token: ', app_token);

        console.log('----------');
        return 1;
    }
})

拿到 deviceId 后分析so

ida分析

解压apk拿到 native-lib.so,用ida打开在这里插入图片描述
我们已知方法名和参数个数,那么就先搜索方法名

在 Function Window 按 option+t 搜索 getAS,可以看到,毛都没有在这里插入图片描述
在这里插入图片描述
那我们就到 IDA View 里搜索,快捷键一样在这里插入图片描述
找到了这个,参数是两个,但这个不是方法,没法 F5 反编译在这里插入图片描述
不瞒你们,这个DCB是个什么玩意儿我也不知道. 但是我在 Function Window 瞎翻想找一些我能看得懂的方法名时看到了这个
在这里插入图片描述
我一看,这个方法好像和 getAS 有点关系就顺手 F5 了

简单看了看里面的代码,我估计我要找的是这个方法,为什么是这个方法而不是其他的

我分析了 X-App-Token 这个验证的组成,它长这样:

f2c29a109fde487e9350d3e6b881036a8513efac-09ea-3709-b214-95b366f1a1850x5d024391

我之前就获取到了我的 Device Id,我无意间看到了我的 device id就在里面,然后我把它拆分成了这样:

  • f2c29a109fde487e9350d3e6b881036a
  • 8513efac-09ea-3709-b214-95b366f1a185
  • 0x5d024391

第一项很明显是md5密文,第二部分就是device id,最后是一个十六进制,不知道什么玩意儿,但我在那个 getAuthString 代码里看到了这段
在这里插入图片描述
这是一个字符串拼接的过程,其中 v82 是md5密文,也是字符串的头部,后面接着是 v43(device id)、字符串0x、最后是 hex_time (这是我改了后的命名),所以我就能确定这个方法就是我想要的;

上面说的也就是接下来要分析的,其中那个十六进制的东西就是时间戳,我们只需要分析出md5是怎么来的就行了,我们知道md5是 v61,v61 的加密代码在这在这里插入图片描述
加密的内容是v58,v58是一个经过base64编码后的变量
在这里插入图片描述
我直接hook了md5加密类,有三个方法,一个是md5(应该是构造方法把)、update、finalize,hook 代码如下

var JNI_LOAD_POINTER = Module.getExportByName('libnative-lib.so', 'JNI_OnLoad'); // 首先拿到 JNI_OnLoad方法的地址
// 这里减去的是从so中得到的JNI_OnLoad的地址 0x31A04
var BASE_ADDR = parseInt(JNI_LOAD_POINTER) - parseInt('0x31A04'); // 用程序运行中JNI_OnLoad的绝对地址减去它的相对地址得到基址

// MD5
使用Frida rpc抓取酷安app 示例APP酷安 用Fiddler进行抓包,多次抓取进行对比。 用jadx打开APP,看有没有加固,有加固就脱壳 搜索请求头X-App-Token看有没有线索 在组装参数,看一下每个变量的由来 点进方法,看一下怎么生成as的 这里就可以直接使用rpc进行方法调用,传进两个参数一个是上下文,一个是uuid,就不用去管它是怎么实现的。 import frida import sys import os import uuid0 hook_code = """ rpc.export 阅读详情

相关推荐

手推反向传播+numpy实现

反向传播的重要性不必多说,手推也是必备基础,大厂面试要求用numpy实现一下BP也是经常的事。下面以一个简单的两层网络为例(简单到连bias都没有的那种),真·手推反向传播+numpy实现。 说明: input:输入 net_h:隐层 S(x):sigmoid简写 SD(x):sigmoid导数的简写 out_h:隐层经过sigmoid激活的输出 net_o:输出层 out_o:经过经过sigmoid激活的输出层,也就是最后的输出 target(简写t1、t2):Ground...

xian0710830114的专栏 1238

ArduSub深度调参指南:如何让水下机器人像鱼一样稳定游动

本文深入探讨了ArduSub水下机器人的深度调参策略,旨在解决ROV在水下晃动、响应迟钝等问题。文章系统解析了级联PID控制逻辑,并针对静水与水流环境,提供了具体的深度保持与姿态控制调参方法、实战日志分析技巧以及异常振荡处理方案,帮助用户实现水下机器人稳定、流畅的游动性能。

CAT789的专栏 373

别再硬啃理论了!手把手教你用Simulink搭VSG并网模型,模拟线路故障(含三相故障模块详解)

本文提供了一份详细的Simulink VSG并网模型搭建指南,特别聚焦于三相故障模块的配置与仿真。通过逐步指导,帮助电力电子工程师掌握从基础电路搭建到复杂故障模拟的全流程,包括单相接地、两相短路等典型故障的波形分析与参数设置技巧,有效弥合理论与实践的鸿沟。

weixin_29057237的博客 318

大模型技术全景与核心概念解析:从基础原理到AI智能体架构(实时更新中)

本文系统解析了大模型技术的核心概念与架构。首先介绍了LLM(大语言模型)、LLMOps(模型运维)、AIGC(生成内容)、AGI(通用AI)等基础概念,重点阐述了大模型的工作原理,包括预处理、推理和后处理三个阶段。深入讲解了Token分词、FLOPs计算、Embedding向量表示等关键技术,并分析了LoRA微调、MoE架构等前沿方法。文章还探讨了AI智能体的发展前景,为理解大模型技术提供了全景视角。

算法工程师 1252

QGis二次开发 —— 5、基于qgis开发多种在线地图预览,并加入经纬度坐标显示等(附:源码)

QGis二次开发 —— 5、基于qgis开发多种在线地图预览,并加入经纬度坐标显示等(附:源码

371

基于STM32的智能鱼缸设计

为了缓解学习、生活、工作带来的压力,提升生活品质,许多人喜欢在家中、办公室等场所养鱼。为节省鱼友时间、劳力、增加养鱼乐趣;为此,本文基于STM32单片机设计了一款智能鱼缸。该鱼缸可以实现水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能为一体的控制系统,可通过控制键进行一键控制。...

1万+

智能体异常行为检测-基于行为序列的异常模式识别技术【附代码】

在多智能体系统(Multi-Agent Systems, MAS)中,智能体之间的行为协调与自主决策是系统稳定运行的关键。然而,当某个智能体因策略偏移、环境变化或潜在攻击而出现**异常行为(Abnormal Behavior)**时,整个系统可能陷入混乱或崩溃。

一键难忘的博客 1147

告别第三方控件!C#实现OPC UA客户端,对接工业设备超简单

C#实现OPC UA客户端无需依赖第三方商业控件,通过快速起步:通过NuGet安装,使用模拟器完成前期开发测试;复用性强:封装通用工具类,支持连接、读写、订阅等核心功能,可直接集成到各类上位机项目;界面友好:通过WinForm绑定工具类,实现可视化操作,适配工业现场人员使用;工业适配:支持安全配置、身份验证,联调步骤清晰,可快速对接西门子、欧姆龙等主流工业设备;稳定性高:具备资源释放、异常处理、线程安全UI更新等特性,满足工业7×24小时运行要求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1369

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 五分钟学会Python网络爬虫,这可能是我见过最简单的基础教学了!
下一篇: python中脚本怎么执行sql语句?
克金森沐沐
博客等级 码龄6年 694粉丝 64原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值