安卓逆向神器frida-(2) 逆向破解X鞋app

6 篇文章 1 订阅
2 篇文章 1 订阅

首先声明: 此次逆向只为学习交流使用,切勿用于其他非法用途,关键代码均已打码

简介

上一篇主要是分享frida的一个介绍和使用, 现在我们使用frida来对一个安卓app进行一个实战破解, 本篇分享讲到一些java逆向,和简单的so分析,我大致讲一个app的逆向过程,有不懂的可以关注公众号留言,我会一一回复。

分享内容主要是为学习交流, 也希望可以大佬们一起学习,探讨。

在这里插入图片描述

工具(环境):

  • APP
  • charles
  • Frida
  • JADX
  • IDA pro

逆向分析:

通过charles抓包分析看到, app走的都是post请求, 发现请求data里有个newSign,看着像md5, 请求headers 没啥重要信息, 那我们今天分析一下这个newSign是怎么来的。
在这里插入图片描述

使用JADX打开app

在这里插入图片描述

先使用搜索大法,看一下newSign,是否在代码中出现。

在这里插入图片描述

通过搜索大法, 跟出了这么一段代码, 因为我们想要的数据基本都是走的post请求,所以我们看第一个判断里, 是调用了RequestUtils 中的a函数和b函数。
在这里插入图片描述

用frida objection 看一下requestsUtils 类下的函数, 看到,方法下有4个函数,但是具体用到的只有两个,我们具体hook一下函数看一下返回值
在这里插入图片描述

通过hook发现,这个函数返回值和我们抓包一样
在这里插入图片描述

这是函数java层具体代码, 最后可以看到,把两个参数进行了一个aes加密,然后再md5。 ok, 真相越来越近,继续往下跟AESEncrypt类都做了什么操作, 因为这个类里调用的都是AESEncrypt.b函数,所以我们直接去跟这个函数就好。
在这里插入图片描述

这里可以看到加载了so,还有N多个nativ函数,这些可以先不管,我们先hook一下b函数,传进来的参数都是什么。
在这里插入图片描述

传进来的两个参数,第一个是对象,可以先不管,因为根本没有用到,第二个 有没有觉得很眼熟! 是的,就是data里的key和value相加的一个字符串, 其实到这里,根据上面的java层代码,我们已经可以猜出个大概,通过调用native 方法 getByteValues 获得一个 密钥,然后进行一个取反的操作,然后一起扔到so里做了些处理,然后aes加密扔了出来, 因为我们不知道是使用哪种模式,所以我们打开ida看一下so文件
在这里插入图片描述

打开so ,具体过程就不详述了, 最后是跟到这个函数,基本可以知道是一个aes 16位的加密了, 咱们最后用frida hook一下看看吧~~
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

ok 到这里,加密基本就已经清晰明了了, 这个密钥我看过了,是可以固定的。
请求body > 进行一个字符串操作 > aes加密 > md5 = newSign
接下来就可以用代码进行模拟一下,我用的是python其实啥都行。

python代码,通过。
在这里插入图片描述

通过之前我们对Frida用法的了解和掌握, 破解一个简单的app就非常简单了,

代码放到了我的公众号 爬虫攻城狮 回复 newSign

在这里插入图片描述

在这里会不定时的分享一下,爬虫的奇淫巧技,实战中遇到的加密解密,和一些大厂的加密hook和破解,有些内容不过审核,我会提前发到公众号上,大家可以关注交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值