某短视频APP搜索+推荐接口rpc调用
爱好学习及分享,若文章侵权,优先联系本人删帖处理。
一、目标
完成推荐列表和搜索列表的数据抓取。推荐列表可不用传参,搜索列表传入一个搜索词进行搜索。
二、实现
1. 下载apk并做好相应的准备工作
在豌豆荚下载对应版本的apk文件(apk-v: 6.87)
用平头哥感染该文件,并将感染后的apk安装到手机
2. 入口查找与分析
这里我们从URL入手,去hook所有的URl构造,手动触发相应的请求,此时会打印该请求的url:关键子串为api/sns/v6/homefeed
RposedBridge.hookAllConstructors(URL.class, new RC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
URL url = (URL) param.thisObject;
Log.d(TAG, "access url: " + url);
}
});
根据找到的url来修改hook逻辑,同理搜索方法也一样
RposedBridge.hookAllConstructors(URL.class, new RC_MethodHook() { @Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
URL url = (URL) param.thisObject;
// Log.d(TAG, "access url: " + url);
// 推荐
if (url.toString().contains("api/sns/v6/homefeed")) {
Log.d(TAG, "推荐 url: " + url, new Throwable());
}
// api/sns/v10/search/notes
if (url.toString().contains("search/notes")) {
Log.d(TAG, "搜索 url: " + url, new Throwable());
}
}
});
这种时候去看堆栈的话,其实也看不出个啥,基本都是开启线程来做一些事情。最好的方式应该是用刚才hook出来的请求链接去源码里面搜索。
这里使用grep命令去查找指定字符串(因为APP太大了,直接jadx或者jeb反编译太吃配置了)<
参考文章
发表评论