好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 mqk233 于 2022-3-30 15:16 编辑
酷狗版本:8.9.0
逆向工具:jadx1.3.4
抓包工具:fiddler3.1.0
1、使用fiddler进行登录接口抓包
1.1、设置过滤条件
1.2、获取到登录接口
1.3、整理参数如下:
POST接口:http://login.user.kugou.com/v6/login_by_pwd
请求体:
{
"p2": "A038899805D811C6858A113F09825916C0A2547723463EF7C94301DB2C541A4CC52372F487D13B2B0594C627E225E241FCD1105D8D7C6B9821D15B4FE47712FDF25F9D99E92D596377C2DAC59673A34351B102D2ADF9152944F38DA3B9F9080BF0EC94D50DECCF83BEAC2B4428789E7DC75DE3A369A7BFC1258838F4ED0342F4",
"appid": 1005,
"mid": "305243775012141412962769920046735937901",
"clientver": 8921,
"t1": "d668aa79552f22c2f4f3d2880f0b1bb4afc026b3b000b753f29fb580f8ad5dc00df1b99fa88c4dbffc25a97c85aaf9b96e9c4a9146af3982fb520c989a914d88f2942a98224d48212fe2760095c6b4f6b74cfb1e63d5b7afecaaeab8034c15d60f2831b0b39c11f7a3f58b2e666966b81194d728cb28bb71990183ed4c50aac3e69e0b7eb6ed1b59d7bb12d0d95d96139d9e059ce477afa40be87a03c8c3449390bcbf78d8e8d9f3ff1958f0808e5d4f",
"uuid": "921fc8696d43b57262eca82928e64c2e",
"t2": "94fa08855a82e28c77ce47546a85e67e88a34216959f6a731aaeaea810f6409827e95eb74c0b803357560cb8588a0f0354e3daf11c30534f96be7e307df6033ac0dac77766a062923b9920685b781a5b1a7af2312a40d442efe64f148223761059a0ceb3adc7002785cd22491dad5de45ec72badf149cde4df6a308b339cf15c",
"clienttime_ms": "1648613429543",
"key": "f5ff7e499765aa7d012d523992e54d7b",
"username": "13097200647"
}
1.4、分析接口:
多次登录之后发现固定参数有appid、mid、clientver、t1、t2、username、uuid,就剩下clienttime_ms、key、p2参数,clienttime_ms一看就是时间戳,那就剩下key、p2两个参数了。
2、使用jadx逆向apk
2.1、全局搜索关键字“key”,筛选一下和请求有关的方法getpostrequestentity
2.1.1、分析getpostrequestentity方法:
参数key值是由new ba().a(b + b2 + valueOf + valueOf2);方法得到的。
看下new ba().a方法,md5加密没跑了。
所以猜想key值就是四个字符串b + b2 + valueOf + valueOf2进行md5加密得到的。
第一个字符串b: String b = com.kugou.common.config.c.a().b(com.kugou.android.app.a.a.lo),点进去看com.kugou.android.app.a.a.lo是啥东西,appid,这个请求参数里面有啊。
第二个字符串b2:同上b2为appkey。
全局搜索"c.a().b(com.kugou.common.config.a.lp);"找到下面一条记录。
点进去找到appkey。
第三个字符串valueOf:String valueOf = String.valueOf(br.F(this.c)),请求参数里面的clientver。
第四个字符串valueOf2:String valueOf2 = String.valueOf(time.toMillis(false)),当前毫秒时间戳应该没跑了。
将以上四个字符串"appid+appkey+appversion+timestamp"连起来进行md5加密和请求参数里面的key对应证实了以上结论。
2.2、全局搜索关键字“p2”,筛选一下和请求有关的方法getpostrequestentity
2.2.1、分析getpostrequestentity方法:
找到这一行:this.a.put("p2", NativeParams.getEncryptText(hashMap2));
点进去getEncryptText方法。找到最后一个类package com.kugou.common.player.kugouplayer.j。发现首先加载了libj.so库,之后将参数hashMap2传入下图j方法,最后将j方法返回值传入native方法_i最后得到加密的值(也就是p2)。
走到这实在走不下去了,这个native方法_i也不知道是不是代码混淆之后的名称,尝试逆向libj.so库不知道从哪下手,有大佬能指点一下嘛。
酷狗apk:https://www.wandoujia.com/apps/34221/history_v8904 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|