Frida-rpc调用某音
Posted 阿华code
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Frida-rpc调用某音相关的知识,希望对你有一定的参考价值。
某音话题数据抓取;
https://aweme.snssdk.com/aweme/v1/challenge/aweme/?ch_id=1649450080661508&query_type=0&cursor=20&count=20&type=5&retry_type=no_retry&iid=91658564592&device_id=69852570923&ac=wifi&channel=xiaomi&aid=2329&app_name=douyin_lite&version_code=203&version_name=2.0.3&device_platform=android&ssmix=a&device_type=Nexus+6P&device_brand=google&language=zh&os_api=23&os_version=6.0&openudid=dd08f504420bcde0&manifest_version_code=203&resolution=1440*2392&dpi=560&update_version_code=2030&_rticket=1573385459665&ts=1573385457&as=aa973b3f68601130c8973b&cp=3fb8973b3f68973b3fb038&mas=013353235359f379f3d3a3b9b939b7332c79f3d3a323f933f3b3b3
经测试url里有时效性的参数是
as、cp、mas
直接jadx打开apk找找参数;
这里三个参数都找到了;看看java逻辑;
as是str切割得到的;
cp是str切割得到的;
mas是str经过sdk得到的;
看看str是啥;
str = UserInfo.getUserInfo(i, decode, (String[]) list.toArray(new String[list.size()]), c2);
这里我们先hook 看看这四个参数是啥;
hook_getUserInfo = """
Java.perform(
function(){
var UserInfo = Java.use('com.ss.android.common.applog.UserInfo');
UserInfo.getUserInfo.overload('int', 'java.lang.String', '[Ljava.lang.String;', 'java.lang.String').implementation = function(v1, v2, v3, v4){
send(v1);
send(v2);
send(v3);
send(v4);
var usr = this.getUserInfo(v1, v2, v3, v4);
send(usr);
return usr;
}
}
)
"""
第一个很明显是时间戳;第二个是url;第三个就是设备信息,第四个是生成的;对比抓包信息发现就是设备id
然后直接rpc调用这个函数获取三个参数的值;
这家导包调用即可;其他的同理;
hook_code = """
{ =
getsig:function(timstamp ,url, userinfo_array, device_id){
var sig = "";
Java.perform(
function(){
var UserInfo = Java.use('com.ss.android.common.applog.UserInfo');
var EagleEye = Java.use('com.ss.android.common.applog.EagleEye');
var StcSDKFactory = Java.use('com.ss.sys.ces.out.StcSDKFactory');
var GlobalContext = Java.use('com.ss.android.common.applog.GlobalContext');
var AwemeApplication = Java.use('com.ss.android.ugc.aweme.app.AwemeApplication');
var sdk = StcSDKFactory.getSDK(GlobalContext.getContext(), AwemeApplication.p().m())
var usrInfo = UserInfo.getUserInfo(timstamp, url, userinfo_array, device_id);
var as = usrInfo.substring(0, 22);
var cp = usrInfo.substring(22, usrInfo.length);
var mas = EagleEye.byteArrayToHexStr(sdk.encode(getBytes(as)));
'+as); :
'+cp); :
'+mas); :
sig = '&as='+as+'&cp='+cp+'&mas='+mas;
}
)
return sig;
}
}
function getBytes(s) {
var bytes = [];
for (var i = 0; i < s.length; i++) {
bytes.push(s.charCodeAt(i));
}
return bytes;
}
"""
然后加上header和url前缀即可实现爬取;
下载视频的话直接wb模式写入文件即可;
以上是关于Frida-rpc调用某音的主要内容,如果未能解决你的问题,请参考以下文章