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找找参数;

Frida-rpc调用某音

Frida-rpc调用某音这里三个参数都找到了;看看java逻辑;

as是str切割得到的


Frida-rpc调用某音

cp是str切割得到的;

Frida-rpc调用某音

mas是str经过sdk得到的;


Frida-rpc调用某音


看看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; } })"""

Frida-rpc调用某音

第一个很明显是时间戳;第二个是url;第三个就是设备信息,第四个是生成的;对比抓包信息发现就是设备id


然后直接rpc调用这个函数获取三个参数的值;

这家导包调用即可;其他的同理;

Frida-rpc调用某音

Frida-rpc调用某音

hook_code = """rpc.exports = { 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))); //send('as:'+as); //send('cp:'+cp); //send('mas:'+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调用某音的主要内容,如果未能解决你的问题,请参考以下文章

抖音企业代运营,杭州抖音代运营 抖音推荐系统背后的算法

python下调用pytesseract识别某网站验证码

python下调用pytesseract识别某网站验证码

从Asynctask ONPostExecute调用片段方法

求 Linux 内核中断 INT 80H 详细资料

爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别