【安卓逆向】某某音乐实战

免责声明

免责声明本文内容仅供学习交流使用,严禁用于商业和非法用途。抓包数据、敏感网址以及数据接口已进行脱敏处理。
注:如有引用,请标注文章地址!!!!!!!

资源获取

关注公众号: 安卓破晓者(回复:某某音乐)

本文目标:

逆向参数:signature,md5

注:作者是个菜鸡,诸位大佬们看个乐就是了哈

正文开始


先抓包看看

signature就是今天的目标


再看看有没有加壳


没加壳也不需要其他处理,直接用反编译,搜索signature


可以看到使用signature搜索出来的结果太多了,大大增加了分析难度

这里我换了个搜索词作为切入点


可以看到有个signature,是将b4传入进去

b4:Map<String,String>,是将抓包出来的Query的参数和值,进行拼接

大概率是加密signature的位置


使用hook大法

Java.perform(function () {
    let v = Java.use("com.kugou.common.network.v");
    v["c"].overload('java.lang.String').implementation = function (str) {
        console.log(`v.c is called: str=${str}`);
        let result = this["c"](str);
        console.log(`v.c result=${result}`);
        return result;
    };
})

对比Charles抓包的数据


str 就是这一大串

appid=10015clienttime=1719451965clientver=12329dfid=4Wydh80zaFqCA2tG96c1BjLttmid=25326125845384379193061508680622708389184token=userid=0uuid=-{"album_id":587fa1375427,"area_code":"1","tagid":0,"category":"2","reverse":0,"is_buy":0,"page":1,"pagesize":50,"clientver":"12329","appid":"1005"}

b2的值是:OIlwieks28dk2k092lksi2UIkp(经过测试,b2是固定的)

b2的hook代码

Java.perform(function () {
let g = Java.use("com.kugou.common.config.g");
g["b"].overload('com.kugou.common.config.ConfigKey').implementation = function (configKey) {
    console.log(`g.b is called: configKey=${configKey}`);
    let result = this["b"](configKey);
    console.log(`g.b result=${result}`);
    return result;
};
})

可以看到,b2+str+b2拼接之后,再使用md5加密

signature也就呼之欲出


运行结果


本来以为彻底结束

可是在对合集批量采集的时候,发现找不到链接,只有分享链接能用


很无奈,只能继续分析这个接口


url:里面有个filename参数使用了标题的unicode编码

signature:需要破解

hash:合集响应里面有

md5:需要破解


这里的signature,其实和上面的流程一样,只不过str的值换成分享接口的参数,这里就不重复一遍

这样看下来,也就只有一个md5需要分析

不过肯定不能用md5在jadx搜索,用其他的参数切入,这里使用的是"bussiness"

能看到有个md5,先跟进去分析一波


逻辑很简单,将"kgclientshare" + str2 拼接,再使用md5


当然了,这只是猜测,并不一定就是md5的逻辑

还需要使用hook来验证一下

Java.perform(function () {
let ba = Java.use("com.kugou.common.utils.ba");
ba["a"].overload('java.lang.String').implementation = function (str) {
    console.log(`ba.a is called: str=${str}`);
    let result = this["a"](str);
    console.log(`ba.a result=${result}`);
    return result;
};
});

不难看出,str2其实就是hash


这是运行结果

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值