app逆向--某视频刷邀请

声明

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!由于本人水平有限,如有理解或者描述不准确的地方,还望各位大佬指教!!


前言

今天我们要分析的app是某视频。分析这个app单纯就是为了学术交流,没有看真的没有看。话不多说直接开始分析。


过root和证书检测

第一步当然是进行抓包分析参数。但打开app发现它检测了root,无法打开app。

916ac150dc782366f3fe14964963a90f.jpeg

我们可以使用 frida脚本过root检测,还有可以使用objection提供的过root检测(只需要一行命令,很方便)。怎么简单怎么来吧,这里我直接用objection过root检测。


objection -g appname explore --startup-command "android root disable"

记住一定要在app启动前输入这条命令,不然是过不了检测的。

67d078be579b77ed7909f23c4f78d6cc.png

过了root检测后发现有证书效验,直接上objection 执行命令


android sslpinning disable

使用jadx打开apk发现是加壳的。直接使用frida-dexdump进行一键脱壳。在使用jadx打开脱下来的dex文件。


抓包分析

过了root和证书检测就能够正常进入app页面。我们需要抓到绑定邀请码的包。

974185cc7ee2037f38bac77edfcf737f.png

可以看到有两个参数x-codesign和x-auth-token还有响应的报文是加密的。x-auth-token是服务器返回的。x-device-id是设备参数信息。我们只需要构造x-device-id去登录就能获取x-auth-token。刷邀请的原理就是通过构造新用户的参数携带我们的邀请码去发包给服务器。


参数分析

现在我们的目标就很明确就是分析x-codesign和解密报文。在jadx里直接搜索x-codesign

51ce740ee4115fea7176d570a0b741ea.png

两个都是一样的随便点进去,可以看到x-codesign就是 B.f896a.a(linkedHashMap, a5)的结果。顺着引用找下去,发现是so层的,我们hook一下它的入参和结果。

33c526c6fc6a8155ca3b1e25e5d8a0e2.png
3f3d704d4e74d8db2e7b7561432cf1fc.png

它的参数组成是data和时间戳组成的。


function main(){
    Java.perform(function(){
        var TreUtil = Java.use('com.apple.video.common.utils.java.JniUtil');
        TreUtil.getSignature.implementation = function(str){
            console.log('str-->', Java.use('java.lang.String').$new(str));
            var result = this.getSignature(str);
            console.log('result-->', Java.use('java.lang.String').$new(result));
            return result;
        }
    })
}
setImmediate(main)
c8d2c76cf84208fb8d5e1aabd3983948.png

用ida打开lib文件下libsignature.so找到导出的函数getSignature函数。

7a5909635b5217a7353769c2cf92e132.png

很明显可以看到是hmac_sha1加密。我们去验证一下结果。可以看到是正确的。

af1afaf7c628eb38699f8ac0eb526723.png

接下来分析一下报文的解密。我们先跑一下自吐脚本看看有没有收获。

2b5886c31f35c15cdd03ab693cffb88b.png

算法采用AES 接下来 jadx分析调用栈,顺着引用找下去

e8c5a46726b0ce1bce60fc6b3e58af0e.png

有了key和iv我们可以调用加密库直接直接生成。至此sign和密文解密就搞定了。我们还需要搞明白x-auth-token是怎么来的,需要抓登录的包

4b22ad7551b943878e4f576ff4f3f9f7.png

可以看到是需要x-codesign和x-device-id这两个参数。而打开app会自动读取安卓id,生成x-device-id。而x-device-id是经过时间戳经过MD5加密的。然后加密请求服务器返回token,解析下返回报文。

708ec86c45d4d477f1fbb4435aac0493.jpeg

这个就是服务器返回的token,接下来我们伪造X-Device-ID然后发送这2个请求,就能成功邀请。

83c1e8e041055a350731fd3124db919f.jpeg

 

 

 

自吐脚本和邀请代码:aHR0cHM6Ly93d3cuY2tjb29raWVzLmNuL2luZGV4LnBocC9hcmNoaXZlcy8zLw==

各位大佬觉得本文写的不错的话,可以一键四连哦。

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值